Download OpenAPI specification:
This API uses FeathersJS query syntax for filtering, sorting, and pagination. All find operations support these parameters.
$limit - Maximum number of records to return (default: 10, max: 50)$skip - Number of records to skip for pagination$sort[field] - Sort by field. Use 1 for ascending, -1 for descending?$sort[createdAt]=-1$select[] - Select specific fields to include in response?$select[]=_id&$select[]=namefield[$in][] - Match any value in array?status[$in][]=active&status[$in][]=pendingfield[$nin][] - Match values not in arrayfield[$lt] - Less thanfield[$lte] - Less than or equalfield[$gt] - Greater thanfield[$gte] - Greater than or equalfield[$ne] - Not equal$or - Match any condition in array?$or[0][status]=active&$or[1][priority]=highFor complete documentation, see FeathersJS Querying
All endpoints (except /authentication and /authManagement) require authentication using a Bearer token.
Include the token in the Authorization header:
Authorization: Bearer YOUR_ACCESS_TOKEN
All records include these standard fields: createdBy, createdAt, updatedBy, updatedAt. See the CommonFields schema for details.
Activity logs track user activity in the system. When a user performs an action, an activity log entry is created automatically. The service also updates the lastActivity field in the users collection.
Note: Only the create method is publicly available. Find, get, update, patch, and remove operations are disabled for security reasons.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details on $limit, $skip, $sort, $select, and other query operators.
Create a new activity log entry. The request body can be empty - the service automatically populates userId, connectionOrigin, and orgunits from the authenticated user context and request headers.
After creating the activity log, the service automatically updates the lastActivity timestamp in the users collection.
Empty object or additional metadata (all fields are auto-populated by the server)
{ }{- "_id": "string",
- "userId": "string",
- "connectionOrigin": "string",
- "orgunits": [
- "string"
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Attachment details service for storing metadata and text extraction from PDF attachments. [Internal/Lambda only] This service is triggered by AWS Lambda for processing uploaded attachments, not for direct file uploads.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve attachment details. [Internal only]
| storageId | string Filter by storage ID |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create attachment details with extracted text from PDF. [Lambda trigger only] Used by AWS Lambda to store processed attachment metadata and searchable text content
| storageId required | string S3 storage identifier for the attachment |
| fileName | string Original file name |
| fileType | string MIME type of the attachment (e.g., "application/pdf") |
| textContent | string Extracted text content from PDF for search indexing |
| pageCount | integer Number of pages in PDF document |
| fileSize | integer File size in bytes |
| processingStatus | string Enum: "pending" "processing" "completed" "failed" Status of text extraction processing |
{- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending"
}{- "_id": "string",
- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single attachment detail by ID. [Internal only]
| _id required | string ID of attachmentdetails to return |
{- "_id": "string",
- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates the resource identified by id using data.
| _id required | string ID of attachmentdetails to update |
| storageId required | string S3 storage identifier for the attachment |
| fileName | string Original file name |
| fileType | string MIME type of the attachment (e.g., "application/pdf") |
| textContent | string Extracted text content from PDF for search indexing |
| pageCount | integer Number of pages in PDF document |
| fileSize | integer File size in bytes |
| processingStatus | string Enum: "pending" "processing" "completed" "failed" Status of text extraction processing |
{- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending"
}{- "_id": "string",
- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates the resource identified by id using data.
| _id required | string ID of attachmentdetails to update |
| storageId required | string S3 storage identifier for the attachment |
| fileName | string Original file name |
| fileType | string MIME type of the attachment (e.g., "application/pdf") |
| textContent | string Extracted text content from PDF for search indexing |
| pageCount | integer Number of pages in PDF document |
| fileSize | integer File size in bytes |
| processingStatus | string Enum: "pending" "processing" "completed" "failed" Status of text extraction processing |
{- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending"
}{- "_id": "string",
- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Removes the resource with id.
| _id required | string ID of attachmentdetails to remove |
{- "_id": "string",
- "storageId": "string",
- "fileName": "string",
- "fileType": "string",
- "textContent": "string",
- "pageCount": 0,
- "fileSize": 0,
- "processingStatus": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Audit trail service for logging and tracking changes and actions in the system. Automatically records create, update, patch, and delete operations. [Primarily internal] Managed by hooks, but accessible for audit reporting.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve audit trail entries with filtering. [Admin only] Useful for compliance and security auditing
| userId | string <objectId> Filter by user ID who performed the action |
| objectId | string Filter by object ID that was modified |
| objectType | string Enum: "configs" "contents" "flowtemplates" "groups" "orgattributes" "orgchart" "pages" "tasks" "tasktemplates" "users" "widgets" "contentpools" "contentpooltypes" "folders" Filter by object type |
| changeType | string Enum: "Create" "Update" "Patch" "Remove" Filter by change type |
| createdAt[$gte] | string <date-time> Filter from specific date |
| updatedAt[$gte] | string <date-time> Filter from specific date |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "userId": "60c72b2f9b1d8c001c8e4f3a",
- "objectId": "60c72b2f9b1d8c001c8e4f3b",
- "objectType": "contents",
- "changeType": "patch",
- "changeData": "[{\"kind\":\"E\",\"path\":[\"message\"],\"lhs\":\"{\"en\":\"<p>Test 123</p>\"}\",\"rhs\":\"{\"en\":\"<p>Test 123456</p>\"}\"}]",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create audit trail entry. [Internal only - managed by hooks] Do not use directly
| userId required | string <objectId> User who performed the action |
| objectId required | string ID of the modified object (content, task, user, etc.) |
| objectType required | string Type of object modified (collection name) |
| changeType required | string Enum: "create" "update" "patch" "remove" Type of change operation performed |
| changeData | string JSON string of change details (before/after states using deep-diff format) |
{- "userId": "60c72b2f9b1d8c001c8e4f3a",
- "objectId": "60c72b2f9b1d8c001c8e4f3b",
- "objectType": "contents",
- "changeType": "patch",
- "changeData": "[{\"kind\":\"E\",\"path\":[\"message\"],\"lhs\":\"{\"en\":\"<p>Test 123</p>\"}\",\"rhs\":\"{\"en\":\"<p>Test 123456</p>\"}\"}]"
}{- "_id": "string",
- "userId": "60c72b2f9b1d8c001c8e4f3a",
- "objectId": "60c72b2f9b1d8c001c8e4f3b",
- "objectType": "contents",
- "changeType": "patch",
- "changeData": "[{\"kind\":\"E\",\"path\":[\"message\"],\"lhs\":\"{\"en\":\"<p>Test 123</p>\"}\",\"rhs\":\"{\"en\":\"<p>Test 123456</p>\"}\"}]",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a specific audit trail entry by ID. [Admin only]
| id required | string ID of audittrail to return |
{- "_id": "string",
- "userId": "60c72b2f9b1d8c001c8e4f3a",
- "objectId": "60c72b2f9b1d8c001c8e4f3b",
- "objectType": "contents",
- "changeType": "patch",
- "changeData": "[{\"kind\":\"E\",\"path\":[\"message\"],\"lhs\":\"{\"en\":\"<p>Test 123</p>\"}\",\"rhs\":\"{\"en\":\"<p>Test 123456</p>\"}\"}]",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Removes the resource with id.
| id required | string ID of audittrail to remove |
{- "_id": "string",
- "userId": "60c72b2f9b1d8c001c8e4f3a",
- "objectId": "60c72b2f9b1d8c001c8e4f3b",
- "objectType": "contents",
- "changeType": "patch",
- "changeData": "[{\"kind\":\"E\",\"path\":[\"message\"],\"lhs\":\"{\"en\":\"<p>Test 123</p>\"}\",\"rhs\":\"{\"en\":\"<p>Test 123456</p>\"}\"}]",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Authentication management service for user account operations including email verification, password reset, and account validation.
Note: This service does not require authentication for most operations (password reset, email verification).
Perform various authentication management actions:
checkUnique: Verify if username/email is available
{"action": "checkUnique", "value": {"loginName": "user@example.com"}}
resendVerifySignup: Resend email verification link
{"action": "resendVerifySignup", "value": {"loginName": "user@example.com"}}
sendResetPwd: Request password reset (sends email with token)
{"action": "sendResetPwd", "value": {"loginName": "user@example.com"}}
magicLink: Request passwordless email sign-in link
{"action": "magicLink", "value": {"loginName": "user@example.com"}}
resetPwdLong: Complete password reset with token from email
{"action": "resetPwdLong", "value": {"token": "[TOKEN_FROM_EMAIL]", "password": "[NEW_PASSWORD]"}}
passwordChange: Change password (requires authentication)
{"action": "passwordChange", "value": {"user": {"loginName": "user@example.com"}, "oldPassword": "[CURRENT]", "password": "[NEW]"}}
| action required | string Enum: "checkUnique" "resendVerifySignup" "sendResetPwd" "magicLink" "resetPwdLong" "passwordChange" Action to perform - see operation description for details |
required | object or object or object or object Action-specific parameters - structure varies by action type |
{- "action": "checkUnique",
- "value": {
- "loginName": "user@example.com"
}
}{- "value": "Success"
}Authenticate user to chat service, just send empty object since we only need jwt token
{ }{ }Authentication service for user login and session management. Supports multiple authentication strategies including local (email/password), JWT token verification, and OAuth providers.
Note: The create endpoint does not require authentication. All other endpoints require a valid Bearer token.
Authenticate a user and receive an access token. Supports multiple strategies:
local: Email and password authenticationjwt: Verify existing JWT tokenmagicLink: Email-based passwordless login| strategy required | string Default: "local" Enum: "local" "jwt" "regeneratejwt" "magicLink" "cognito" "okta" "azure" Authentication strategy to use |
| loginName | string <email> User email address (required for local strategy) |
| password | string <password> User password (required for local strategy) |
| accessToken | string JWT token to verify (required for jwt/regeneratejwt strategies) |
| link | string 30-character magic link token (required for magicLink strategy) |
{- "strategy": "local",
- "loginName": "user@example.com",
- "password": "password123"
}{- "accessToken": "string",
- "authentication": {
- "strategy": "string",
- "payload": { }
}, - "user": { },
- "chatSignature": "string",
- "chatUserId": "string",
- "pluginJWT": "string"
}Logout endpoint - invalidates the current session. Note: JWTs cannot be truly revoked, but this endpoint provides a standard logout mechanism. The same token used in the Authorization header must be provided as the ID parameter
| id required | string Token to invalidate (must match the Bearer token in Authorization header) |
{- "accessToken": "string"
}Automatic flow management service for creating workflows that automatically generate content and tasks based on templates. Flows define sequences of template-based operations triggered by events or schedules.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all automatic flows with optional name filtering
| name[$regex] | string Search flow name (partial match) |
| name | string Filter by exact name |
| active | boolean Filter by active status |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new automatic flow with template sequence. [Admin only]
| name required | string Flow name (single language, no translations) |
| description | string Flow description explaining its purpose |
| active | boolean Default: true Whether flow is currently active and will execute |
| orderOfTemplates | Array of strings <objectId> [ items <objectId > ] Template IDs in execution order (update on every change for proper sequencing) |
object Flow trigger configuration (event-based, scheduled, manual) |
{- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}
}{- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single automatic flow by ID
| _id required | string ID of automaticflows to return |
{- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire flow configuration. [Admin only]
| _id required | string ID of automaticflows to update |
| name required | string Flow name (single language, no translations) |
| description | string Flow description explaining its purpose |
| active | boolean Default: true Whether flow is currently active and will execute |
| orderOfTemplates | Array of strings <objectId> [ items <objectId > ] Template IDs in execution order (update on every change for proper sequencing) |
object Flow trigger configuration (event-based, scheduled, manual) |
{- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}
}{- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields of a flow. [Admin only]
| _id required | string ID of automaticflows to update |
| name required | string Flow name (single language, no translations) |
| description | string Flow description explaining its purpose |
| active | boolean Default: true Whether flow is currently active and will execute |
| orderOfTemplates | Array of strings <objectId> [ items <objectId > ] Template IDs in execution order (update on every change for proper sequencing) |
object Flow trigger configuration (event-based, scheduled, manual) |
{- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}
}{- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete an automatic flow. Does not affect already created content/tasks. [Admin only]
| _id required | string ID of automaticflows to remove |
{- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "orderOfTemplates": [
- "string"
], - "trigger": {
- "type": "event",
- "eventType": "string",
- "schedule": "string"
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Execute trigger
| type | string Type of trigger, allowed values are [pdfConvertedToTxt,videoResized] |
| value | string value from trigger, point to new content. For pdfConvertedToTxt it is location of TXT file that will later be deleted, for videoResized it points to new converted video (original one from processing will be deleted) |
| poster | Array of strings = 2 items Array of two poster image URLs |
| ref | string Reference to original content. For pdfConvertedToTxt it points to original PDF in processing folder, for videoResized it points to original video in processing folder |
{- "type": "string",
- "value": "string",
- "poster": [
- "string",
- "string"
], - "ref": "string"
}{- "type": "string",
- "value": "string",
- "poster": [
- "string",
- "string"
], - "ref": "string"
}Badge management service for gamification. Badges are achievements users can earn through various activities and milestones.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all badges in the system
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (badges) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new badge with criteria. [Admin only]
| name required | object Multi-language badge name (e.g., {"en": "First Post", "nl": "Eerste Bericht"}) |
| description | object Multi-language badge description |
| image | string S3 path to badge image/icon |
| criteria | object Criteria for earning this badge (e.g., points threshold, activity count) |
| points | integer >= 0 Points awarded when earning this badge |
| order | integer Display order for badge listing |
{- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0
}{- "_id": "string",
- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single badge by ID
| _id required | string ID of badges to return |
{- "_id": "string",
- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire badge configuration. [Admin only]
| _id required | string ID of badges to update |
| name required | object Multi-language badge name (e.g., {"en": "First Post", "nl": "Eerste Bericht"}) |
| description | object Multi-language badge description |
| image | string S3 path to badge image/icon |
| criteria | object Criteria for earning this badge (e.g., points threshold, activity count) |
| points | integer >= 0 Points awarded when earning this badge |
| order | integer Display order for badge listing |
{- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0
}{- "_id": "string",
- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update badge properties. [Admin only]
| _id required | string ID of badges to update |
| name required | object Multi-language badge name (e.g., {"en": "First Post", "nl": "Eerste Bericht"}) |
| description | object Multi-language badge description |
| image | string S3 path to badge image/icon |
| criteria | object Criteria for earning this badge (e.g., points threshold, activity count) |
| points | integer >= 0 Points awarded when earning this badge |
| order | integer Display order for badge listing |
{- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0
}{- "_id": "string",
- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a badge. Users who earned this badge will lose it. [Admin only]
| _id required | string ID of badges to remove |
{- "_id": "string",
- "name": { },
- "description": { },
- "image": "string",
- "criteria": { },
- "points": 0,
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Puts valid token on blacklist
| token | string Token that needs to be blacklisted |
{- "token": "string"
}{- "token": "string"
}Please use appropriate action and provide value and ref if needed.
[removeFromGroup]
* value - List of users IDs that should be removed from the group.
* ref - Reference to the group on whick we need to remove user, this is TalkJS ID.
[setNewGroupAdmin]
* value - User ID of new group admin.
* ref - Reference to the group on which we need to change group admin, this is TalkJS ID.
[authenticate]
* No data needed, just provide valid JWT token
| action | string Type of action to be taken on object, allowed values are authenticate,removeFromGroup |
| value | string value for action, optional. |
| ref | string Reference to e.g. chat group |
{- "action": "string",
- "value": "string",
- "ref": "string"
}{- "action": "string",
- "value": "string",
- "ref": "string"
}Retrieves a list of all resources from the service.
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (chatgroups) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": {
- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}
]
}
}Make new chat group, only name, type=external and users are mandatory filed
| name required | string Name of the group, non translatable |
| type required | string Type of group, options are external and auto, Use external unless you are sure |
| users required | Array of strings Array of users that belong to the group |
| createdBy | string Field populated by system, reference to user who created group |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated group |
| updatedAt | string Field populated by system, timestamp of last update |
{- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}{- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Retrieves a single resource with the given id from the service.
| _id required | string ID of chatgroups to return |
{- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Updates the resource identified by id using data.
| _id required | string ID of chatgroups to update |
| name required | string Name of the group, non translatable |
| type required | string Type of group, options are external and auto, Use external unless you are sure |
| users required | Array of strings Array of users that belong to the group |
| createdBy | string Field populated by system, reference to user who created group |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated group |
| updatedAt | string Field populated by system, timestamp of last update |
{- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}{- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Updates the resource identified by id using data.
| _id required | string ID of chatgroups to update |
| name required | string Name of the group, non translatable |
| type required | string Type of group, options are external and auto, Use external unless you are sure |
| users required | Array of strings Array of users that belong to the group |
| createdBy | string Field populated by system, reference to user who created group |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated group |
| updatedAt | string Field populated by system, timestamp of last update |
{- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}{- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Removes the resource with id.
| _id required | string ID of chatgroups to remove |
{- "name": "string",
- "type": "string",
- "users": [
- "string"
], - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Comment management service for content, form values, and nested comments. Supports up to 2 levels of nesting (comment on content, reply to comment).
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve comments for a specific content or parent comment. Returns all comment levels in a flat structure
| refId | string <objectId> Filter by content ID or parent comment ID |
| createdBy | string Filter by comment creator user ID |
| type | string Enum: "onContent" "onCommentOnContent" "onFormvalue" "onCommentOnFormvalue" Filter by comment type |
| lang | string Language code for comment text |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "originLanguage": "string",
- "text": "string",
- "refId": "string",
- "type": "onContent",
- "images": [
- "string"
], - "level": 1,
- "edited": true,
- "mentions": [
- "string"
], - "social": {
- "reactionCount": 0,
- "replyCount": 0,
- "replies": [
- { }
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new comment on content, form value, or another comment (reply). Maximum 2 nesting levels allowed
| lang required | string Language code for the comment |
| originLanguage | string Language in which comment was created |
| text required | string Comment text content |
| refId required | string <objectId> Reference to content, form value, or parent comment |
| images | Array of strings Attached image paths |
| mentions | Array of strings <objectId> [ items <objectId > ] User IDs mentioned in the comment using @ syntax |
{- "originLanguage": "string",
- "text": "string",
- "refId": "string",
- "images": [
- "string"
], - "mentions": [
- "string"
]
}{- "_id": "string",
- "originLanguage": "string",
- "text": "string",
- "refId": "string",
- "type": "onContent",
- "images": [
- "string"
], - "level": 1,
- "edited": true,
- "mentions": [
- "string"
], - "social": {
- "reactionCount": 0,
- "replyCount": 0,
- "replies": [
- { }
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update a comment. Only the creator or admins can edit comments
| id required | string ID of comments to update |
| text | string Updated comment text |
| images | Array of strings Updated image attachments |
{- "text": "string",
- "images": [
- "string"
]
}{- "_id": "string",
- "originLanguage": "string",
- "text": "string",
- "refId": "string",
- "type": "onContent",
- "images": [
- "string"
], - "level": 1,
- "edited": true,
- "mentions": [
- "string"
], - "social": {
- "reactionCount": 0,
- "replyCount": 0,
- "replies": [
- { }
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a comment. Only the creator or admins can delete comments. Also removes all child comments
| id required | string ID of comments to remove |
{- "_id": "string",
- "originLanguage": "string",
- "text": "string",
- "refId": "string",
- "type": "onContent",
- "images": [
- "string"
], - "level": 1,
- "edited": true,
- "mentions": [
- "string"
], - "social": {
- "reactionCount": 0,
- "replyCount": 0,
- "replies": [
- { }
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Client configuration service for managing tenant-specific settings and environment configurations. Stores configuration data per subdomain and environment.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve client configuration by type and subdomain
| configType required | string Enum: "app" "theme" "features" "integrations" "notifications" Configuration type (required) |
| subdomain | string Subdomain to filter configuration |
| environment | string Enum: "production" "staging" "development" Environment filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create new client configuration. [Admin only]
| configType required | string Enum: "app" "theme" "features" "integrations" "notifications" Type of configuration |
| subdomain | string Subdomain this configuration applies to (for multi-tenant setups) |
| environment | string Enum: "production" "staging" "development" Environment this configuration applies to |
| data | object Configuration data (structure varies by configType) |
| active | boolean Default: true Whether this configuration is currently active |
{- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true
}{- "_id": "string",
- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve specific configuration by ID
| _id required | string ID of configs to return |
{- "_id": "string",
- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire configuration. [Admin only]
| _id required | string ID of configs to update |
| configType required | string Enum: "app" "theme" "features" "integrations" "notifications" Type of configuration |
| subdomain | string Subdomain this configuration applies to (for multi-tenant setups) |
| environment | string Enum: "production" "staging" "development" Environment this configuration applies to |
| data | object Configuration data (structure varies by configType) |
| active | boolean Default: true Whether this configuration is currently active |
{- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true
}{- "_id": "string",
- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific configuration fields. [Admin only]
| _id required | string ID of configs to update |
| configType required | string Enum: "app" "theme" "features" "integrations" "notifications" Type of configuration |
| subdomain | string Subdomain this configuration applies to (for multi-tenant setups) |
| environment | string Enum: "production" "staging" "development" Environment this configuration applies to |
| data | object Configuration data (structure varies by configType) |
| active | boolean Default: true Whether this configuration is currently active |
{- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true
}{- "_id": "string",
- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a configuration. [Admin only]
| _id required | string ID of configs to remove |
{- "_id": "string",
- "configType": "app",
- "subdomain": "string",
- "environment": "production",
- "data": { },
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Content pool management service. Content pools are containers for organizing content with specific access rights, configurations, and organizational restrictions.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all content pools. Supports name search across different languages
| name.en[$search] | string Search content pool name by prefix in specific language (e.g., |
| contentPoolType | string Filter by content pool type reference |
| lang | string Language code for content pool name translation |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { },
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new content pool with access rights and default configurations
| name required | object Multi-language content pool name. Must include at least origin language (e.g., {"en": "News Pool", "nl": "Nieuws Pool"}) |
| originLanguage required | string Language code for the original content pool name |
| contentPoolType | string <objectId> Reference to content pool type for categorization |
| createRights required | Array of strings <objectId> [ items <objectId > ] Group IDs that have permission to create content in this pool |
| limitToOrgtype | string <objectId> Restrict content in this pool to specific organization unit type |
| requireApproval | boolean If true, content requires approval before publishing |
| approvers | Array of strings <objectId> [ items <objectId > ] User IDs who can approve content in this pool |
| rightsConfiguration | object Default rights settings for new content (can disable certain rights features) |
| optionsConfiguration | object Default options settings for new content (can disable certain option features) |
| translationConfiguration | object Translation settings (can disable translation features, specify requestor groups) |
{- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { }
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { },
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single content pool by ID
| lang | string Language code for content pool name translation |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { },
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire content pool configuration
| _id required | string ID of contentpools to update |
| name required | object Multi-language content pool name. Must include at least origin language (e.g., {"en": "News Pool", "nl": "Nieuws Pool"}) |
| originLanguage required | string Language code for the original content pool name |
| contentPoolType | string <objectId> Reference to content pool type for categorization |
| createRights required | Array of strings <objectId> [ items <objectId > ] Group IDs that have permission to create content in this pool |
| limitToOrgtype | string <objectId> Restrict content in this pool to specific organization unit type |
| requireApproval | boolean If true, content requires approval before publishing |
| approvers | Array of strings <objectId> [ items <objectId > ] User IDs who can approve content in this pool |
| rightsConfiguration | object Default rights settings for new content (can disable certain rights features) |
| optionsConfiguration | object Default options settings for new content (can disable certain option features) |
| translationConfiguration | object Translation settings (can disable translation features, specify requestor groups) |
{- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { }
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { },
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update content pool configuration
| _id required | string ID of contentpools to update |
| name required | object Multi-language content pool name. Must include at least origin language (e.g., {"en": "News Pool", "nl": "Nieuws Pool"}) |
| originLanguage required | string Language code for the original content pool name |
| contentPoolType | string <objectId> Reference to content pool type for categorization |
| createRights required | Array of strings <objectId> [ items <objectId > ] Group IDs that have permission to create content in this pool |
| limitToOrgtype | string <objectId> Restrict content in this pool to specific organization unit type |
| requireApproval | boolean If true, content requires approval before publishing |
| approvers | Array of strings <objectId> [ items <objectId > ] User IDs who can approve content in this pool |
| rightsConfiguration | object Default rights settings for new content (can disable certain rights features) |
| optionsConfiguration | object Default options settings for new content (can disable certain option features) |
| translationConfiguration | object Translation settings (can disable translation features, specify requestor groups) |
{- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { }
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { },
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a content pool. Warning: This will affect all content in this pool
| _id required | string ID of contentpools to remove |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "contentPoolType": "string",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": true,
- "approvers": [
- "string"
], - "rightsConfiguration": { },
- "optionsConfiguration": { },
- "translationConfiguration": { },
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Content pool type management service. Defines templates for creating content pools with predefined settings, permissions, and configurations. Types provide initial default values that can be customized when creating individual content pools.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all content pool types available in the system
| type | string Enum: "news" "event" "poll" "manual" "faq" "form" "training" Filter by content type |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new content pool type template. [Admin only]
| name required | string Display name for this content pool type (e.g., "News Pool", "Event Calendar") |
| type required | string Enum: "news" "event" "poll" "manual" "faq" "form" "training" Content type restriction - content pools of this type can only contain this content type |
| createRights | Array of strings <objectId> [ items <objectId > ] Default group IDs that have permission to create content in pools of this type |
| limitToOrgtype | string <objectId> Default organization type restriction for content pools of this type |
| requireApproval | boolean Default: false Default approval requirement for content in pools of this type |
| approvers | Array of strings <objectId> [ items <objectId > ] Default user IDs who can approve content |
object Default rights settings template (can disable certain rights features) | |
object Default options settings template (can disable certain option features) | |
object Default translation settings template |
{- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}
}{- "_id": "string",
- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single content pool type by ID
| _id required | string ID of contentpooltypes to return |
{- "_id": "string",
- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire content pool type configuration. [Admin only]
| _id required | string ID of contentpooltypes to update |
| name required | string Display name for this content pool type (e.g., "News Pool", "Event Calendar") |
| type required | string Enum: "news" "event" "poll" "manual" "faq" "form" "training" Content type restriction - content pools of this type can only contain this content type |
| createRights | Array of strings <objectId> [ items <objectId > ] Default group IDs that have permission to create content in pools of this type |
| limitToOrgtype | string <objectId> Default organization type restriction for content pools of this type |
| requireApproval | boolean Default: false Default approval requirement for content in pools of this type |
| approvers | Array of strings <objectId> [ items <objectId > ] Default user IDs who can approve content |
object Default rights settings template (can disable certain rights features) | |
object Default options settings template (can disable certain option features) | |
object Default translation settings template |
{- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}
}{- "_id": "string",
- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields of a content pool type. [Admin only]
| _id required | string ID of contentpooltypes to update |
| name required | string Display name for this content pool type (e.g., "News Pool", "Event Calendar") |
| type required | string Enum: "news" "event" "poll" "manual" "faq" "form" "training" Content type restriction - content pools of this type can only contain this content type |
| createRights | Array of strings <objectId> [ items <objectId > ] Default group IDs that have permission to create content in pools of this type |
| limitToOrgtype | string <objectId> Default organization type restriction for content pools of this type |
| requireApproval | boolean Default: false Default approval requirement for content in pools of this type |
| approvers | Array of strings <objectId> [ items <objectId > ] Default user IDs who can approve content |
object Default rights settings template (can disable certain rights features) | |
object Default options settings template (can disable certain option features) | |
object Default translation settings template |
{- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}
}{- "_id": "string",
- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a content pool type. Warning: Cannot delete if content pools exist using this type. [Admin only]
| _id required | string ID of contentpooltypes to remove |
{- "_id": "string",
- "name": "string",
- "type": "news",
- "createRights": [
- "string"
], - "limitToOrgtype": "string",
- "requireApproval": false,
- "approvers": [
- "string"
], - "rightsConfiguration": {
- "disable": [
- "string"
]
}, - "optionsConfiguration": {
- "disable": [
- "string"
]
}, - "translationConfiguration": {
- "disable": true,
- "requestorGroups": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}This service manages system contents and their metadata. Content includes messages, events, polls, and other information distributed to users based on organizational structure and group membership.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details on $limit, $skip, $sort, $select, $or, $and, and other query operators.
Retrieves a list of all resources from the service.
| contentPool | string Filter by content pool ID(s). Supports comma-separated values for multiple pools (e.g., |
| folder | string Filter by folder ID. Use |
| contentType | string Enum: "news" "event" "poll" "manual" "faq" "form" "training" Filter by content type |
| tags | string Filter by tag ID(s). Supports comma-separated values for multiple tags (e.g., |
| planningStatus | string Enum: "all" "planned" "active" "inactive" Filter by planning status. Controls visibility based on online/offline dates |
| approvedStatus | string Enum: "n/a" "pending" "approved" "rejected" Filter by approval status |
| searchTerm | string Full-text search across title, message, content pool name, and orgchart selection names in all languages |
| filterByNode | string Filter by organization node and all its descendants. Expands to include all child nodes |
| onlineDate | string <date-time> Filter content with online dates greater than or equal to this date. [Admin/Supervisor only] |
| offlineDate | string <date-time> Filter content with offline dates less than or equal to this date. [Admin/Supervisor only] |
| skipPlannedContent | string Enum: "true" "false" Skip content with future online dates (excludes planned content). [Admin/Supervisor only] |
| createdBy | string Filter by content creator user ID. When filtering others' content, only specific fields are returned |
| originRef | string Filter by origin reference (template or flow content ID) |
| stickyDate | string Value: "true" Filter content with sticky dates (pinned content) |
| contentReport | string Value: "true" Special flag for content reports. Requires |
| ref | string Reference node for content reports. Used with |
| isBlueprint | string Enum: "true" "false" Filter blueprint/template content |
| recipient | string Filter by recipient user ID or |
| savedBy | string Filter content saved/bookmarked by specific user ID |
| event.deactivationDate | string <date-time> Filter events by deactivation date |
| status | string Enum: "draft" "published" Filter by content status |
| management | string Enum: "true" "false" Management mode flag - removes some audience restrictions. [Admin/Supervisor only] |
| calculateTrainingProgress | string Enum: "true" "false" Calculate training progress statistics. [Admin/Supervisor only] |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}
]
}Create new content. Requires content pool and content type
| orgchartSelection | Array of strings Array of organisation units selected on frontend, this is state of selection for edit of content |
object Object that contains include and exclude properties. Both are Array of arrays for org unit attributes that additionally filter orgchartSelection, Top level array is interpreted as AND, Second level array is interpreted as OR | |
object Group field containing exclusion flag and selection of group references | |
| orgunits | Array of strings Array of organisation units this message belongs to, this array is populated by server based on orgchartSelection |
| recipient | string Reference to user for whom this content is created |
| notificationsCreated | boolean Tells if notifications for content are created |
| edited | boolean If content data (title, message, poll data) were changed. |
| notifyNew | boolean Flag that marks to send notification that new content has been added |
| notifyUpdated | boolean Flag that marks to send notification that the content has been updated |
object Event related data | |
| createdBy | string Field populated by system, reference to user who created content |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated content |
| updatedAt | string Field populated by system, timestamp of last update |
| originLanguage required | string Language in which content was created. Used as default translation |
Array of objects Array of translators (users) that worked on content | |
| title required | object At least provide title for originLanguage e.g. {"en": "English Title"}, possible to other langages as well |
| message required | object At least provide message for originLanguage e.g. {"en": "English Message"}, possible to other langages as well |
| private | boolean Indicate that content is private and that it needs to be addressed to you in order to access it |
| contentPool required | string Content pools where message belongs to |
| contentType required | string Type of content |
| onlineDate | string Date when content goes live |
| offlineDate | string Date when content goes offline |
| sendPushNotification | boolean Enable sending push notifications for this content |
| images | object At least provide images for originLanguage e.g. {"en": ["local/path/x/y/z"]}, possible to other langages as well |
| videos | Array of strings Array of video references as ObjectIds |
Array of objects Array of embeddedVideos | |
| videoProcessing | boolean Indicate that Video attach to this record is still in processing |
| attachments | object At least provide attachments for originLanguage e.g. {"en": []}, possible to other langages as well |
Array of objects Array of tags, assign by content | |
Array of objects Array of tags related to this content, used for Event to pull taged content to the page, in order to submit new relevant tag, just provide new object without _id e.g. {text:TagName} | |
| mentions | Array of strings Array of yours that are mentioned using @ in message section of contents |
object Social data | |
| viewsCount | integer Number of views on content (Managed by server and can not be changed from client) |
| originalReach | integer Original reach number when content was created (Unchangable) |
object Poll data | |
object Form related data | |
| folder | string Id of folder to which this content may belong to -> applicable only for manuals and faq content types |
object Approval Flow related data | |
object Training related data |
{- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}{- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}Retrieves a single resource with the given id from the service.
| management | string Enum: "true" "false" Management mode flag - removes some audience restrictions. [Admin/Supervisor only] |
{- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}Replace entire content record
| _id required | string ID of contents to update |
| orgchartSelection | Array of strings Array of organisation units selected on frontend, this is state of selection for edit of content |
object Object that contains include and exclude properties. Both are Array of arrays for org unit attributes that additionally filter orgchartSelection, Top level array is interpreted as AND, Second level array is interpreted as OR | |
object Group field containing exclusion flag and selection of group references | |
| orgunits | Array of strings Array of organisation units this message belongs to, this array is populated by server based on orgchartSelection |
| recipient | string Reference to user for whom this content is created |
| notificationsCreated | boolean Tells if notifications for content are created |
| edited | boolean If content data (title, message, poll data) were changed. |
| notifyNew | boolean Flag that marks to send notification that new content has been added |
| notifyUpdated | boolean Flag that marks to send notification that the content has been updated |
object Event related data | |
| createdBy | string Field populated by system, reference to user who created content |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated content |
| updatedAt | string Field populated by system, timestamp of last update |
| originLanguage required | string Language in which content was created. Used as default translation |
Array of objects Array of translators (users) that worked on content | |
| title required | object At least provide title for originLanguage e.g. {"en": "English Title"}, possible to other langages as well |
| message required | object At least provide message for originLanguage e.g. {"en": "English Message"}, possible to other langages as well |
| private | boolean Indicate that content is private and that it needs to be addressed to you in order to access it |
| contentPool required | string Content pools where message belongs to |
| contentType required | string Type of content |
| onlineDate | string Date when content goes live |
| offlineDate | string Date when content goes offline |
| sendPushNotification | boolean Enable sending push notifications for this content |
| images | object At least provide images for originLanguage e.g. {"en": ["local/path/x/y/z"]}, possible to other langages as well |
| videos | Array of strings Array of video references as ObjectIds |
Array of objects Array of embeddedVideos | |
| videoProcessing | boolean Indicate that Video attach to this record is still in processing |
| attachments | object At least provide attachments for originLanguage e.g. {"en": []}, possible to other langages as well |
Array of objects Array of tags, assign by content | |
Array of objects Array of tags related to this content, used for Event to pull taged content to the page, in order to submit new relevant tag, just provide new object without _id e.g. {text:TagName} | |
| mentions | Array of strings Array of yours that are mentioned using @ in message section of contents |
object Social data | |
| viewsCount | integer Number of views on content (Managed by server and can not be changed from client) |
| originalReach | integer Original reach number when content was created (Unchangable) |
object Poll data | |
object Form related data | |
| folder | string Id of folder to which this content may belong to -> applicable only for manuals and faq content types |
object Approval Flow related data | |
object Training related data |
{- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}{- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}Partially update content record
| _id required | string ID of contents to update |
| orgchartSelection | Array of strings Array of organisation units selected on frontend, this is state of selection for edit of content |
object Object that contains include and exclude properties. Both are Array of arrays for org unit attributes that additionally filter orgchartSelection, Top level array is interpreted as AND, Second level array is interpreted as OR | |
object Group field containing exclusion flag and selection of group references | |
| orgunits | Array of strings Array of organisation units this message belongs to, this array is populated by server based on orgchartSelection |
| recipient | string Reference to user for whom this content is created |
| notificationsCreated | boolean Tells if notifications for content are created |
| edited | boolean If content data (title, message, poll data) were changed. |
| notifyNew | boolean Flag that marks to send notification that new content has been added |
| notifyUpdated | boolean Flag that marks to send notification that the content has been updated |
object Event related data | |
| createdBy | string Field populated by system, reference to user who created content |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated content |
| updatedAt | string Field populated by system, timestamp of last update |
| originLanguage required | string Language in which content was created. Used as default translation |
Array of objects Array of translators (users) that worked on content | |
| title required | object At least provide title for originLanguage e.g. {"en": "English Title"}, possible to other langages as well |
| message required | object At least provide message for originLanguage e.g. {"en": "English Message"}, possible to other langages as well |
| private | boolean Indicate that content is private and that it needs to be addressed to you in order to access it |
| contentPool required | string Content pools where message belongs to |
| contentType required | string Type of content |
| onlineDate | string Date when content goes live |
| offlineDate | string Date when content goes offline |
| sendPushNotification | boolean Enable sending push notifications for this content |
| images | object At least provide images for originLanguage e.g. {"en": ["local/path/x/y/z"]}, possible to other langages as well |
| videos | Array of strings Array of video references as ObjectIds |
Array of objects Array of embeddedVideos | |
| videoProcessing | boolean Indicate that Video attach to this record is still in processing |
| attachments | object At least provide attachments for originLanguage e.g. {"en": []}, possible to other langages as well |
Array of objects Array of tags, assign by content | |
Array of objects Array of tags related to this content, used for Event to pull taged content to the page, in order to submit new relevant tag, just provide new object without _id e.g. {text:TagName} | |
| mentions | Array of strings Array of yours that are mentioned using @ in message section of contents |
object Social data | |
| viewsCount | integer Number of views on content (Managed by server and can not be changed from client) |
| originalReach | integer Original reach number when content was created (Unchangable) |
object Poll data | |
object Form related data | |
| folder | string Id of folder to which this content may belong to -> applicable only for manuals and faq content types |
object Approval Flow related data | |
object Training related data |
{- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}{- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}Delete content and all associated data (comments, likes, votes, etc.)
| _id required | string ID of contents to remove |
{- "orgchartSelection": [
- "string"
], - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": false,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "recipient": "string",
- "notificationsCreated": true,
- "edited": true,
- "notifyNew": true,
- "notifyUpdated": true,
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}Content view collection service. Provides a materialized view of contents with denormalized data for efficient querying. [Read-only] This collection is automatically updated when content changes. Only find and get operations are supported.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Query contents with denormalized data for improved performance. Supports search and filtering
| searchTerm | string Search term for full-text search in content titles |
| contentType | string Enum: "news" "event" "poll" "manual" "faq" "form" "training" Filter by content type |
| contentPool | string Filter by content pool ID |
| lang | string Language code for content title and message |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "title": { },
- "message": { },
- "contentType": "string",
- "contentPool": { },
- "onlineDate": "2019-08-24T14:15:22Z",
- "offlineDate": "2019-08-24T14:15:22Z",
- "createdBy": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Creates a new resource with data.
{ }{- "_id": "string",
- "title": { },
- "message": { },
- "contentType": "string",
- "contentPool": { },
- "onlineDate": "2019-08-24T14:15:22Z",
- "offlineDate": "2019-08-24T14:15:22Z",
- "createdBy": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single content from the view collection by ID
| lang | string Language code for content title and message |
{- "_id": "string",
- "title": { },
- "message": { },
- "contentType": "string",
- "contentPool": { },
- "onlineDate": "2019-08-24T14:15:22Z",
- "offlineDate": "2019-08-24T14:15:22Z",
- "createdBy": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates the resource identified by id using data.
| _id required | string ID of contentsview to update |
{ }{- "_id": "string",
- "title": { },
- "message": { },
- "contentType": "string",
- "contentPool": { },
- "onlineDate": "2019-08-24T14:15:22Z",
- "offlineDate": "2019-08-24T14:15:22Z",
- "createdBy": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates the resource identified by id using data.
| _id required | string ID of contentsview to update |
{ }{- "_id": "string",
- "title": { },
- "message": { },
- "contentType": "string",
- "contentPool": { },
- "onlineDate": "2019-08-24T14:15:22Z",
- "offlineDate": "2019-08-24T14:15:22Z",
- "createdBy": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Removes the resource with id.
| _id required | string ID of contentsview to remove |
{- "_id": "string",
- "title": { },
- "message": { },
- "contentType": "string",
- "contentPool": { },
- "onlineDate": "2019-08-24T14:15:22Z",
- "offlineDate": "2019-08-24T14:15:22Z",
- "createdBy": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Content view tracking service. Records when users view content for analytics and engagement metrics. One view per user per content.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve content views for analytics. Typically filtered by content reference
| contentRef | string <objectId> Filter by content ID |
| createdBy | string Filter by viewer user ID |
| createdAt[$gte] | string <date-time> Filter views from specific date |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "contentRef": "string",
- "viewDuration": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Record a content view. Automatically prevents duplicate views from same user. Updates content viewsCount
| contentRef required | string <objectId> Reference to the viewed content |
| viewDuration | integer Time spent viewing content in seconds |
{- "contentRef": "string",
- "viewDuration": 0
}{- "_id": "string",
- "contentRef": "string",
- "viewDuration": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a content view record. Only creator or admins can remove. [Rarely used]
| id required | string ID of contentviews to remove |
{- "_id": "string",
- "contentRef": "string",
- "viewDuration": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Download page service for managing public app download landing pages. [Public access for GET] Creates branded download pages with platform-specific links (iOS, Android, Desktop).
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all download pages. [Admin only]
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (download) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create new download page with unique path and URL. [Admin only]
| path required | string Unique URL path for this download page (e.g., "/app-download") |
| title required | object Multi-language page title |
| faq | object Multi-language FAQ content for download page |
| originLanguage | string Original language for page content |
| downloadPageUrl | string <uri> Public URL for this download page (immutable once set) |
| iosUrl | string <uri> App Store link for iOS app |
| androidUrl | string <uri> Google Play link for Android app |
| desktopUrl | string <uri> Download link for desktop application |
| textTop | object Multi-language header text |
| textBottom | object Multi-language footer text |
| clientLogo | string S3 path to client logo image |
| backgroundImage | string S3 path to background image |
| active | boolean Default: true Whether download page is currently active |
{- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true
}{- "_id": "string",
- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve download page by ID or path. [Public access] No authentication required for GET
| path | string Download page path for lookup |
{- "_id": "string",
- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire download page. [Admin only]
| id required | string ID of download to update |
| path required | string Unique URL path for this download page (e.g., "/app-download") |
| title required | object Multi-language page title |
| faq | object Multi-language FAQ content for download page |
| originLanguage | string Original language for page content |
| downloadPageUrl | string <uri> Public URL for this download page (immutable once set) |
| iosUrl | string <uri> App Store link for iOS app |
| androidUrl | string <uri> Google Play link for Android app |
| desktopUrl | string <uri> Download link for desktop application |
| textTop | object Multi-language header text |
| textBottom | object Multi-language footer text |
| clientLogo | string S3 path to client logo image |
| backgroundImage | string S3 path to background image |
| active | boolean Default: true Whether download page is currently active |
{- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true
}{- "_id": "string",
- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update download page fields. downloadPageUrl cannot be changed once set. [Admin only]
| id required | string ID of download to update |
| path required | string Unique URL path for this download page (e.g., "/app-download") |
| title required | object Multi-language page title |
| faq | object Multi-language FAQ content for download page |
| originLanguage | string Original language for page content |
| downloadPageUrl | string <uri> Public URL for this download page (immutable once set) |
| iosUrl | string <uri> App Store link for iOS app |
| androidUrl | string <uri> Google Play link for Android app |
| desktopUrl | string <uri> Download link for desktop application |
| textTop | object Multi-language header text |
| textBottom | object Multi-language footer text |
| clientLogo | string S3 path to client logo image |
| backgroundImage | string S3 path to background image |
| active | boolean Default: true Whether download page is currently active |
{- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true
}{- "_id": "string",
- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete download page by ID. [Admin only]
| id required | string ID of download to remove |
{- "_id": "string",
- "path": "string",
- "title": { },
- "faq": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "textTop": { },
- "textBottom": { },
- "clientLogo": "string",
- "backgroundImage": "string",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}KeepHub Drive service for browsing and accessing organization files stored in S3. Provides hierarchical file/folder navigation by organization unit. Drive must be configured per organization before use.
Note: This service uses custom pagination with continuation tokens instead of standard skip/limit.
Browse drive contents by organization unit and path. Returns files, folders, and child organization units
| $limit | integer Default: 50 Number of results to return per page |
| continuationToken | string Continuation token for pagination (returned in previous response) |
| orgunit required | string <objectId> Organization unit ID to browse |
| path | string Folder path to navigate to. If not provided, returns root level (organization units) |
{- "data": [
- {
- "name": "string",
- "lastModified": "2019-08-24T14:15:22Z",
- "size": 0,
- "storageId": "string",
- "type": "file",
- "mimeType": "string"
}
], - "continuationToken": "string"
}Generate signed URL for downloading a specific drive file
| storageId required | string S3 storage identifier of the file to generate signed URL for |
| expiresIn | integer Default: 3600 URL expiration time in seconds (default: 3600) |
{- "storageId": "string",
- "expiresIn": 3600
}{- "expiresIn": 0
}Event attendee tracking service for managing RSVP status for events. Users can indicate if they are going, not going, or maybe attending an event.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve attendee list for an event. Requires content reference (event ID)
| contentRef | string <objectId> Filter by event content ID (required for practical use) |
| status | string Enum: "going" "notgoing" "maybe" Filter by attendance status |
| createdBy | string Filter by user ID |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "contentRef": "string",
- "status": "going",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}RSVP to an event. Only one record per event/user combination. Users can only RSVP for themselves
| contentRef required | string <objectId> Reference to event content |
| status required | string Enum: "going" "notgoing" "maybe" Attendance status. Options: going, notgoing, maybe |
{- "contentRef": "string",
- "status": "going"
}{- "_id": "string",
- "contentRef": "string",
- "status": "going",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single attendee record by ID
| _id required | string ID of eventattendees to return |
{- "_id": "string",
- "contentRef": "string",
- "status": "going",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates the resource identified by id using data.
| _id required | string ID of eventattendees to update |
| contentRef required | string <objectId> Reference to event content |
| status required | string Enum: "going" "notgoing" "maybe" Attendance status. Options: going, notgoing, maybe |
{- "contentRef": "string",
- "status": "going"
}{- "_id": "string",
- "contentRef": "string",
- "status": "going",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update RSVP status. Users can only update their own status
| _id required | string ID of eventattendees to update |
| status | string Enum: "going" "notgoing" "maybe" Updated attendance status |
{- "status": "going"
}{- "_id": "string",
- "contentRef": "string",
- "status": "going",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Remove RSVP. Users can only remove their own RSVP
| _id required | string ID of eventattendees to remove |
{- "_id": "string",
- "contentRef": "string",
- "status": "going",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Data export service for generating CSV or Excel files from polls, forms, and task results. Creators can export their own content; ExportAdmin and Admins can export any content.
Supports automatic column sizing, image embedding in Excel, and CSV formula injection prevention.
Generate and download export file. Returns file directly as response with appropriate content-type header
| type required | string Enum: "poll" "form" "tasktemplate" Export type |
| exportFileType | string Default: "csv" Enum: "csv" "xlsx" Export file format |
| ref required | string <objectId> Reference ID of object to export (content ID, task template ID) |
| apiExport | boolean Indicates export via API (affects filename) |
Optional filters for export data
{ }External contacts directory service for managing company contacts, partners, and vendors. Supports multi-language information and file attachments.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all external contacts with search support
| name | string Search by name (case-insensitive) |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "profilePicture": "string",
- "name": "string",
- "nameCI": "string",
- "nameASCII": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new external contact. [Admin only]
| profilePicture | string S3 path to contact logo/profile image |
| name required | string Contact name or company name |
| shortDescription required | string Brief contact description |
string <email> Contact email address | |
| phone | string Contact phone number |
| website | string <uri> Contact website URL |
| address1 | string Address line 1 |
| address2 | string Address line 2 |
| postalCode | string Postal/ZIP code |
| city | string City |
| country | string Country |
| generalInformation | object Multi-language general information/description |
| originLanguage required | string Original language for contact information |
Array of objects Attached files (brochures, contracts, etc.) | |
| category | string Enum: "partner" "vendor" "supplier" "customer" "other" Contact category/type |
{- "profilePicture": "string",
- "name": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner"
}{- "_id": "string",
- "profilePicture": "string",
- "name": "string",
- "nameCI": "string",
- "nameASCII": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a specific external contact by ID
| _id required | string ID of externalcontacts to return |
{- "_id": "string",
- "profilePicture": "string",
- "name": "string",
- "nameCI": "string",
- "nameASCII": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire external contact. [Admin only]
| _id required | string ID of externalcontacts to update |
| profilePicture | string S3 path to contact logo/profile image |
| name required | string Contact name or company name |
| shortDescription required | string Brief contact description |
string <email> Contact email address | |
| phone | string Contact phone number |
| website | string <uri> Contact website URL |
| address1 | string Address line 1 |
| address2 | string Address line 2 |
| postalCode | string Postal/ZIP code |
| city | string City |
| country | string Country |
| generalInformation | object Multi-language general information/description |
| originLanguage required | string Original language for contact information |
Array of objects Attached files (brochures, contracts, etc.) | |
| category | string Enum: "partner" "vendor" "supplier" "customer" "other" Contact category/type |
{- "profilePicture": "string",
- "name": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner"
}{- "_id": "string",
- "profilePicture": "string",
- "name": "string",
- "nameCI": "string",
- "nameASCII": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific contact fields. [Admin only]
| _id required | string ID of externalcontacts to update |
| profilePicture | string S3 path to contact logo/profile image |
| name required | string Contact name or company name |
| shortDescription required | string Brief contact description |
string <email> Contact email address | |
| phone | string Contact phone number |
| website | string <uri> Contact website URL |
| address1 | string Address line 1 |
| address2 | string Address line 2 |
| postalCode | string Postal/ZIP code |
| city | string City |
| country | string Country |
| generalInformation | object Multi-language general information/description |
| originLanguage required | string Original language for contact information |
Array of objects Attached files (brochures, contracts, etc.) | |
| category | string Enum: "partner" "vendor" "supplier" "customer" "other" Contact category/type |
{- "profilePicture": "string",
- "name": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner"
}{- "_id": "string",
- "profilePicture": "string",
- "name": "string",
- "nameCI": "string",
- "nameASCII": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete an external contact. [Admin only]
| _id required | string ID of externalcontacts to remove |
{- "_id": "string",
- "profilePicture": "string",
- "name": "string",
- "nameCI": "string",
- "nameASCII": "string",
- "shortDescription": "string",
- "email": "user@example.com",
- "phone": "string",
- "address1": "string",
- "address2": "string",
- "postalCode": "string",
- "city": "string",
- "country": "string",
- "generalInformation": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "category": "partner",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}RSS feed service for exporting content as RSS/XML feeds. Generates standard RSS 2.0 format for content pools with optional filtering by organization units and groups. Useful for external integrations and content syndication.
Generate RSS feed for a specific content pool with optional filtering. Returns XML formatted as RSS 2.0
| id required | string <objectId> Content pool ID to generate feed for |
| orgunits | Array of strings Filter by organization unit IDs (comma-separated or multiple params) |
| groups | Array of strings Filter by group IDs (comma-separated or multiple params) |
| lang | string Language code for content (e.g., "en", "nl", "de") |
| excludeGroups | boolean If true, excludes specified groups instead of including them |
| limit | integer <= 50 Default: 20 Number of content items to include in feed (max: 50) |
Flow template service for defining content and task templates that are automatically generated by cron jobs. Templates define what content/tasks to create, when to create them (intervals), and who should receive them.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all flow templates with optional filtering
| flowRef | string <objectId> Filter by flow reference ID |
| active | boolean Filter by active status |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new flow template with targeting and scheduling. [Admin only]
object Organization chart targeting for selecting users | |
object Organization attribute filters (AND/OR logic) | |
object Group targeting configuration | |
required | object Content/task template configuration (follows same structure as contents service) |
required | object Timing configuration for when content/tasks should be generated |
| visibleFor | string Enum: "all" "sameOrgUnit" "user" How targeting (selected users) is transferred to addressing (content visibility). "all" = visible to all targeted users, "sameOrgUnit" = visible only within same org unit, "user" = visible only to specific user |
| active | boolean Default: true If false, template will be skipped by cron job |
| flowRef required | string <objectId> Reference to automatic flow this template belongs to |
| order | integer Execution order within the flow |
{- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0
}{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single flow template by ID
| _id required | string ID of flowtemplates to return |
{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire flow template configuration. [Admin only]
| _id required | string ID of flowtemplates to update |
object Organization chart targeting for selecting users | |
object Organization attribute filters (AND/OR logic) | |
object Group targeting configuration | |
required | object Content/task template configuration (follows same structure as contents service) |
required | object Timing configuration for when content/tasks should be generated |
| visibleFor | string Enum: "all" "sameOrgUnit" "user" How targeting (selected users) is transferred to addressing (content visibility). "all" = visible to all targeted users, "sameOrgUnit" = visible only within same org unit, "user" = visible only to specific user |
| active | boolean Default: true If false, template will be skipped by cron job |
| flowRef required | string <objectId> Reference to automatic flow this template belongs to |
| order | integer Execution order within the flow |
{- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0
}{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields of a flow template. [Admin only]
| _id required | string ID of flowtemplates to update |
object Organization chart targeting for selecting users | |
object Organization attribute filters (AND/OR logic) | |
object Group targeting configuration | |
required | object Content/task template configuration (follows same structure as contents service) |
required | object Timing configuration for when content/tasks should be generated |
| visibleFor | string Enum: "all" "sameOrgUnit" "user" How targeting (selected users) is transferred to addressing (content visibility). "all" = visible to all targeted users, "sameOrgUnit" = visible only within same org unit, "user" = visible only to specific user |
| active | boolean Default: true If false, template will be skipped by cron job |
| flowRef required | string <objectId> Reference to automatic flow this template belongs to |
| order | integer Execution order within the flow |
{- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0
}{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a flow template. Does not affect already generated content/tasks. [Admin only]
| _id required | string ID of flowtemplates to remove |
{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "template": {
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "title": { },
- "message": { },
- "private": true,
- "contentPool": "string",
- "contentType": "string",
- "onlineDate": "string",
- "offlineDate": "string",
- "sendPushNotification": true,
- "images": { },
- "videos": [
- "string"
], - "embeddedVideos": [
- {
- "lang": "string",
- "type": "string",
- "url": "string"
}
], - "videoProcessing": true,
- "attachments": { },
- "tags": [
- {
- "_id": "string",
- "text": "string"
}
], - "relatedTags": [
- {
- "_id": "string",
- "text": "string"
}
], - "mentions": [
- "string"
], - "social": {
- "reactionsEnabled": true,
- "commentsEnabled": true,
- "reactionCounts": { },
- "commentCount": 0,
- "comments": [
- { }
]
}, - "viewsCount": 0,
- "originalReach": 0,
- "poll": {
- "options": [
- {
- "optId": "string",
- "index": 0,
- "text": "string",
- "image": "string"
}
]
}, - "form": {
- "active": true,
- "confidential": true,
- "confidants": [
- "string"
], - "emails": [
- "string"
], - "hookurls": [
], - "fields": [
- { }
]
}, - "folder": "string",
- "event": {
- "startDate": "string",
- "endDate": "string",
- "widgets": [
- "string"
]
}, - "approval": {
- "status": "string",
- "reviewedAt": "string",
- "reviewedBy": "string"
}, - "training": {
- "lessons": [
- "string"
], - "ownCompleted": [
- "string"
]
}
}, - "interval": {
- "direction": "before",
- "period": "day",
- "offset": 0,
- "dateType": "dateOfBirth"
}, - "visibleFor": "all",
- "active": true,
- "flowRef": "string",
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Folder management service for organizing content. Folders can contain manuals, FAQs, and forms. Supports hierarchical structure with org unit and group targeting.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve folders with optional filtering by content pool
| contentPool | string <objectId> Filter by content pool ID |
| parent | string Filter by parent folder ID (null for root folders) |
| lang | string Language code for folder name translation |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentCount": 0,
- "subfolderCount": 0,
- "externalRef": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new folder with targeting rules
| name required | object Multi-language folder name. Must include at least origin language (e.g., {"en": "Documentation", "nl": "Documentatie"}) |
| originLanguage required | string Language code for the original folder name |
| parent | string <objectId> Parent folder ID for hierarchical structure (null for root folders) |
| contentPool | string <objectId> Content pool this folder belongs to |
object Organization units selected for targeting | |
object Organizational attribute filters. Top-level arrays use AND logic, nested arrays use OR logic | |
object Group targeting configuration | |
| externalRef | string Optional external reference ID for integration with other systems |
{- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "externalRef": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentCount": 0,
- "subfolderCount": 0,
- "externalRef": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single folder by ID with item count
| lang | string Language code for folder name translation |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentCount": 0,
- "subfolderCount": 0,
- "externalRef": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire folder configuration
| _id required | string ID of folders to update |
| name required | object Multi-language folder name. Must include at least origin language (e.g., {"en": "Documentation", "nl": "Documentatie"}) |
| originLanguage required | string Language code for the original folder name |
| parent | string <objectId> Parent folder ID for hierarchical structure (null for root folders) |
| contentPool | string <objectId> Content pool this folder belongs to |
object Organization units selected for targeting | |
object Organizational attribute filters. Top-level arrays use AND logic, nested arrays use OR logic | |
object Group targeting configuration | |
| externalRef | string Optional external reference ID for integration with other systems |
{- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "externalRef": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentCount": 0,
- "subfolderCount": 0,
- "externalRef": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update folder information
| _id required | string ID of folders to update |
| name required | object Multi-language folder name. Must include at least origin language (e.g., {"en": "Documentation", "nl": "Documentatie"}) |
| originLanguage required | string Language code for the original folder name |
| parent | string <objectId> Parent folder ID for hierarchical structure (null for root folders) |
| contentPool | string <objectId> Content pool this folder belongs to |
object Organization units selected for targeting | |
object Organizational attribute filters. Top-level arrays use AND logic, nested arrays use OR logic | |
object Group targeting configuration | |
| externalRef | string Optional external reference ID for integration with other systems |
{- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "externalRef": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentCount": 0,
- "subfolderCount": 0,
- "externalRef": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a folder. Content within the folder will be unlinked
| _id required | string ID of folders to remove |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "parent": "string",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "orgunits": [
- "string"
], - "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentCount": 0,
- "subfolderCount": 0,
- "externalRef": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Form values service for storing user submissions from forms. Supports confidential forms with restricted access to confidants only.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve form submissions. Automatically filtered by permissions - confidential forms only visible to confidants and form creator
| contentRef | string <objectId> Filter by content (form) reference ID |
| createdBy | string Filter by submitter user ID |
| contentType | string Enum: "form" "event" Filter by content type |
| confidential | boolean Filter by confidential status |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "contentRef": "string",
- "contentType": "form",
- "confidential": true,
- "confidants": [
- "string"
], - "values": [
- {
- "fieldId": "string",
- "value": null
}
], - "orgunitsOfCreator": [
- "string"
], - "videoProcessing": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Submit form values. Triggers webhooks and email notifications if configured on the form
| contentRef required | string <objectId> Reference to the form content |
required | Array of objects Form field values submitted by user |
{- "contentRef": "string",
- "values": [
- {
- "fieldId": "string",
- "value": null
}
]
}{- "_id": "string",
- "contentRef": "string",
- "contentType": "form",
- "confidential": true,
- "confidants": [
- "string"
], - "values": [
- {
- "fieldId": "string",
- "value": null
}
], - "orgunitsOfCreator": [
- "string"
], - "videoProcessing": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single form submission by ID. Access restricted for confidential forms
| _id required | string ID of formvalues to return |
{- "_id": "string",
- "contentRef": "string",
- "contentType": "form",
- "confidential": true,
- "confidants": [
- "string"
], - "values": [
- {
- "fieldId": "string",
- "value": null
}
], - "orgunitsOfCreator": [
- "string"
], - "videoProcessing": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire form submission. Only creator or confidants can update. [Rarely used]
| _id required | string ID of formvalues to update |
| contentRef required | string <objectId> Reference to the form content |
required | Array of objects Form field values submitted by user |
{- "contentRef": "string",
- "values": [
- {
- "fieldId": "string",
- "value": null
}
]
}{- "_id": "string",
- "contentRef": "string",
- "contentType": "form",
- "confidential": true,
- "confidants": [
- "string"
], - "values": [
- {
- "fieldId": "string",
- "value": null
}
], - "orgunitsOfCreator": [
- "string"
], - "videoProcessing": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields of a form submission. Only creator or confidants can update
| _id required | string ID of formvalues to update |
| contentRef required | string <objectId> Reference to the form content |
required | Array of objects Form field values submitted by user |
{- "contentRef": "string",
- "values": [
- {
- "fieldId": "string",
- "value": null
}
]
}{- "_id": "string",
- "contentRef": "string",
- "contentType": "form",
- "confidential": true,
- "confidants": [
- "string"
], - "values": [
- {
- "fieldId": "string",
- "value": null
}
], - "orgunitsOfCreator": [
- "string"
], - "videoProcessing": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a form submission. Only creator, confidants, or admins can delete
| _id required | string ID of formvalues to remove |
{- "_id": "string",
- "contentRef": "string",
- "contentType": "form",
- "confidential": true,
- "confidants": [
- "string"
], - "values": [
- {
- "fieldId": "string",
- "value": null
}
], - "orgunitsOfCreator": [
- "string"
], - "videoProcessing": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Group management service for organizing users into logical groups. Groups are used for content targeting, permissions, and organizational structure.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all groups with optional filtering. Group names are returned in the requested language (via lang header)
| excludeFromContent | boolean Filter groups by content exclusion flag. Set to |
| lang | string Language code for group name translation (e.g., "en", "nl", "de"). Defaults to system language |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new group. System users can manually set the group ID for imported groups
| _id | string <objectId> Unique identifier. Can be manually set by system users for imported groups, otherwise auto-generated |
| name required | object Multi-language group name. Must include at least the origin language (e.g., {"en": "Regional Managers", "nl": "Regionale Managers"}) |
| imported | boolean Default: false Indicates if group was imported from external system (true) or manually created (false) |
| originLanguage required | string Language code for the original group name (e.g., "en", "nl", "de") |
| excludeFromContent | boolean Default: false If true, this group is excluded from content targeting options |
| orgunitsForAdditionalContacts | Array of strings <objectId> [ items <objectId > ] Additional organizational units whose members are visible in contacts for users in this group. Automatically expanded to include descendants |
{- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
]
}{- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single group by ID. Returns group with all translations
| lang | string Language code for group name translation |
{- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire group record
| _id required | string ID of groups to update |
| _id | string <objectId> Unique identifier. Can be manually set by system users for imported groups, otherwise auto-generated |
| name required | object Multi-language group name. Must include at least the origin language (e.g., {"en": "Regional Managers", "nl": "Regionale Managers"}) |
| imported | boolean Default: false Indicates if group was imported from external system (true) or manually created (false) |
| originLanguage required | string Language code for the original group name (e.g., "en", "nl", "de") |
| excludeFromContent | boolean Default: false If true, this group is excluded from content targeting options |
| orgunitsForAdditionalContacts | Array of strings <objectId> [ items <objectId > ] Additional organizational units whose members are visible in contacts for users in this group. Automatically expanded to include descendants |
{- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
]
}{- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update group information
| _id required | string ID of groups to update |
| _id | string <objectId> Unique identifier. Can be manually set by system users for imported groups, otherwise auto-generated |
| name required | object Multi-language group name. Must include at least the origin language (e.g., {"en": "Regional Managers", "nl": "Regionale Managers"}) |
| imported | boolean Default: false Indicates if group was imported from external system (true) or manually created (false) |
| originLanguage required | string Language code for the original group name (e.g., "en", "nl", "de") |
| excludeFromContent | boolean Default: false If true, this group is excluded from content targeting options |
| orgunitsForAdditionalContacts | Array of strings <objectId> [ items <objectId > ] Additional organizational units whose members are visible in contacts for users in this group. Automatically expanded to include descendants |
{- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
]
}{- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a group. Also removes group membership from all users
| _id required | string ID of groups to remove |
{- "_id": "string",
- "name": {
- "en": "Regional Managers",
- "nl": "Regionale Managers"
}, - "imported": false,
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "excludeFromContent": false,
- "orgunitsForAdditionalContacts": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Health check service for monitoring system component status. [Public endpoint] Returns HTTP 200 if healthy, HTTP 400 if degraded. Used by load balancers and monitoring systems.
Retrieves a list of all resources from the service.
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (healthcheck) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "redisStatus": "ready",
- "dbStatus": "up",
- "version": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "uptime": 0
}
]
}User impersonation service for administrators. [Admin only] Allows admins to log in as another user for support and debugging purposes.
Impersonate a user and receive authentication token. Requires administrator permission
required | object User identification (provide either loginName or _id) |
| method | string Default: "magiclink" Enum: "magiclink" "jwt" Impersonation method (defaults to magiclink if not specified) |
{- "value": {
- "loginName": "string",
- "_id": "string"
}, - "method": "magiclink"
}{- "accessToken": "string",
- "magicLink": "string",
- "user": { }
}Call to one of key metrics service queries
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (keymetrics) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": {
- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "userResults": {
- "activeUsers": 0,
- "activeUsersWithFirstLogin": 0,
- "inactiveUsers": 0,
- "activeWithActivityInLast30Days": 0,
- "acountTypes": {
- "personal": 0,
- "group": 0,
- "keephub": 0,
- "none": 0
}
}, - "orgChartNodes": 0,
- "orgChartLevels": 0,
- "languages": 0,
- "userRoles": 0,
- "orgAttributesCategories": 0,
- "userGroups": 0,
- "contentPools": 0,
- "themes": 0,
- "automaticFlows": 0,
- "contentFlowTemplates": 0,
- "orgAttributes": 0,
- "activePlugins": 0
}
]
}
}Training lessons service for managing quizzes and assessments within training content. Each lesson contains questions with scoring and pass/fail messages.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve lessons for a specific training. Results include user completion status when accessed by end users
| contentRef required | string <objectId> Filter by training content ID (required) |
| management | boolean Management mode flag - returns all lesson data including answers. [Admin only] |
| createdBy | string Filter by lesson creator user ID |
| lang | string Language code for lesson content translation |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "maxScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new lesson for a training. [Admin/Content Creator only]
| originLanguage required | string Language code for original lesson content |
| contentRef required | string <objectId> Reference to training content this lesson belongs to |
| title required | object Multi-language lesson title (e.g., {"en": "Quiz 1", "nl": "Quiz 1"}) |
| description | object Multi-language lesson description/instructions |
| questions required | object Multi-language question data structure with questions, answers, and scoring |
| neededScore required | number >= 0 Minimum score required to pass the lesson |
| passedMessage | object Multi-language success message shown when user passes |
| failedMessage | object Multi-language failure message shown when user fails |
| order | integer Display order within the training |
{- "originLanguage": "string",
- "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0
}{- "_id": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "maxScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single lesson by ID. Answers are hidden from end users
| lang | string Language code for lesson content translation |
{- "_id": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "maxScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire lesson. [Admin/Content Creator only]
| _id required | string ID of lessons to update |
| originLanguage required | string Language code for original lesson content |
| contentRef required | string <objectId> Reference to training content this lesson belongs to |
| title required | object Multi-language lesson title (e.g., {"en": "Quiz 1", "nl": "Quiz 1"}) |
| description | object Multi-language lesson description/instructions |
| questions required | object Multi-language question data structure with questions, answers, and scoring |
| neededScore required | number >= 0 Minimum score required to pass the lesson |
| passedMessage | object Multi-language success message shown when user passes |
| failedMessage | object Multi-language failure message shown when user fails |
| order | integer Display order within the training |
{- "originLanguage": "string",
- "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0
}{- "_id": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "maxScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields of a lesson. [Admin/Content Creator only]
| _id required | string ID of lessons to update |
| originLanguage required | string Language code for original lesson content |
| contentRef required | string <objectId> Reference to training content this lesson belongs to |
| title required | object Multi-language lesson title (e.g., {"en": "Quiz 1", "nl": "Quiz 1"}) |
| description | object Multi-language lesson description/instructions |
| questions required | object Multi-language question data structure with questions, answers, and scoring |
| neededScore required | number >= 0 Minimum score required to pass the lesson |
| passedMessage | object Multi-language success message shown when user passes |
| failedMessage | object Multi-language failure message shown when user fails |
| order | integer Display order within the training |
{- "originLanguage": "string",
- "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0
}{- "_id": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "maxScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a lesson. Also removes associated user submissions. [Admin/Content Creator only]
| _id required | string ID of lessons to remove |
{- "_id": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "contentRef": "string",
- "title": { },
- "description": { },
- "questions": { },
- "neededScore": 0,
- "maxScore": 0,
- "passedMessage": { },
- "failedMessage": { },
- "order": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Lesson submission service for tracking user attempts at training lessons. Records answers, scores, and pass/fail status.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve lesson submissions. Users can only see their own submissions unless they are admins/trainers
| lessonRef | string <objectId> Filter by lesson ID |
| userId | string Filter by user ID. Non-admins can only filter for themselves |
| status | string Enum: "passed" "failed" "in-progress" Filter by submission status |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "lessonRef": "string",
- "userId": "string",
- "orgunitsOfCreator": [
- "string"
], - "status": "passed",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
], - "currentScore": 0,
- "maxScore": 0,
- "attemptNumber": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Submit answers for a lesson. Automatically calculates score and determines pass/fail status
| lessonRef required | string <objectId> Reference to the lesson being attempted |
required | Array of objects User answers to lesson questions |
{- "lessonRef": "string",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
]
}{- "_id": "string",
- "lessonRef": "string",
- "userId": "string",
- "orgunitsOfCreator": [
- "string"
], - "status": "passed",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
], - "currentScore": 0,
- "maxScore": 0,
- "attemptNumber": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single lesson submission by ID
| _id required | string ID of lessonsubmissions to return |
{- "_id": "string",
- "lessonRef": "string",
- "userId": "string",
- "orgunitsOfCreator": [
- "string"
], - "status": "passed",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
], - "currentScore": 0,
- "maxScore": 0,
- "attemptNumber": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire submission. [Rarely used - typically users create new submissions for retries]
| _id required | string ID of lessonsubmissions to update |
| lessonRef required | string <objectId> Reference to the lesson being attempted |
required | Array of objects User answers to lesson questions |
{- "lessonRef": "string",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
]
}{- "_id": "string",
- "lessonRef": "string",
- "userId": "string",
- "orgunitsOfCreator": [
- "string"
], - "status": "passed",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
], - "currentScore": 0,
- "maxScore": 0,
- "attemptNumber": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields of a submission. [Admin only]
| _id required | string ID of lessonsubmissions to update |
| lessonRef required | string <objectId> Reference to the lesson being attempted |
required | Array of objects User answers to lesson questions |
{- "lessonRef": "string",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
]
}{- "_id": "string",
- "lessonRef": "string",
- "userId": "string",
- "orgunitsOfCreator": [
- "string"
], - "status": "passed",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
], - "currentScore": 0,
- "maxScore": 0,
- "attemptNumber": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a lesson submission. Only creator or admins can delete
| _id required | string ID of lessonsubmissions to remove |
{- "_id": "string",
- "lessonRef": "string",
- "userId": "string",
- "orgunitsOfCreator": [
- "string"
], - "status": "passed",
- "answers": [
- {
- "questionId": "string",
- "answer": null
}
], - "currentScore": 0,
- "maxScore": 0,
- "attemptNumber": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}User level/rank system service for gamification. Defines level tiers based on point ranges with associated rewards and titles.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all levels in the system
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (levels) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "range": [
- 0,
- 100
], - "reward": {
- "amount": 0,
- "title": "string",
- "icon": "string",
- "badge": "string"
}, - "order": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Retrieves a single resource with the given id from the service.
| id required | any login name of user for whom we request login options |
{- "loginMethod": "string",
- "oAuthURL": "string",
- "magicLink": true
}Maintenance mode management service for controlling system availability. [System user only] When maintenance mode is enabled, regular users cannot access the system. Used during deployments and updates.
Get maintenance mode status by ID
| id required | string ID of maintenance to return |
{- "maintenance": true,
- "message": { },
- "scheduledStart": "2019-08-24T14:15:22Z",
- "scheduledEnd": "2019-08-24T14:15:22Z",
- "allowedUsers": [
- "string"
]
}Enable or disable maintenance mode. Broadcasts to all application instances. [System user only]
| maintenance required | boolean Maintenance mode flag (true=maintenance on, false=maintenance off) |
| message | object Multi-language maintenance message to display to users |
| scheduledStart | string <date-time> Scheduled maintenance start time |
| scheduledEnd | string <date-time> Scheduled maintenance end time |
| allowedUsers | Array of strings <objectId> [ items <objectId > ] User IDs allowed to access during maintenance (e.g., admins) |
{- "maintenance": true,
- "message": { },
- "scheduledStart": "2019-08-24T14:15:22Z",
- "scheduledEnd": "2019-08-24T14:15:22Z",
- "allowedUsers": [
- "string"
]
}{- "maintenance": true,
- "message": { },
- "scheduledStart": "2019-08-24T14:15:22Z",
- "scheduledEnd": "2019-08-24T14:15:22Z",
- "allowedUsers": [
- "string"
]
}Marketplace service for managing available plugins and integrations. Defines external plugins that can be added to pages and widgets.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all marketplace plugins
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (marketplace) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "description": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "icon": "string",
- "category": "productivity",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Add a new plugin to marketplace. [Admin only]
| name required | string Plugin name for internal reference |
| description | object Multi-language plugin description |
| originLanguage | string Original language for plugin text |
| url required | string <uri> Plugin URL or iframe source |
| icon | string Plugin icon identifier |
| category | string Enum: "productivity" "communication" "analytics" "integration" "other" Plugin category |
| active | boolean Default: true Whether plugin is currently active/enabled |
{- "name": "string",
- "description": { },
- "originLanguage": "string",
- "icon": "string",
- "category": "productivity",
- "active": true
}{- "_id": "string",
- "name": "string",
- "description": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "icon": "string",
- "category": "productivity",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a specific marketplace plugin by ID
| _id required | string ID of marketplace to return |
{- "_id": "string",
- "name": "string",
- "description": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "icon": "string",
- "category": "productivity",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire plugin configuration. [Admin only]
| _id required | string ID of marketplace to update |
| name required | string Plugin name for internal reference |
| description | object Multi-language plugin description |
| originLanguage | string Original language for plugin text |
| url required | string <uri> Plugin URL or iframe source |
| icon | string Plugin icon identifier |
| category | string Enum: "productivity" "communication" "analytics" "integration" "other" Plugin category |
| active | boolean Default: true Whether plugin is currently active/enabled |
{- "name": "string",
- "description": { },
- "originLanguage": "string",
- "icon": "string",
- "category": "productivity",
- "active": true
}{- "_id": "string",
- "name": "string",
- "description": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "icon": "string",
- "category": "productivity",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific plugin fields. [Admin only]
| _id required | string ID of marketplace to update |
| name required | string Plugin name for internal reference |
| description | object Multi-language plugin description |
| originLanguage | string Original language for plugin text |
| url required | string <uri> Plugin URL or iframe source |
| icon | string Plugin icon identifier |
| category | string Enum: "productivity" "communication" "analytics" "integration" "other" Plugin category |
| active | boolean Default: true Whether plugin is currently active/enabled |
{- "name": "string",
- "description": { },
- "originLanguage": "string",
- "icon": "string",
- "category": "productivity",
- "active": true
}{- "_id": "string",
- "name": "string",
- "description": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "icon": "string",
- "category": "productivity",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a marketplace plugin. [Admin only]
| _id required | string ID of marketplace to remove |
{- "_id": "string",
- "name": "string",
- "description": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "string",
- "createdBy": "string"
}
], - "icon": "string",
- "category": "productivity",
- "active": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Notification management service for user notifications. Handles notification creation, delivery, and status tracking (read/unread, new/seen).
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve notifications for the current user. Automatically filtered by recipient (logged-in user)
| notificationType | string Enum: "like" "comment" "mention" "task" "content" "system" Filter by notification type |
| read | boolean Filter by read status |
| new | boolean Filter by new status (unseen notifications) |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "notificationType": "like",
- "recipient": "string",
- "read": false,
- "new": true,
- "notificationData": {
- "contentId": "string",
- "taskId": "string",
- "commentId": "string",
- "message": "string"
}, - "otherUsers": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new notification. [Internal only] Notifications are typically created by system events
| notificationType required | string Enum: "like" "comment" "mention" "task" "content" "system" "event" Type of notification |
| recipient required | string <objectId> User who receives this notification |
| read | boolean Default: false Whether the recipient has read the notification |
| new | boolean Default: true Whether the notification is new/unseen |
object Notification-specific data (content varies by notification type) | |
| otherUsers | integer >= 0 Number of other users involved in this notification (e.g., for grouped likes) |
{- "notificationType": "like",
- "recipient": "string",
- "read": false,
- "new": true,
- "notificationData": {
- "contentId": "string",
- "taskId": "string",
- "commentId": "string",
- "message": "string"
}, - "otherUsers": 0
}{- "_id": "string",
- "notificationType": "like",
- "recipient": "string",
- "read": false,
- "new": true,
- "notificationData": {
- "contentId": "string",
- "taskId": "string",
- "commentId": "string",
- "message": "string"
}, - "otherUsers": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single notification by ID
| _id required | string ID of notifications to return |
{- "_id": "string",
- "notificationType": "like",
- "recipient": "string",
- "read": false,
- "new": true,
- "notificationData": {
- "contentId": "string",
- "taskId": "string",
- "commentId": "string",
- "message": "string"
}, - "otherUsers": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Bulk update notification statuses for current user. Supports two actions:
markAllRead: Mark all notifications as readmarkAllNonNew: Mark all notifications as seen (not new)| _id required | string ID of notifications to update |
| action required | string Enum: "markAllRead" "markAllNonNew" Bulk action to perform on all notifications for current user |
{- "action": "markAllRead"
}{- "_id": "string",
- "notificationType": "like",
- "recipient": "string",
- "read": false,
- "new": true,
- "notificationData": {
- "contentId": "string",
- "taskId": "string",
- "commentId": "string",
- "message": "string"
}, - "otherUsers": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update a single notification status (mark as read or seen)
| _id required | string ID of notifications to update |
| read | boolean Set read status |
| new | boolean Set new/seen status |
{- "read": true,
- "new": true
}{- "_id": "string",
- "notificationType": "like",
- "recipient": "string",
- "read": false,
- "new": true,
- "notificationData": {
- "contentId": "string",
- "taskId": "string",
- "commentId": "string",
- "message": "string"
}, - "otherUsers": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a notification
| _id required | string ID of notifications to remove |
{- "_id": "string",
- "notificationType": "like",
- "recipient": "string",
- "read": false,
- "new": true,
- "notificationData": {
- "contentId": "string",
- "taskId": "string",
- "commentId": "string",
- "message": "string"
}, - "otherUsers": 0,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Organization attribute category management service. Categories group related organization attributes for better organization and filtering (e.g., "Location Attributes", "Operational Attributes", "Contact Attributes").
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all organization attribute categories
| lang | string Language code for category name translation |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new organization attribute category. [Admin only]
| _id required | string Unique identifier (must be manually specified) |
| name required | object Multi-language category name (e.g., {"en": "Location Attributes", "nl": "Locatie Attributen"}) |
| originLanguage required | string Language code for original category name |
{- "_id": "string",
- "name": { },
- "originLanguage": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single organization attribute category by ID
| lang | string Language code for category name translation |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire organization attribute category. [Admin only]
| _id required | string ID of orgattributecategories to update |
| _id required | string Unique identifier (must be manually specified) |
| name required | object Multi-language category name (e.g., {"en": "Location Attributes", "nl": "Locatie Attributen"}) |
| originLanguage required | string Language code for original category name |
{- "_id": "string",
- "name": { },
- "originLanguage": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update organization attribute category. [Admin only]
| _id required | string ID of orgattributecategories to update |
| _id required | string Unique identifier (must be manually specified) |
| name required | object Multi-language category name (e.g., {"en": "Location Attributes", "nl": "Locatie Attributen"}) |
| originLanguage required | string Language code for original category name |
{- "_id": "string",
- "name": { },
- "originLanguage": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete an organization attribute category. Warning: Cannot delete if attributes exist in this category. [Admin only]
| _id required | string ID of orgattributecategories to remove |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Organization attribute management service. Attributes are additional metadata that can be assigned to organization chart nodes (e.g., "Second Floor", "City Center", "Open 24/7"). Used for advanced filtering and targeting.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all organization attributes with optional language filtering
| category | string <objectId> Filter by category ID |
| lang | string Language code for attribute name translation |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new organization attribute. [Admin only]
| _id required | string Unique identifier (must be manually specified) |
| name required | object Multi-language attribute name (e.g., {"en": "Second Floor", "nl": "Tweede Verdieping"}) |
| originLanguage required | string Language code for original attribute name |
| imported | boolean Whether attribute was imported from external system (true) or manually created (false) |
| category required | string <objectId> Reference to organization attribute category for grouping |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single organization attribute by ID
| lang | string Language code for attribute name translation |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire organization attribute. [Admin only]
| _id required | string ID of orgattributes to update |
| _id required | string Unique identifier (must be manually specified) |
| name required | object Multi-language attribute name (e.g., {"en": "Second Floor", "nl": "Tweede Verdieping"}) |
| originLanguage required | string Language code for original attribute name |
| imported | boolean Whether attribute was imported from external system (true) or manually created (false) |
| category required | string <objectId> Reference to organization attribute category for grouping |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update organization attribute. [Admin only]
| _id required | string ID of orgattributes to update |
| _id required | string Unique identifier (must be manually specified) |
| name required | object Multi-language attribute name (e.g., {"en": "Second Floor", "nl": "Tweede Verdieping"}) |
| originLanguage required | string Language code for original attribute name |
| imported | boolean Whether attribute was imported from external system (true) or manually created (false) |
| category required | string <objectId> Reference to organization attribute category for grouping |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string"
}{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete an organization attribute. Warning: Removes from all org chart nodes using it. [Admin only]
| _id required | string ID of orgattributes to remove |
{- "_id": "string",
- "name": { },
- "originLanguage": "string",
- "imported": true,
- "category": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Organization chart management service. Manages hierarchical organizational structure with nodes representing departments, locations, teams, etc.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve organization chart nodes with optional filtering by parent, ancestors, type, or user access
| parent | string <objectId> Filter by parent node ID (null for root nodes) |
| ancestors | string Filter by ancestor node ID (returns all descendants) |
| filterByUser | string Filter nodes accessible to specific user ID (based on user permissions) |
| type | string <objectId> Filter by organization type ID |
| allFields | boolean Include all fields in response (by default, returns limited fields for performance) |
| lang | string Language code for translated fields |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "namepath": "string",
- "idpath": "string",
- "parent": "string",
- "ancestors": [
- "string"
], - "children": [
- "string"
], - "attributes": { },
- "externalRef": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new organization chart node. Automatically updates hierarchical structure (ancestors, children). [Admin only]
| _id required | string Unique identifier (must be manually specified for org chart nodes) |
| name required | string Node name (should be unique among siblings) |
| type | string <objectId> Reference to organization type (defines node category) |
| profilePicture | string S3 path to node profile image/logo |
| generalInformation | object Multi-language textual description (e.g., {"en": "Main Office", "nl": "Hoofdkantoor"}) |
object Contact details for this organizational node | |
| additionalInformation | object Custom key-value pairs for additional data |
Array of objects Opening hours schedule (ISO weekday format) | |
| excludeFromContacts | boolean If true, exclude this node from contact search results |
| parent required | string Parent node ID. All nodes must have a parent except root (cannot create/delete root) |
| attributes | object Organization attributes assigned to this node (references orgattributes collection) |
| externalRef | string External system reference/ID for integration |
| originLanguage | string Language code for original content |
{- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "parent": "string",
- "attributes": { },
- "externalRef": "string",
- "originLanguage": "string"
}{- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "namepath": "string",
- "idpath": "string",
- "parent": "string",
- "ancestors": [
- "string"
], - "children": [
- "string"
], - "attributes": { },
- "externalRef": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single organization chart node by ID
| lang | string Language code for translated fields |
{- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "namepath": "string",
- "idpath": "string",
- "parent": "string",
- "ancestors": [
- "string"
], - "children": [
- "string"
], - "attributes": { },
- "externalRef": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Bulk update multiple nodes in a single operation (max 100 nodes). Avoids multiple structure rebuilds. Provide _id in each object to update. [Admin only]
| id required | string ID of orgchart to update |
| _id required | string Unique identifier (must be manually specified for org chart nodes) |
| name required | string Node name (should be unique among siblings) |
| type | string <objectId> Reference to organization type (defines node category) |
| profilePicture | string S3 path to node profile image/logo |
| generalInformation | object Multi-language textual description (e.g., {"en": "Main Office", "nl": "Hoofdkantoor"}) |
object Contact details for this organizational node | |
| additionalInformation | object Custom key-value pairs for additional data |
Array of objects Opening hours schedule (ISO weekday format) | |
| excludeFromContacts | boolean If true, exclude this node from contact search results |
| parent required | string Parent node ID. All nodes must have a parent except root (cannot create/delete root) |
| attributes | object Organization attributes assigned to this node (references orgattributes collection) |
| externalRef | string External system reference/ID for integration |
| originLanguage | string Language code for original content |
[- {
- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "parent": "string",
- "attributes": { },
- "externalRef": "string",
- "originLanguage": "string"
}
]{- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "namepath": "string",
- "idpath": "string",
- "parent": "string",
- "ancestors": [
- "string"
], - "children": [
- "string"
], - "attributes": { },
- "externalRef": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields of an organization chart node. [Admin/Supervisor only]
| id required | string ID of orgchart to update |
| _id required | string Unique identifier (must be manually specified for org chart nodes) |
| name required | string Node name (should be unique among siblings) |
| type | string <objectId> Reference to organization type (defines node category) |
| profilePicture | string S3 path to node profile image/logo |
| generalInformation | object Multi-language textual description (e.g., {"en": "Main Office", "nl": "Hoofdkantoor"}) |
object Contact details for this organizational node | |
| additionalInformation | object Custom key-value pairs for additional data |
Array of objects Opening hours schedule (ISO weekday format) | |
| excludeFromContacts | boolean If true, exclude this node from contact search results |
| parent required | string Parent node ID. All nodes must have a parent except root (cannot create/delete root) |
| attributes | object Organization attributes assigned to this node (references orgattributes collection) |
| externalRef | string External system reference/ID for integration |
| originLanguage | string Language code for original content |
{- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "parent": "string",
- "attributes": { },
- "externalRef": "string",
- "originLanguage": "string"
}{- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "namepath": "string",
- "idpath": "string",
- "parent": "string",
- "ancestors": [
- "string"
], - "children": [
- "string"
], - "attributes": { },
- "externalRef": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete an organization chart node. Validates no references exist (users, content, etc.) unless force=true. Use dryrun=true to check if deletion is possible. [Admin only]
| force | boolean Force deletion even if references exist (orphans related data) |
| dryrun | boolean Dry run - check if node can be deleted without making changes. Returns validation report |
{- "_id": "string",
- "name": "string",
- "type": "string",
- "profilePicture": "string",
- "generalInformation": { },
- "contactInformation": {
- "phone1": "string",
- "phone2": "string",
- "email1": "user@example.com",
- "email2": "user@example.com",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "zipcode": "string",
- "country": "string"
}, - "additionalInformation": { },
- "openingTimes": [
- {
- "isoweekday": 1,
- "open": 0,
- "close": 0
}
], - "excludeFromContacts": true,
- "namepath": "string",
- "idpath": "string",
- "parent": "string",
- "ancestors": [
- "string"
], - "children": [
- "string"
], - "attributes": { },
- "externalRef": "string",
- "originLanguage": "string",
- "translators": [
- {
- "lang": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": "string"
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Organization type management service. Defines categories for organization chart nodes (e.g., "Department", "Store", "Region"). Supports hierarchical organization type structures.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all organization types. Accessible to all users
| parent | string Filter by parent type ID (for hierarchical types) |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new organization type. [System only]
| _id required | string Unique identifier (must be manually specified) |
| name required | string Organization type name (e.g., "Store", "Department", "Region") |
| imported | boolean Whether type was imported from external system (true) or manually created (false) |
| description | string Textual description of the organization type |
| orderIndex | integer Sort order for display (lower numbers appear first) |
| parent | string Parent type ID for hierarchical organization types |
{- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string"
}{- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single organization type by ID. Accessible to all users
| _id required | string ID of orgtypes to return |
{- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire organization type. [System only]
| _id required | string ID of orgtypes to update |
| _id required | string Unique identifier (must be manually specified) |
| name required | string Organization type name (e.g., "Store", "Department", "Region") |
| imported | boolean Whether type was imported from external system (true) or manually created (false) |
| description | string Textual description of the organization type |
| orderIndex | integer Sort order for display (lower numbers appear first) |
| parent | string Parent type ID for hierarchical organization types |
{- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string"
}{- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update organization type. [System only]
| _id required | string ID of orgtypes to update |
| _id required | string Unique identifier (must be manually specified) |
| name required | string Organization type name (e.g., "Store", "Department", "Region") |
| imported | boolean Whether type was imported from external system (true) or manually created (false) |
| description | string Textual description of the organization type |
| orderIndex | integer Sort order for display (lower numbers appear first) |
| parent | string Parent type ID for hierarchical organization types |
{- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string"
}{- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete an organization type. Warning: Cannot delete if nodes are using this type. [System only]
| _id required | string ID of orgtypes to remove |
{- "_id": "string",
- "name": "string",
- "imported": true,
- "description": "string",
- "orderIndex": 0,
- "parent": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Page navigation service for managing application pages and navigation structure. Typically uses a single configuration document. Pages are automatically filtered by user permissions (orgunits and groups).
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve page configuration. Returns pages filtered by current user permissions unless user has navigation.admin role
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (pages) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "orgunits": [
- "string"
], - "groups": { }
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create page configuration. [Admin only]
required | Array of objects Array of pages in navigation structure |
{- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": { }
}
]
}{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "orgunits": [
- "string"
], - "groups": { }
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve specific page configuration by ID
| id required | string ID of pages to return |
{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "orgunits": [
- "string"
], - "groups": { }
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire page configuration. Triggers pagesChanged event. [Admin only]
| id required | string ID of pages to update |
required | Array of objects Array of pages in navigation structure |
{- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": { }
}
]
}{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "orgunits": [
- "string"
], - "groups": { }
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields in page configuration. Triggers pagesChanged event. [Admin only]
| id required | string ID of pages to update |
required | Array of objects Array of pages in navigation structure |
{- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": { }
}
]
}{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "orgunits": [
- "string"
], - "groups": { }
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete page configuration. [Admin only]
| id required | string ID of pages to remove |
{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "orgunits": [
- "string"
], - "groups": { }
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Permission management service for defining granular access controls. Permissions are assigned to roles which are then assigned to users.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve available permissions in the system. Access is limited to users with roles.admin or configs.admin.
| category | string Filter permissions by category. Leading and trailing whitespace is trimmed. |
| isSuperAdminPermission | boolean Boolean filter for super-admin permissions. When set to |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new permission. [System only]
| value required | string Permission identifier (e.g., "content.create", "user.manage", "reports.view") |
| description | string Human-readable description of what this permission grants |
| category | string Permission category for grouping (e.g., "content", "users", "administration") |
| isSuperAdminPermission | boolean Indicates whether the permission is reserved for super-admin or Keephub admin functionality |
{- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true
}{- "_id": "string",
- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single permission by ID
| _id required | string ID of permissions to return |
{- "_id": "string",
- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire permission. [System only]
| _id required | string ID of permissions to update |
| value required | string Permission identifier (e.g., "content.create", "user.manage", "reports.view") |
| description | string Human-readable description of what this permission grants |
| category | string Permission category for grouping (e.g., "content", "users", "administration") |
| isSuperAdminPermission | boolean Indicates whether the permission is reserved for super-admin or Keephub admin functionality |
{- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true
}{- "_id": "string",
- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update permission. [System only]
| _id required | string ID of permissions to update |
| value required | string Permission identifier (e.g., "content.create", "user.manage", "reports.view") |
| description | string Human-readable description of what this permission grants |
| category | string Permission category for grouping (e.g., "content", "users", "administration") |
| isSuperAdminPermission | boolean Indicates whether the permission is reserved for super-admin or Keephub admin functionality |
{- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true
}{- "_id": "string",
- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a permission. Warning: Roles using this permission will lose access. [System only]
| _id required | string ID of permissions to remove |
{- "_id": "string",
- "value": "string",
- "description": "string",
- "category": "string",
- "isSuperAdminPermission": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Push message management service for creating and tracking push notification messages. Messages are queued and processed by background workers. Supports multi-create for batch operations.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve push messages with status tracking
| status | string Enum: "new" "converted" "processed" "failed" Filter by message status |
| origin | string Enum: "content" "task" "comment" "system" Filter by origin type |
| originId | string Filter by origin entity ID |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create push message(s) for delivery. Supports batch creation with array input. [Internal only]
| status | string Default: "new" Enum: "new" "converted" "processed" "failed" Processing status of the push message |
| sendTime | string <date-time> Scheduled time for push delivery |
| message required | string Push notification message text |
| title | string Push notification title |
| origin required | string Enum: "content" "task" "comment" "system" "chat" Type of entity that triggered the push notification |
| originId required | string <objectId> ID of the entity that triggered the push |
| userId | string <objectId> Target user ID for the push notification |
| data | object Additional data payload for the push notification |
[ ]{- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates multiple resources.
| total | number Pagination response, total number of results |
| limit | number Pagination response, result set is limited to |
| skip | number Pagination response, results skipped |
Array of objects (pushmessages) Actual data |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { }
}
]
}{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Updates multiple resources queried by given filters.
object (pushmessages) Query parameters to filter |
| status | string Default: "new" Enum: "new" "converted" "processed" "failed" Processing status of the push message |
| sendTime | string <date-time> Scheduled time for push delivery |
| message required | string Push notification message text |
| title | string Push notification title |
| origin required | string Enum: "content" "task" "comment" "system" "chat" Type of entity that triggered the push notification |
| originId required | string <objectId> ID of the entity that triggered the push |
| userId | string <objectId> Target user ID for the push notification |
| data | object Additional data payload for the push notification |
{- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { }
}{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Removes multiple resources queried by given filters.
object (pushmessages) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Retrieve a single push message by ID
| _id required | string ID of pushmessages to return |
{- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire push message. [Internal only]
| _id required | string ID of pushmessages to update |
| status | string Default: "new" Enum: "new" "converted" "processed" "failed" Processing status of the push message |
| sendTime | string <date-time> Scheduled time for push delivery |
| message required | string Push notification message text |
| title | string Push notification title |
| origin required | string Enum: "content" "task" "comment" "system" "chat" Type of entity that triggered the push notification |
| originId required | string <objectId> ID of the entity that triggered the push |
| userId | string <objectId> Target user ID for the push notification |
| data | object Additional data payload for the push notification |
{- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { }
}{- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update push message status or fields. [Internal only]
| _id required | string ID of pushmessages to update |
| status | string Default: "new" Enum: "new" "converted" "processed" "failed" Processing status of the push message |
| sendTime | string <date-time> Scheduled time for push delivery |
| message required | string Push notification message text |
| title | string Push notification title |
| origin required | string Enum: "content" "task" "comment" "system" "chat" Type of entity that triggered the push notification |
| originId required | string <objectId> ID of the entity that triggered the push |
| userId | string <objectId> Target user ID for the push notification |
| data | object Additional data payload for the push notification |
{- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { }
}{- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a push message. [Internal only]
| _id required | string ID of pushmessages to remove |
{- "_id": "string",
- "status": "new",
- "sendTime": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "origin": "content",
- "originId": "string",
- "userId": "string",
- "data": { },
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Push message queue service for managing individual push notification delivery attempts. Each queue entry represents a push message to a specific user/device. [Internal only] Managed by background workers.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve push message queue entries with status tracking
| status | string Enum: "pending" "sent" "failed" "retry" Filter by queue entry status |
| pushMessage | string <objectId> Filter by push message reference |
| userId | string Filter by user ID |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "sentAt": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0,
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create queue entry for push delivery. [Internal only]
| pushMessage required | string <objectId> Reference to parent push message |
| userId required | string <objectId> Target user for this queue entry |
| status | string Default: "pending" Enum: "pending" "sent" "failed" "retry" Delivery status of this queue entry |
| message | string Resolved message text for this user |
| title | string Resolved notification title |
| deviceToken | string FCM/APNS device token for delivery |
| platform | string Enum: "ios" "android" "web" Target platform |
| retryCount | integer Default: 0 Number of delivery retry attempts |
{- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0
}{- "_id": "string",
- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "sentAt": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0,
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single queue entry by ID
| _id required | string ID of pushmessagesqueue to return |
{- "_id": "string",
- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "sentAt": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0,
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire queue entry. [Internal only]
| _id required | string ID of pushmessagesqueue to update |
| pushMessage required | string <objectId> Reference to parent push message |
| userId required | string <objectId> Target user for this queue entry |
| status | string Default: "pending" Enum: "pending" "sent" "failed" "retry" Delivery status of this queue entry |
| message | string Resolved message text for this user |
| title | string Resolved notification title |
| deviceToken | string FCM/APNS device token for delivery |
| platform | string Enum: "ios" "android" "web" Target platform |
| retryCount | integer Default: 0 Number of delivery retry attempts |
{- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0
}{- "_id": "string",
- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "sentAt": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0,
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update queue entry status. [Internal only]
| _id required | string ID of pushmessagesqueue to update |
| pushMessage required | string <objectId> Reference to parent push message |
| userId required | string <objectId> Target user for this queue entry |
| status | string Default: "pending" Enum: "pending" "sent" "failed" "retry" Delivery status of this queue entry |
| message | string Resolved message text for this user |
| title | string Resolved notification title |
| deviceToken | string FCM/APNS device token for delivery |
| platform | string Enum: "ios" "android" "web" Target platform |
| retryCount | integer Default: 0 Number of delivery retry attempts |
{- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0
}{- "_id": "string",
- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "sentAt": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0,
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a queue entry. [Internal only]
| _id required | string ID of pushmessagesqueue to remove |
{- "_id": "string",
- "pushMessage": "string",
- "userId": "string",
- "status": "pending",
- "sentAt": "2019-08-24T14:15:22Z",
- "message": "string",
- "title": "string",
- "deviceToken": "string",
- "platform": "ios",
- "retryCount": 0,
- "errorMessage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}A service for getting client specific translations overrides for push notifications
Get client specific translations overrides for push notifications
| $limit | any Number of results to return |
| $skip | any Number of results to skip |
| $sort | any Property to sort results |
| $select[] | any Select list of fields for results |
| disableTranslationsFilter | any Disable translation filter for this service (if present) |
| cid | any Client ID |
{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Creates a new resource with data.
| type | string Specific types of push notifications |
| title | object Client specific translations overrides for push notifications |
| createdBy | string Field populated by system, reference to user who created translation for one of the push notifications |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated translation for one of the push notifications |
| updatedAt | string Field populated by system, timestamp of last update |
{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Retrieves a single resource with the given id from the service.
| _id required | string ID of pushnotificationsettings to return |
{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Updates the resource identified by id using data.
| _id required | string ID of pushnotificationsettings to update |
| type | string Specific types of push notifications |
| title | object Client specific translations overrides for push notifications |
| createdBy | string Field populated by system, reference to user who created translation for one of the push notifications |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated translation for one of the push notifications |
| updatedAt | string Field populated by system, timestamp of last update |
{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Updates the resource identified by id using data.
| _id required | string ID of pushnotificationsettings to update |
| type | string Specific types of push notifications |
| title | object Client specific translations overrides for push notifications |
| createdBy | string Field populated by system, reference to user who created translation for one of the push notifications |
| createdAt | string Field populated by system, timestamp of creation |
| updatedBy | string Field populated by system, reference to user who updated translation for one of the push notifications |
| updatedAt | string Field populated by system, timestamp of last update |
{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Removes the resource with id.
| _id required | string ID of pushnotificationsettings to remove |
{- "type": "string",
- "title": { },
- "createdBy": "string",
- "createdAt": "string",
- "updatedBy": "string",
- "updatedAt": "string"
}Push subscription management service for device registration. Users register their devices to receive push notifications. Subscriptions are active when loggedOn=true AND pushPermission=true.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve user push subscriptions. Users can only see their own subscriptions
| createdBy | string Filter by user ID (restricted to current user) |
| platform | string Enum: "ios" "android" "web" Filter by platform |
| loggedOn | boolean Filter by logged on status |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "udid": "string",
- "pushPermission": false,
- "lastRequest": "2019-08-24T14:15:22Z",
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Register device for push notifications. Creates subscription with device tokens and platform info
| udid required | string Unique device identifier (UUID for mobile, generated for web) |
| pushPermission | boolean Default: false Whether user granted push notification permission |
| platform required | string Enum: "ios" "android" "web" Device platform type |
| pushToken | string FCM push token (used by Android and Web) |
| apnsPushToken | string APNs push token (iOS only) |
| subscriptionId | string Deprecated Deprecated - kept for backward compatibility |
| loggedOn | boolean Default: true Whether user is currently logged into the app on this device |
| update | boolean Deprecated Deprecated - kept for backward compatibility |
| deviceInfo | object Additional device information (OS version, app version, etc.) |
{- "udid": "string",
- "pushPermission": false,
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { }
}{- "_id": "string",
- "udid": "string",
- "pushPermission": false,
- "lastRequest": "2019-08-24T14:15:22Z",
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single push subscription by ID
| _id required | string ID of pushsubscriptions to return |
{- "_id": "string",
- "udid": "string",
- "pushPermission": false,
- "lastRequest": "2019-08-24T14:15:22Z",
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire push subscription
| _id required | string ID of pushsubscriptions to update |
| udid required | string Unique device identifier (UUID for mobile, generated for web) |
| pushPermission | boolean Default: false Whether user granted push notification permission |
| platform required | string Enum: "ios" "android" "web" Device platform type |
| pushToken | string FCM push token (used by Android and Web) |
| apnsPushToken | string APNs push token (iOS only) |
| subscriptionId | string Deprecated Deprecated - kept for backward compatibility |
| loggedOn | boolean Default: true Whether user is currently logged into the app on this device |
| update | boolean Deprecated Deprecated - kept for backward compatibility |
| deviceInfo | object Additional device information (OS version, app version, etc.) |
{- "udid": "string",
- "pushPermission": false,
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { }
}{- "_id": "string",
- "udid": "string",
- "pushPermission": false,
- "lastRequest": "2019-08-24T14:15:22Z",
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update push subscription (e.g., update tokens, logged on status, permissions)
| _id required | string ID of pushsubscriptions to update |
| udid required | string Unique device identifier (UUID for mobile, generated for web) |
| pushPermission | boolean Default: false Whether user granted push notification permission |
| platform required | string Enum: "ios" "android" "web" Device platform type |
| pushToken | string FCM push token (used by Android and Web) |
| apnsPushToken | string APNs push token (iOS only) |
| subscriptionId | string Deprecated Deprecated - kept for backward compatibility |
| loggedOn | boolean Default: true Whether user is currently logged into the app on this device |
| update | boolean Deprecated Deprecated - kept for backward compatibility |
| deviceInfo | object Additional device information (OS version, app version, etc.) |
{- "udid": "string",
- "pushPermission": false,
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { }
}{- "_id": "string",
- "udid": "string",
- "pushPermission": false,
- "lastRequest": "2019-08-24T14:15:22Z",
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Unregister device from push notifications
| _id required | string ID of pushsubscriptions to remove |
{- "_id": "string",
- "udid": "string",
- "pushPermission": false,
- "lastRequest": "2019-08-24T14:15:22Z",
- "platform": "ios",
- "pushToken": "string",
- "apnsPushToken": "string",
- "subscriptionId": "string",
- "loggedOn": true,
- "update": true,
- "deviceInfo": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Reach calculation service for determining how many users will be targeted by content, tasks, or navigation based on filters. Helps content creators understand audience size before publishing.
Note: This is a create-only service that returns calculated reach metrics.
Calculate reach based on targeting parameters. Supports three query types:
orgUnitBelong: Count users in specific org unitsrelevantParams: Get suggested targeting parameterscalculateReach: Calculate total reach with all filters applied| type required | string Enum: "orgUnitBelong" "relevantParams" "calculateReach" Type of reach calculation to perform |
| contentPool | string <objectId> Content pool ID (for content/folders). If orgtype is defined in CP, orgchartSelection is ignored relative to user position |
object Organization chart selection for targeting | |
object Organization attribute filters | |
object Group targeting configuration | |
| onlyActiveUsers | boolean Default: false Include only active users in reach calculation |
| firstLoginDone | boolean Default: false Include only users who have completed first login (not used for calculateReach) |
| excludeFromTasks | boolean Default: false Exclude users marked as excluded from tasks |
{- "type": "orgUnitBelong",
- "contentPool": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": {
- "include": [
- [
- "string"
]
], - "exclude": [
- [
- "string"
]
]
}, - "groups": {
- "exclude": true,
- "selection": [
- "string"
]
}, - "onlyActiveUsers": false,
- "firstLoginDone": false,
- "excludeFromTasks": false
}{- "reach": 0,
- "orgunits": [
- "string"
], - "groups": [
- "string"
]
}Reaction management service for content and comments (likes, etc.). Users can add or remove reactions but not edit them. One reaction per user per item.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve reactions for specific content or comment. Must provide either contentsref or commentref with type
| contentsref | string <objectId> Filter by content ID (for content reactions) |
| commentref | string <objectId> Filter by comment ID (for comment reactions) |
| type | string Enum: "messageReaction" "commentReaction" Reaction type |
| createdBy | string Filter by reaction creator user ID |
| reaction | string Filter by reaction emoji/icon |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "type": "messageReaction",
- "reaction": "string",
- "contentsref": "string",
- "commentref": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Add a new reaction to content or comment. Requirements:
| type required | string Enum: "messageReaction" "commentReaction" Type of reaction target |
| reaction required | string Reaction emoji or icon identifier (e.g., "👍", "❤️", "like") |
| contentsref | string <objectId> Reference to content (required for messageReaction) |
| commentref | string <objectId> Reference to comment (required for commentReaction) |
{- "type": "messageReaction",
- "reaction": "string",
- "contentsref": "string",
- "commentref": "string"
}{- "_id": "string",
- "type": "messageReaction",
- "reaction": "string",
- "contentsref": "string",
- "commentref": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates the resource identified by id using data.
| id required | string ID of reactions to update |
| type required | string Enum: "messageReaction" "commentReaction" Type of reaction target |
| reaction required | string Reaction emoji or icon identifier (e.g., "👍", "❤️", "like") |
| contentsref | string <objectId> Reference to content (required for messageReaction) |
| commentref | string <objectId> Reference to comment (required for commentReaction) |
{- "type": "messageReaction",
- "reaction": "string",
- "contentsref": "string",
- "commentref": "string"
}{- "_id": "string",
- "type": "messageReaction",
- "reaction": "string",
- "contentsref": "string",
- "commentref": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Remove a reaction by reaction ID. Only the creator or admins can remove reactions
| id required | string ID of reactions to remove |
{- "_id": "string",
- "type": "messageReaction",
- "reaction": "string",
- "contentsref": "string",
- "commentref": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Reports generation service for analytics and insights. Generates various report types including user activity, content engagement, and gamification metrics over specified time periods.
Note: This is a create-only service that generates and returns report data based on specified parameters.
Generate a report based on specified parameters. Supports various report types:
Common report types include:
activeUsersBasedOnLastActivity: User login activity percentagescontentEngagement: Content view and interaction metricstaskCompletion: Task completion rates over timepointsDistribution: Gamification points distribution| reportType required | string Enum: "activeUsersBasedOnLastActivity" "contentWeeklyReport" "taskMonthlyReport" "usersForUsageReport" "turnoverRate" "adoptionRate" "userActivityHeatMap" "searchResults" "averageResults" "averageUseStats" Type of report to generate. Options: activeUsersBasedOnLastActivity, contentWeeklyReport, taskMonthlyReport, usersForUsageReport, turnoverRate, adoptionRate, userActivityHeatMap, searchResults, averageResults, averageUseStats |
| pointType | string Enum: "all" "ever" "24h" "7d" "30d" "month" "never" "last12weeks" Time granularity for data points. Options: all, ever, 24h, 7d, 30d, month, never, last12weeks |
| startDate required | string <date-time> Start date of reporting period |
| endDate required | string <date-time> End date of reporting period (can be in the future for projections) |
| orgunits | Array of strings <objectId> [ items <objectId > ] Filter by specific organization units |
| groups | Array of strings <objectId> [ items <objectId > ] Filter by specific groups |
| contentPools | Array of strings <objectId> [ items <objectId > ] Filter by specific content pools |
{- "reportType": "activeUsersBasedOnLastActivity",
- "pointType": "all",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "contentPools": [
- "string"
]
}[- {
- "_id": "string",
- "date": "2019-08-24T14:15:22Z",
- "ref": "string",
- "meta": { },
- "data": {
- "count": 0,
- "percentage": 0,
- "trend": "up"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]Reward/achievement system service for gamification. Defines rewards that are automatically granted to users based on query conditions (e.g., completing tasks, reaching milestones).
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all reward definitions
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (rewards) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new reward definition with query pipeline. [Admin only]
| rewardType required | string Enum: "achievement" "milestone" "activity" "contribution" Type of reward |
| points | number >= 0 Number of points awarded to user |
| coins | number >= 0 Number of coins awarded to user |
| pipeline required | string MongoDB aggregation pipeline (JSON string) to find eligible users |
| collectionName required | string Collection name on which pipeline query is executed |
| description | string Reward description explaining what triggers it |
| title | string Reward title displayed to users |
| oneTimeReward | boolean Default: false If true, reward is granted only once per user; if false, granted every time condition is met |
| active | boolean Default: true Whether reward is currently active |
| icon | string Icon identifier for reward badge |
{- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string"
}{- "_id": "string",
- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a specific reward by ID
| _id required | string ID of rewards to return |
{- "_id": "string",
- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire reward configuration. [Admin only]
| _id required | string ID of rewards to update |
| rewardType required | string Enum: "achievement" "milestone" "activity" "contribution" Type of reward |
| points | number >= 0 Number of points awarded to user |
| coins | number >= 0 Number of coins awarded to user |
| pipeline required | string MongoDB aggregation pipeline (JSON string) to find eligible users |
| collectionName required | string Collection name on which pipeline query is executed |
| description | string Reward description explaining what triggers it |
| title | string Reward title displayed to users |
| oneTimeReward | boolean Default: false If true, reward is granted only once per user; if false, granted every time condition is met |
| active | boolean Default: true Whether reward is currently active |
| icon | string Icon identifier for reward badge |
{- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string"
}{- "_id": "string",
- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific reward fields. [Admin only]
| _id required | string ID of rewards to update |
| rewardType required | string Enum: "achievement" "milestone" "activity" "contribution" Type of reward |
| points | number >= 0 Number of points awarded to user |
| coins | number >= 0 Number of coins awarded to user |
| pipeline required | string MongoDB aggregation pipeline (JSON string) to find eligible users |
| collectionName required | string Collection name on which pipeline query is executed |
| description | string Reward description explaining what triggers it |
| title | string Reward title displayed to users |
| oneTimeReward | boolean Default: false If true, reward is granted only once per user; if false, granted every time condition is met |
| active | boolean Default: true Whether reward is currently active |
| icon | string Icon identifier for reward badge |
{- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string"
}{- "_id": "string",
- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a reward definition. [Admin only]
| _id required | string ID of rewards to remove |
{- "_id": "string",
- "rewardType": "achievement",
- "points": 0,
- "coins": 0,
- "pipeline": "string",
- "collectionName": "string",
- "description": "string",
- "title": "string",
- "oneTimeReward": false,
- "active": true,
- "icon": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Role management service for defining user permission levels. Roles determine what actions users can perform in the system.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve roles. Results are filtered by the current user level to prevent privilege escalation unless the caller already has full role access. When management=true, each returned role also includes userCount.
| name | string Filter by an exact role name. |
| name.$search | string Case-insensitive partial search on role name. Minimum length: 3 characters. |
| roleTitle.$search | string Legacy alias for |
| default | boolean Filter roles by whether they are default roles. |
| isProtected | boolean Filter roles by whether they are protected from modification/deletion. |
| management | boolean When |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userCount": 0
}
]
}Create a new role with specified permissions. [Requires roles.admin or roles.system]
| name required | string Role name (e.g., "Content Manager", "Supervisor") |
| level required | string Enum: "user" "supervisor" "admin" "keephubAdmin" "system" Role hierarchy level determining access scope |
| default | boolean Indicates whether the role is a default system role |
| hidden | boolean Indicates whether the role is hidden from normal role selection flows |
| description | string Optional human-readable description of the role |
| isProtected | boolean Protected roles cannot be edited or deleted through the API |
| permissions | Array of strings <objectId> [ items <objectId > ] Permission IDs assigned to this role |
{- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
]
}{- "_id": "string",
- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userCount": 0
}Retrieve a single role by ID
| _id required | string ID of roles to return |
{- "_id": "string",
- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userCount": 0
}Replace entire role configuration. [Requires roles.admin or roles.system]
| _id required | string ID of roles to update |
| name required | string Role name (e.g., "Content Manager", "Supervisor") |
| level required | string Enum: "user" "supervisor" "admin" "keephubAdmin" "system" Role hierarchy level determining access scope |
| default | boolean Indicates whether the role is a default system role |
| hidden | boolean Indicates whether the role is hidden from normal role selection flows |
| description | string Optional human-readable description of the role |
| isProtected | boolean Protected roles cannot be edited or deleted through the API |
| permissions | Array of strings <objectId> [ items <objectId > ] Permission IDs assigned to this role |
{- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
]
}{- "_id": "string",
- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userCount": 0
}Partially update role permissions. [Requires roles.admin or roles.system]
| _id required | string ID of roles to update |
| name required | string Role name (e.g., "Content Manager", "Supervisor") |
| level required | string Enum: "user" "supervisor" "admin" "keephubAdmin" "system" Role hierarchy level determining access scope |
| default | boolean Indicates whether the role is a default system role |
| hidden | boolean Indicates whether the role is hidden from normal role selection flows |
| description | string Optional human-readable description of the role |
| isProtected | boolean Protected roles cannot be edited or deleted through the API |
| permissions | Array of strings <objectId> [ items <objectId > ] Permission IDs assigned to this role |
{- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
]
}{- "_id": "string",
- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userCount": 0
}Delete a role. Warning: Users with this role will lose associated permissions. [Requires roles.admin or roles.system]
| _id required | string ID of roles to remove |
{- "_id": "string",
- "name": "string",
- "level": "user",
- "default": true,
- "hidden": true,
- "description": "string",
- "isProtected": true,
- "permissions": [
- "string"
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userCount": 0
}Unified search service for finding content, users, tasks, and external resources. Supports Elasticsearch for internal content and optional SharePoint integration.
Search Types: contents, contacts, anniversary, externalcontents, folders, all
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Execute search across specified type with full-text search capabilities
| searchTerm | string Search term for full-text search |
| searchType required | string Enum: "contents" "contacts" "anniversary" "externalcontents" "folders" "all" Search type - determines what to search for |
| contactTypes | string Enum: "users" "orgunits" "externalcontacts" "all" Contact types filter (only for searchType=contacts). Multiple types comma-separated |
| anniversaryType | string Value: "birthdays" Anniversary type filter (only for searchType=anniversary) |
| contentType | string Enum: "news" "event" "poll" "manual" "faq" "form" "training" Content type filter (only for searchType=contents) |
| skipCurrentUser | boolean Exclude current user from search results |
| lang | string Language code for search results |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- { }
]
}Creates a new resource with data.
| $limit | any Number of results to return |
| $skip | any Number of results to skip |
| $sort | any Property to sort results |
| $select[] | any Select list of fields for results |
| disableTranslationsFilter | any Disable translation filter for this service (if present) |
| text | string Text that will be analyzed |
| originLanguage | string Language of supplied text |
{- "text": "string",
- "originLanguage": "string"
}{- "text": "string",
- "originLanguage": "string"
}Signed URL service for secure S3 file access and uploads. Generates pre-signed URLs for downloading attachments, videos, and uploading files. Also supports external plugin URL signing.
Origin Types: contentAttachment, contentTemplateAttachment, tasktemplateAttachment, taskAttachment, formValuesAttachment, externalAttachment, contentVideo, tasktemplateVideo, formValuesVideo, taskFormAnswer, externalPluginUrl, externalPluginProfile, lessonAttachment File Types (Lambda Hints): image, video, attachment, other
Generate signed URL for S3 operations or external plugin access.
For getObject (download):
origin and originId for access verificationstorageId to identify the fileFor putObject (upload):
contentType and fileTypesubFolder and fileNametextractDisable to skip PDF text extractionFor externalPlugin:
externalPluginUrl and externalPluginProfile| signType required | string Enum: "getObject" "putObject" "externalPlugin" Type of signing operation |
| origin | string Enum: "contentAttachment" "contentTemplateAttachment" "tasktemplateAttachment" "taskAttachment" "formValuesAttachment" "externalAttachment" "contentVideo" "tasktemplateVideo" "formValuesVideo" "taskFormAnswer" "externalPluginUrl" "externalPluginProfile" "lessonAttachment" Origin type for access verification (required for getObject). Options: contentAttachment, contentTemplateAttachment, tasktemplateAttachment, taskAttachment, formValuesAttachment, externalAttachment, contentVideo, tasktemplateVideo, formValuesVideo, taskFormAnswer, externalPluginUrl, externalPluginProfile, lessonAttachment |
| originId | string <objectId> ID of origin entity (content, task, form, etc.) for access verification (required for getObject) |
| storageId | string S3 storage identifier to sign (required for getObject) |
| contentType | string MIME type of file (required for putObject, e.g., "image/jpeg", "application/pdf") |
| fileType | string Enum: "image" "video" "attachment" "other" File type for Lambda processing hint (required for putObject). Options: image, video, attachment, other |
| subFolder | string Optional subfolder path when generating storageId (for putObject) |
| textractDisable | boolean Disable PDF text extraction Lambda processing (for putObject) |
| fileName | string Filename to append to S3 path (for putObject) |
| attachment | boolean Default: false Set Content-Disposition to attachment for downloads (for getObject) |
| url | string <uri> External URL to sign (for externalPlugin with origin=externalPluginUrl) |
{- "signType": "getObject",
- "origin": "contentAttachment",
- "originId": "string",
- "storageId": "string",
- "contentType": "string",
- "fileType": "image",
- "subFolder": "string",
- "textractDisable": true,
- "fileName": "string",
- "attachment": false,
}{- "storageId": "string",
- "expiresIn": 0
}System task management service for creating automated query-based tasks. System tasks execute database queries to find content/items requiring action (e.g., untranslated content, pending approvals) and present them as tasks to designated users.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all system task definitions. [Admin only]
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (systemtasks) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new system task with query definition. [Admin only]
| title required | string System task display title (e.g., "Translation Requests", "Pending Approvals") |
| query required | string MongoDB aggregation query (as JSON string) to find items requiring action. Must return minimum fields: _id, title, originLanguage, translationRequest, contentPool. Special value "REPLACE_DATE" is replaced with date 7 days ago for dynamic date filtering. Example: {"$match": {"translationRequest.status": "pending", "updatedAt": {"$gte": "REPLACE_DATE"}}} |
| resultType required | string Enum: "contents" "tasks" "users" "formvalues" Type of items returned by the query (determines which collection to query) |
| groups | Array of strings <objectId> [ items <objectId > ] Group IDs that will receive this system task |
object Organization chart targeting for task recipients | |
| active | boolean Default: true Whether system task is currently active and executing |
| schedule | string Cron expression for task execution schedule (e.g., "0 9 * * *" for daily at 9 AM) |
{- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string"
}{- "_id": "string",
- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single system task definition by ID. [Admin only]
| _id required | string ID of systemtasks to return |
{- "_id": "string",
- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire system task definition. [Admin only]
| _id required | string ID of systemtasks to update |
| title required | string System task display title (e.g., "Translation Requests", "Pending Approvals") |
| query required | string MongoDB aggregation query (as JSON string) to find items requiring action. Must return minimum fields: _id, title, originLanguage, translationRequest, contentPool. Special value "REPLACE_DATE" is replaced with date 7 days ago for dynamic date filtering. Example: {"$match": {"translationRequest.status": "pending", "updatedAt": {"$gte": "REPLACE_DATE"}}} |
| resultType required | string Enum: "contents" "tasks" "users" "formvalues" Type of items returned by the query (determines which collection to query) |
| groups | Array of strings <objectId> [ items <objectId > ] Group IDs that will receive this system task |
object Organization chart targeting for task recipients | |
| active | boolean Default: true Whether system task is currently active and executing |
| schedule | string Cron expression for task execution schedule (e.g., "0 9 * * *" for daily at 9 AM) |
{- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string"
}{- "_id": "string",
- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields of a system task. [Admin only]
| _id required | string ID of systemtasks to update |
| title required | string System task display title (e.g., "Translation Requests", "Pending Approvals") |
| query required | string MongoDB aggregation query (as JSON string) to find items requiring action. Must return minimum fields: _id, title, originLanguage, translationRequest, contentPool. Special value "REPLACE_DATE" is replaced with date 7 days ago for dynamic date filtering. Example: {"$match": {"translationRequest.status": "pending", "updatedAt": {"$gte": "REPLACE_DATE"}}} |
| resultType required | string Enum: "contents" "tasks" "users" "formvalues" Type of items returned by the query (determines which collection to query) |
| groups | Array of strings <objectId> [ items <objectId > ] Group IDs that will receive this system task |
object Organization chart targeting for task recipients | |
| active | boolean Default: true Whether system task is currently active and executing |
| schedule | string Cron expression for task execution schedule (e.g., "0 9 * * *" for daily at 9 AM) |
{- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string"
}{- "_id": "string",
- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a system task definition. [Admin only]
| _id required | string ID of systemtasks to remove |
{- "_id": "string",
- "title": "string",
- "query": "string",
- "resultType": "contents",
- "groups": [
- "string"
], - "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "active": true,
- "schedule": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}TalkJS webhook integration service for processing chat notifications. [Webhook only] Requires special signature-based authentication.
Authentication: Uses HMAC-SHA256 signature with timestamp validation (5 minute timeout). Signature Format: SHA256([timestamp] + "." + [jsonPayloadWithoutWhiteSpace])
Process TalkJS webhook notification. Validates signature and triggers push notifications for chat messages
| X-Talkjs-Signature required | string HMAC-SHA256 signature for request validation |
| X-TalkJS-Timestamp required | string Unix timestamp in milliseconds (must be within 5 minutes) |
| type required | string Value: "notification.triggered" Webhook event type (only notification.triggered is processed) |
| createdAt required | integer Unix timestamp in milliseconds when event was created |
required | object |
{- "type": "notification.triggered",
- "createdAt": 0,
- "data": {
- "notificationId": "string",
- "recipient": "string",
- "sender": "string",
- "conversation": "string",
- "messages": [
- "string"
]
}
}{- "value": "Success"
}Task management service for personal and group tasks. Tasks are created from task templates and can be assigned to specific users or organizational units.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve tasks assigned to the current user or created by the user (for admins/template creators). Without templateRef, returns all personal tasks. With templateRef, returns tasks created from that template (admin/creator only)
| fromDateTime | string <date-time> Filter tasks starting from this date/time (ISO 8601) |
| toDateTime | string <date-time> Filter tasks up to this date/time (ISO 8601) |
| status | string Enum: "open" "rejected" "pendingApproval" "othersPendingApproval" "done" "draft" Filter by task status |
| relatedTags | string Filter by related tag IDs (comma-separated). Only works without |
| templateRef | string Filter tasks created from this template. [Admin/Template Creator only] |
| userId | string Filter tasks assigned to specific user. Non-admins can only filter their own tasks |
| lang | string Language code for task title translation |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "templateRef": "string",
- "type": "personal",
- "status": "open",
- "template": {
- "title": { },
- "originLanguage": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "form": {
- "fields": [
- { }
]
}, - "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "completionType": "personal",
- "relatedTags": [
- "string"
]
}, - "userId": "string",
- "orgunits": [
- "string"
], - "answers": [
- { }
], - "submissionDate": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Retrieve a single task by ID. Only accessible to the assigned user or admins
| lang | string Language code for task title translation |
{- "_id": "string",
- "templateRef": "string",
- "type": "personal",
- "status": "open",
- "template": {
- "title": { },
- "originLanguage": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "form": {
- "fields": [
- { }
]
}, - "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "completionType": "personal",
- "relatedTags": [
- "string"
]
}, - "userId": "string",
- "orgunits": [
- "string"
], - "answers": [
- { }
], - "submissionDate": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update task progress, answers, or status. Used to submit task completion
| id required | string ID of tasks to update |
| answers | Array of objects Task form answers/responses |
| status | string Enum: "open" "rejected" "pendingApproval" "othersPendingApproval" "done" "draft" Update task status (auto-updated on submission) |
{- "answers": [
- { }
], - "status": "open"
}{- "_id": "string",
- "templateRef": "string",
- "type": "personal",
- "status": "open",
- "template": {
- "title": { },
- "originLanguage": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "attachments": [
- {
- "name": "string",
- "storageId": "string",
- "fileType": "string"
}
], - "form": {
- "fields": [
- { }
]
}, - "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "completionType": "personal",
- "relatedTags": [
- "string"
]
}, - "userId": "string",
- "orgunits": [
- "string"
], - "answers": [
- { }
], - "submissionDate": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Task template management service for creating periodic, single, and child task templates. Templates define tasks that can be automatically or manually generated for users.
Template Types:
Note: Queries without parentRef return root templates; with parentRef returns child templates.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve task templates. Returns root templates by default, or child templates when parentRef is provided
| searchTerm | string Search term for title (full-text search) |
| parentRef | string <objectId> Parent template ID to retrieve child templates |
| status | string Enum: "empty" "pending" "partial" "complete" "ongoing" Filter by template status |
| type | string Enum: "daily" "weekly" "monthly1" "monthly2" "monthly3" "monthly4" "monthlyLast" "monthly" "yearly" "child" "single" "custom" Filter by template type |
| lang | string Language code for task title translation |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "orgunits": [
- "string"
], - "type": "daily",
- "repeatEvery": 1,
- "parentRef": "string",
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "translators": [ ],
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "videoProcessing": true,
- "lastTaskUserCount": 0,
- "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true,
- "lastReminderAt": "2019-08-24T14:15:22Z",
- "edited": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new task template with targeting and scheduling. Periodic templates generate child templates automatically
object Organization chart targeting for task assignment | |
| orgchartAttrSelection | object Organization attribute filters (AND/OR logic) |
| groups | object Group targeting configuration |
| type required | string Enum: "daily" "weekly" "monthly1" "monthly2" "monthly3" "monthly4" "monthlyLast" "monthly" "yearly" "child" "single" "custom" Template type: daily, weekly, monthly1, monthly2, monthly3, monthly4, monthlyLast, monthly, yearly, child, single, custom |
| repeatEvery | integer >= 1 For periodic tasks: repeat interval (e.g., 1=daily, 7=weekly) |
| status | string Enum: "empty" "pending" "partial" "complete" "ongoing" Template status: empty, pending, partial, complete, ongoing |
required | object Task definition template |
| originalStartDate | string <date-time> Original start date for periodic templates (before progression) |
| originalAllDayStart | boolean Original all-day flag for start date |
| originalDueDate | string <date-time> Original due date for periodic templates (before progression) |
| originalAllDayDue | boolean Original all-day flag for due date |
| templateEndDate | string <date-time> When periodic template should stop generating tasks |
| sendPushNotification | boolean Send push notification when tasks become active |
{- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "type": "daily",
- "repeatEvery": 1,
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true
}{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "orgunits": [
- "string"
], - "type": "daily",
- "repeatEvery": 1,
- "parentRef": "string",
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "translators": [ ],
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "videoProcessing": true,
- "lastTaskUserCount": 0,
- "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true,
- "lastReminderAt": "2019-08-24T14:15:22Z",
- "edited": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single task template by ID with progress breakdown
| lang | string Language code for task title translation |
{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "orgunits": [
- "string"
], - "type": "daily",
- "repeatEvery": 1,
- "parentRef": "string",
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "translators": [ ],
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "videoProcessing": true,
- "lastTaskUserCount": 0,
- "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true,
- "lastReminderAt": "2019-08-24T14:15:22Z",
- "edited": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Execute custom actions on task template. Supports: pause, resume, complete, restart. Use iteration query param to affect single or all iterations
| action | string Enum: "pause" "resume" "complete" "restart" Action to execute (pause, resume, complete, restart) |
| iteration | string Enum: "single" "all" Apply to single iteration or all active iterations |
object Organization chart targeting for task assignment | |
| orgchartAttrSelection | object Organization attribute filters (AND/OR logic) |
| groups | object Group targeting configuration |
| type required | string Enum: "daily" "weekly" "monthly1" "monthly2" "monthly3" "monthly4" "monthlyLast" "monthly" "yearly" "child" "single" "custom" Template type: daily, weekly, monthly1, monthly2, monthly3, monthly4, monthlyLast, monthly, yearly, child, single, custom |
| repeatEvery | integer >= 1 For periodic tasks: repeat interval (e.g., 1=daily, 7=weekly) |
| status | string Enum: "empty" "pending" "partial" "complete" "ongoing" Template status: empty, pending, partial, complete, ongoing |
required | object Task definition template |
| originalStartDate | string <date-time> Original start date for periodic templates (before progression) |
| originalAllDayStart | boolean Original all-day flag for start date |
| originalDueDate | string <date-time> Original due date for periodic templates (before progression) |
| originalAllDayDue | boolean Original all-day flag for due date |
| templateEndDate | string <date-time> When periodic template should stop generating tasks |
| sendPushNotification | boolean Send push notification when tasks become active |
{- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "type": "daily",
- "repeatEvery": 1,
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true
}{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "orgunits": [
- "string"
], - "type": "daily",
- "repeatEvery": 1,
- "parentRef": "string",
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "translators": [ ],
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "videoProcessing": true,
- "lastTaskUserCount": 0,
- "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true,
- "lastReminderAt": "2019-08-24T14:15:22Z",
- "edited": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update task template fields. Use iteration query param to update single or all active child templates
| iteration | string Enum: "single" "all" Apply changes to single iteration or all active iterations |
object Organization chart targeting for task assignment | |
| orgchartAttrSelection | object Organization attribute filters (AND/OR logic) |
| groups | object Group targeting configuration |
| type required | string Enum: "daily" "weekly" "monthly1" "monthly2" "monthly3" "monthly4" "monthlyLast" "monthly" "yearly" "child" "single" "custom" Template type: daily, weekly, monthly1, monthly2, monthly3, monthly4, monthlyLast, monthly, yearly, child, single, custom |
| repeatEvery | integer >= 1 For periodic tasks: repeat interval (e.g., 1=daily, 7=weekly) |
| status | string Enum: "empty" "pending" "partial" "complete" "ongoing" Template status: empty, pending, partial, complete, ongoing |
required | object Task definition template |
| originalStartDate | string <date-time> Original start date for periodic templates (before progression) |
| originalAllDayStart | boolean Original all-day flag for start date |
| originalDueDate | string <date-time> Original due date for periodic templates (before progression) |
| originalAllDayDue | boolean Original all-day flag for due date |
| templateEndDate | string <date-time> When periodic template should stop generating tasks |
| sendPushNotification | boolean Send push notification when tasks become active |
{- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "type": "daily",
- "repeatEvery": 1,
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true
}{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "orgunits": [
- "string"
], - "type": "daily",
- "repeatEvery": 1,
- "parentRef": "string",
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "translators": [ ],
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "videoProcessing": true,
- "lastTaskUserCount": 0,
- "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true,
- "lastReminderAt": "2019-08-24T14:15:22Z",
- "edited": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete task template. Use iteration query param to delete single or all active child templates
| iteration | string Enum: "single" "all" Delete single iteration or all active iterations |
{- "_id": "string",
- "orgchartSelection": {
- "include": [
- "string"
], - "exclude": [
- "string"
]
}, - "orgchartAttrSelection": { },
- "groups": { },
- "orgunits": [
- "string"
], - "type": "daily",
- "repeatEvery": 1,
- "parentRef": "string",
- "status": "empty",
- "template": {
- "title": { },
- "originLanguage": "string",
- "translators": [ ],
- "images": [
- "string"
], - "videos": [
- "string"
], - "embeddedVideos": [ ],
- "attachments": [ ],
- "form": { },
- "startDate": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z",
- "allDayStart": true,
- "allDayDue": true,
- "completionType": "personal",
- "approveAnswers": true,
- "relatedTags": [
- "string"
]
}, - "videoProcessing": true,
- "lastTaskUserCount": 0,
- "originalStartDate": "2019-08-24T14:15:22Z",
- "originalAllDayStart": true,
- "originalDueDate": "2019-08-24T14:15:22Z",
- "originalAllDayDue": true,
- "templateEndDate": "2019-08-24T14:15:22Z",
- "sendPushNotification": true,
- "lastReminderAt": "2019-08-24T14:15:22Z",
- "edited": true,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Task template view service. [Read-only] Provides aggregated task template data with progress statistics and status breakdowns. This materialized view joins task templates with their execution progress for efficient querying.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve task templates with aggregated progress data. Supports management mode for additional statistics (overdue, planned, with approval counts)
| searchTerm | string Search term for title (full-text search) |
| parentRef | string <objectId> Parent template ID to retrieve child templates |
| management | boolean Management mode - returns additional statistics. [Admin/Supervisor only] |
| superviseFilterCounts | boolean Enable detailed filter counts (overdue, open, completed, planned). Use with management=true |
| status | string Enum: "open" "completed" "paused" "ongoing" Filter by template status |
| lang | string Language code for task title translation |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "statuses": [
- "string"
]
}
], - "taskTemplateCount": {
- "isOverdueCount": 0,
- "isCompletedCount": 0,
- "isOpenCount": 0,
- "isPlannedCount": 0,
- "isWithApprovalCount": 0
}
}Theme management service for customizing application appearance. Themes control colors, fonts, logos, and other visual elements. Only one theme can be set as default.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve all themes. Returns default theme first
| default | boolean Filter by default theme |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new theme. [Admin only]
| name required | string Theme name (e.g., "Corporate Blue", "Dark Mode") |
required | object Theme configuration data including colors, fonts, logos, and styling |
| default | boolean Default: false Whether this is the default theme (only one can be default) |
{- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false
}{- "_id": "string",
- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a specific theme by ID
| _id required | string ID of themes to return |
{- "_id": "string",
- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire theme. [Admin only]
| _id required | string ID of themes to update |
| name required | string Theme name (e.g., "Corporate Blue", "Dark Mode") |
required | object Theme configuration data including colors, fonts, logos, and styling |
| default | boolean Default: false Whether this is the default theme (only one can be default) |
{- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false
}{- "_id": "string",
- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific theme fields. [Admin only]
| _id required | string ID of themes to update |
| name required | string Theme name (e.g., "Corporate Blue", "Dark Mode") |
required | object Theme configuration data including colors, fonts, logos, and styling |
| default | boolean Default: false Whether this is the default theme (only one can be default) |
{- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false
}{- "_id": "string",
- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a theme. Cannot delete default theme. [Admin only]
| _id required | string ID of themes to remove |
{- "_id": "string",
- "name": "string",
- "themeData": {
- "primaryColor": "string",
- "secondaryColor": "string",
- "backgroundColor": "string",
- "textColor": "string",
- "logo": "string",
- "favicon": "string",
- "fontFamily": "string",
- "customCSS": "string"
}, - "default": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Training progress tracking service. [Read-only] Automatically maintained by the system when users complete lesson submissions. Tracks overall training completion status and lesson progress.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve training progress records. Users can only see their own progress unless they are admins/trainers
| contentsRef | string <objectId> Filter by training content ID |
| userRef | string Filter by user ID. Non-admins can only filter for themselves |
| completed | boolean Filter by completion status |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "contentsRef": "string",
- "userRef": "string",
- "orgunitsOfCreator": [
- "string"
], - "completed": true,
- "totalLessons": 0,
- "passedLessons": 0,
- "completedLessons": [
- "string"
], - "completedAt": "2019-08-24T14:15:22Z",
- "progressPercentage": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Google Translate API integration service for automatic text translation. Supports multiple languages via Google Cloud Translation API.
Note: Requires Google Translate API key configuration.
Translate text from source language to target language using Google Translate
| text required | Array of strings Text strings to translate |
| source | string Source language code (e.g., "en", "nl", "de"). Auto-detected if not provided |
| target required | string Target language code (e.g., "en", "nl", "de", "fr") |
| format | string Default: "text" Enum: "text" "html" Format of the text (text or HTML) |
{- "text": [
- "string"
], - "source": "string",
- "target": "string",
- "format": "text"
}{- "translations": [
- {
- "translatedText": "string",
- "detectedSourceLanguage": "string"
}
]
}UI translation overrides service for managing client-specific text translations. Allows customization of interface labels and messages per tenant/language.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve translation overrides for client and language
| cid | integer Client ID (tenant identifier) |
| lang | string Language code filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create new translation overrides for a client/language. [Admin only]
| lang required | string Language code (e.g., "en", "nl", "de", "fr") |
| cid | integer Client/tenant ID for multi-tenant deployments |
required | object Key-value pairs of translation overrides (e.g., {"common.save": "Opslaan", "common.cancel": "Annuleren"}) |
| category | string Enum: "ui" "email" "push" "system" Translation category |
{- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui"
}{- "_id": "string",
- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve specific translation override by ID
| _id required | string ID of translations to return |
{- "_id": "string",
- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire translation override set. [Admin only]
| _id required | string ID of translations to update |
| lang required | string Language code (e.g., "en", "nl", "de", "fr") |
| cid | integer Client/tenant ID for multi-tenant deployments |
required | object Key-value pairs of translation overrides (e.g., {"common.save": "Opslaan", "common.cancel": "Annuleren"}) |
| category | string Enum: "ui" "email" "push" "system" Translation category |
{- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui"
}{- "_id": "string",
- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific translation keys. [Admin only]
| _id required | string ID of translations to update |
| lang required | string Language code (e.g., "en", "nl", "de", "fr") |
| cid | integer Client/tenant ID for multi-tenant deployments |
required | object Key-value pairs of translation overrides (e.g., {"common.save": "Opslaan", "common.cancel": "Annuleren"}) |
| category | string Enum: "ui" "email" "push" "system" Translation category |
{- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui"
}{- "_id": "string",
- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete translation overrides. [Admin only]
| _id required | string ID of translations to remove |
{- "_id": "string",
- "lang": "string",
- "cid": 0,
- "translations": {
- "property1": "string",
- "property2": "string"
}, - "category": "ui",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Translation service for adding or updating translations for content, tasks, and other translatable entities. Handles multi-language content management and translator tracking.
Note: This is a create-only service that processes translation requests.
Add or update translations for various entities. Supports:
Automatically tracks translator and timestamp in translators array
| entityType required | string Enum: "contents" "tasks" "tasktemplates" "groups" "folders" "contentpools" "orgattributes" "orgattributecategories" "lessons" Type of entity being translated |
| entityId required | string <objectId> ID of the entity to translate |
| language required | string Language code for the translation (e.g., "en", "nl", "de") |
required | object Translation data with field names as keys and translated text as values |
{- "entityType": "contents",
- "entityId": "string",
- "language": "string",
- "translations": {
- "title": "string",
- "message": "string",
- "description": "string",
- "name": "string"
}
}{- "success": true,
- "entityId": "string",
- "language": "string"
}Updates the resource identified by id using data.
| id required | string ID of translationservice to update |
| entityType required | string Enum: "contents" "tasks" "tasktemplates" "groups" "folders" "contentpools" "orgattributes" "orgattributecategories" "lessons" Type of entity being translated |
| entityId required | string <objectId> ID of the entity to translate |
| language required | string Language code for the translation (e.g., "en", "nl", "de") |
required | object Translation data with field names as keys and translated text as values |
{- "entityType": "contents",
- "entityId": "string",
- "language": "string",
- "translations": {
- "title": "string",
- "message": "string",
- "description": "string",
- "name": "string"
}
}{- "entityType": "contents",
- "entityId": "string",
- "language": "string",
- "translations": {
- "title": "string",
- "message": "string",
- "description": "string",
- "name": "string"
}
}User management service. Handles user accounts, profiles, authentication, permissions, and organizational membership.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details on $limit, $skip, $sort, $select, and other query operators.
Retrieve users with optional filtering by groups, orgunits, attributes, and other criteria. Supports count queries and zone of influence filtering.
| count | boolean Return count instead of user objects. Use with |
| countType | string Enum: "contentReach" "orgUnitBelong" Type of count to perform (requires
|
| groups | string Filter by group ID(s). Supports comma-separated values for multiple groups |
| orgunits | string Filter by organization unit ID(s). Supports comma-separated values for multiple orgunits. Automatically expands to include descendants |
| attributes | Array of arrays Filter by organizational attributes. Supports AND/OR logic with nested arrays |
| orgtype | string Filter by organization type ID |
| firstLoginDone | string Enum: "true" "false" Filter users who have completed first login. Set to |
| management | boolean Enable management mode for admin panel access. [Admin only] |
| usersInOrgUnit | boolean Find users within a specific orgunit. Validates permissions against searchable org units preset. Returns limited user data fields for privacy. [Requires orgunit visibility permissions] |
| searchForActiveUsers | boolean Filter only active users (active=true). Used with count queries and usersInOrgUnit |
| deleted | boolean Include deleted users in results. [Admin only] |
| searchTerm | string Full-text search across name, email, employeeID fields |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "loginName": "string",
- "loginMethod": "local",
- "personalInfo": "string",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "firstLoginDone": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "deleted": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "accountType": "standard",
- "zoneOfInfluence": [
- "string"
], - "canImpersonate": [
- "string"
], - "points": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "subdomain": "string",
- "customAttributes": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new user account. Password is hashed automatically. Email verification is sent if enabled. Requires appropriate role permissions to create users with specific roles
| name required | string Full name of the user |
| firstName | string First name |
| insertion | string Name insertion (e.g., "van", "de") |
| lastName | string Last name |
| email required | string <email> Email address - must be unique across the system |
| personalInfo | string Personal information/bio entered by the user |
| password required | string <password> Password (sent as plain text on create, automatically hashed) |
| passwordExpires | string <date-time> Date when password expires |
| permanentPassword | boolean If true, password expiration is disabled |
| profilePicture | string S3 path to user profile picture |
| organisation | string Organization name |
| position | string Job position/function in organization |
| preferredLanguage | string Preferred UI language code (e.g., "en", "nl", "de") |
| employeeID | string Employee ID number |
| level | string <objectId> Reference to user level for gamification |
| dob | string <date> Date of birth |
| phone | string Work phone number |
| active | boolean Account active status - inactive users cannot log in |
| privateEmail | string <email> Private email - only visible to profile owner and admins |
| privatePhone | string Private phone - only visible to profile owner and admins |
| orgunits | Array of strings <objectId> [ items <objectId > ] Organization units user belongs to |
| groups | Array of strings <objectId> [ items <objectId > ] Groups user belongs to |
| roles | Array of strings <objectId> [ items <objectId > ] Roles assigned to user (determines permissions) |
| excludeFromContacts | boolean If true, user is hidden from contact search results |
| excludeFromTasks | boolean If true, user cannot be assigned tasks |
| ghost | boolean If true, user is excluded from reach calculations and view counts |
| canImpersonate | Array of strings <objectId> [ items <objectId > ] User IDs this user is allowed to impersonate |
| subdomain | string Subdomain for multi-tenant configurations |
| customAttributes | object Custom attributes specific to organization |
{- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "personalInfo": "string",
- "password": "pa$$word",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "canImpersonate": [
- "string"
], - "subdomain": "string",
- "customAttributes": { }
}{- "_id": "string",
- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "loginName": "string",
- "loginMethod": "local",
- "personalInfo": "string",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "firstLoginDone": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "deleted": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "accountType": "standard",
- "zoneOfInfluence": [
- "string"
], - "canImpersonate": [
- "string"
], - "points": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "subdomain": "string",
- "customAttributes": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a single user by ID. Includes populated points, impersonation permissions, and related data
| _id required | string ID of users to return |
{- "_id": "string",
- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "loginName": "string",
- "loginMethod": "local",
- "personalInfo": "string",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "firstLoginDone": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "deleted": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "accountType": "standard",
- "zoneOfInfluence": [
- "string"
], - "canImpersonate": [
- "string"
], - "points": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "subdomain": "string",
- "customAttributes": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire user record. [Internal only] Not available via external API
| _id required | string ID of users to update |
| name required | string Full name of the user |
| firstName | string First name |
| insertion | string Name insertion (e.g., "van", "de") |
| lastName | string Last name |
| email required | string <email> Email address - must be unique across the system |
| personalInfo | string Personal information/bio entered by the user |
| password required | string <password> Password (sent as plain text on create, automatically hashed) |
| passwordExpires | string <date-time> Date when password expires |
| permanentPassword | boolean If true, password expiration is disabled |
| profilePicture | string S3 path to user profile picture |
| organisation | string Organization name |
| position | string Job position/function in organization |
| preferredLanguage | string Preferred UI language code (e.g., "en", "nl", "de") |
| employeeID | string Employee ID number |
| level | string <objectId> Reference to user level for gamification |
| dob | string <date> Date of birth |
| phone | string Work phone number |
| active | boolean Account active status - inactive users cannot log in |
| privateEmail | string <email> Private email - only visible to profile owner and admins |
| privatePhone | string Private phone - only visible to profile owner and admins |
| orgunits | Array of strings <objectId> [ items <objectId > ] Organization units user belongs to |
| groups | Array of strings <objectId> [ items <objectId > ] Groups user belongs to |
| roles | Array of strings <objectId> [ items <objectId > ] Roles assigned to user (determines permissions) |
| excludeFromContacts | boolean If true, user is hidden from contact search results |
| excludeFromTasks | boolean If true, user cannot be assigned tasks |
| ghost | boolean If true, user is excluded from reach calculations and view counts |
| canImpersonate | Array of strings <objectId> [ items <objectId > ] User IDs this user is allowed to impersonate |
| subdomain | string Subdomain for multi-tenant configurations |
| customAttributes | object Custom attributes specific to organization |
{- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "personalInfo": "string",
- "password": "pa$$word",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "canImpersonate": [
- "string"
], - "subdomain": "string",
- "customAttributes": { }
}{- "_id": "string",
- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "loginName": "string",
- "loginMethod": "local",
- "personalInfo": "string",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "firstLoginDone": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "deleted": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "accountType": "standard",
- "zoneOfInfluence": [
- "string"
], - "canImpersonate": [
- "string"
], - "points": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "subdomain": "string",
- "customAttributes": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Partially update user information. Protected fields cannot be modified: loginMethod, points, deleted, accountType. Password is automatically hashed if provided. Role upgrades require appropriate permissions
| _id required | string ID of users to update |
| name required | string Full name of the user |
| firstName | string First name |
| insertion | string Name insertion (e.g., "van", "de") |
| lastName | string Last name |
| email required | string <email> Email address - must be unique across the system |
| personalInfo | string Personal information/bio entered by the user |
| password required | string <password> Password (sent as plain text on create, automatically hashed) |
| passwordExpires | string <date-time> Date when password expires |
| permanentPassword | boolean If true, password expiration is disabled |
| profilePicture | string S3 path to user profile picture |
| organisation | string Organization name |
| position | string Job position/function in organization |
| preferredLanguage | string Preferred UI language code (e.g., "en", "nl", "de") |
| employeeID | string Employee ID number |
| level | string <objectId> Reference to user level for gamification |
| dob | string <date> Date of birth |
| phone | string Work phone number |
| active | boolean Account active status - inactive users cannot log in |
| privateEmail | string <email> Private email - only visible to profile owner and admins |
| privatePhone | string Private phone - only visible to profile owner and admins |
| orgunits | Array of strings <objectId> [ items <objectId > ] Organization units user belongs to |
| groups | Array of strings <objectId> [ items <objectId > ] Groups user belongs to |
| roles | Array of strings <objectId> [ items <objectId > ] Roles assigned to user (determines permissions) |
| excludeFromContacts | boolean If true, user is hidden from contact search results |
| excludeFromTasks | boolean If true, user cannot be assigned tasks |
| ghost | boolean If true, user is excluded from reach calculations and view counts |
| canImpersonate | Array of strings <objectId> [ items <objectId > ] User IDs this user is allowed to impersonate |
| subdomain | string Subdomain for multi-tenant configurations |
| customAttributes | object Custom attributes specific to organization |
{- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "personalInfo": "string",
- "password": "pa$$word",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "canImpersonate": [
- "string"
], - "subdomain": "string",
- "customAttributes": { }
}{- "_id": "string",
- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "loginName": "string",
- "loginMethod": "local",
- "personalInfo": "string",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "firstLoginDone": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "deleted": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "accountType": "standard",
- "zoneOfInfluence": [
- "string"
], - "canImpersonate": [
- "string"
], - "points": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "subdomain": "string",
- "customAttributes": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Soft delete a user (sets deleted=true and active=false). Cannot delete system users or keephub accounts. Clears user cache
| _id required | string ID of users to remove |
{- "_id": "string",
- "name": "string",
- "firstName": "string",
- "insertion": "string",
- "lastName": "string",
- "email": "user@example.com",
- "loginName": "string",
- "loginMethod": "local",
- "personalInfo": "string",
- "passwordExpires": "2019-08-24T14:15:22Z",
- "permanentPassword": true,
- "firstLoginDone": true,
- "profilePicture": "string",
- "organisation": "string",
- "position": "string",
- "preferredLanguage": "string",
- "employeeID": "string",
- "level": "string",
- "dob": "2019-08-24",
- "phone": "string",
- "active": true,
- "deleted": true,
- "privateEmail": "user@example.com",
- "privatePhone": "string",
- "orgunits": [
- "string"
], - "groups": [
- "string"
], - "roles": [
- "string"
], - "excludeFromContacts": true,
- "excludeFromTasks": true,
- "ghost": true,
- "accountType": "standard",
- "zoneOfInfluence": [
- "string"
], - "canImpersonate": [
- "string"
], - "points": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "subdomain": "string",
- "customAttributes": { },
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}User points balance ledger service. Tracks individual point/coin transactions and maintains user balances. [Read-mostly] Primarily managed by reward system.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve user points transaction history
| userRef | string <objectId> Filter by user ID |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create points transaction. [Internal only]
| userRef required | string <objectId> User who owns this balance entry |
| usersRewardRef | string <objectId> Associated user reward (if points from reward) |
| points required | number Points amount (positive for credit, negative for debit) |
| coins | number Coins amount (if applicable) |
| description | string Transaction description |
| title | string Transaction title |
| transactionType | string Enum: "reward" "purchase" "adjustment" "refund" Type of transaction |
| originLanguage | string Language for transaction text |
{- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string"
}{- "_id": "string",
- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a specific points transaction by ID
| _id required | string ID of userspointsbalances to return |
{- "_id": "string",
- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire transaction record. [Internal only]
| _id required | string ID of userspointsbalances to update |
| userRef required | string <objectId> User who owns this balance entry |
| usersRewardRef | string <objectId> Associated user reward (if points from reward) |
| points required | number Points amount (positive for credit, negative for debit) |
| coins | number Coins amount (if applicable) |
| description | string Transaction description |
| title | string Transaction title |
| transactionType | string Enum: "reward" "purchase" "adjustment" "refund" Type of transaction |
| originLanguage | string Language for transaction text |
{- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string"
}{- "_id": "string",
- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update transaction record fields. [Internal only]
| _id required | string ID of userspointsbalances to update |
| userRef required | string <objectId> User who owns this balance entry |
| usersRewardRef | string <objectId> Associated user reward (if points from reward) |
| points required | number Points amount (positive for credit, negative for debit) |
| coins | number Coins amount (if applicable) |
| description | string Transaction description |
| title | string Transaction title |
| transactionType | string Enum: "reward" "purchase" "adjustment" "refund" Type of transaction |
| originLanguage | string Language for transaction text |
{- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string"
}{- "_id": "string",
- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a transaction record. [Admin only]
| _id required | string ID of userspointsbalances to remove |
{- "_id": "string",
- "userRef": "string",
- "usersRewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "transactionType": "reward",
- "originLanguage": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}User rewards tracking service. Records individual reward grants to users. [Read-mostly] Primarily managed by automated reward system.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve user reward history. Users can see their own rewards
| userRef | string <objectId> Filter by user ID |
| rewardRef | string Filter by reward ID |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Grant a reward to a user. [Internal/Admin only]
| userRef required | string <objectId> User who received the reward |
| entityRef | string <objectId> Entity related to reward (e.g., content ID, task ID) |
| rewardRef required | string <objectId> Reward definition reference |
| description | string Reward description |
| title | string Reward title |
| originLanguage | string Language for reward text |
| seen | boolean Default: false Whether user has seen this reward notification |
{- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false
}{- "_id": "string",
- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve a specific user reward record by ID
| _id required | string ID of usersrewards to return |
{- "_id": "string",
- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire user reward record. [Internal only]
| _id required | string ID of usersrewards to update |
| userRef required | string <objectId> User who received the reward |
| entityRef | string <objectId> Entity related to reward (e.g., content ID, task ID) |
| rewardRef required | string <objectId> Reward definition reference |
| description | string Reward description |
| title | string Reward title |
| originLanguage | string Language for reward text |
| seen | boolean Default: false Whether user has seen this reward notification |
{- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false
}{- "_id": "string",
- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update user reward record fields. [Internal only]
| _id required | string ID of usersrewards to update |
| userRef required | string <objectId> User who received the reward |
| entityRef | string <objectId> Entity related to reward (e.g., content ID, task ID) |
| rewardRef required | string <objectId> Reward definition reference |
| description | string Reward description |
| title | string Reward title |
| originLanguage | string Language for reward text |
| seen | boolean Default: false Whether user has seen this reward notification |
{- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false
}{- "_id": "string",
- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete a user reward record. [Admin only]
| _id required | string ID of usersrewards to remove |
{- "_id": "string",
- "userRef": "string",
- "entityRef": "string",
- "rewardRef": "string",
- "points": 0,
- "coins": 0,
- "description": "string",
- "title": "string",
- "originLanguage": "string",
- "seen": false,
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Version information service for retrieving application version and system information. [Public endpoint] Provides version number, environment, and system resource information.
Get application version and system information. No authentication required
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (version) Query parameters to filter |
{- "data": [
- {
- "version": "1.136.0",
- "env": "production",
- "cpus": "8",
- "totalmem": "16 GB",
- "freemem": "8 GB",
- "nodeVersion": "string",
- "platform": "string",
- "uptime": 0
}
]
}Video management service for handling video uploads and processing. Tracks video metadata, processing status, and references to content. [Internal service] Video files are uploaded to S3, this service stores metadata and processing status.
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve videos with optional filtering by reference, type, or language
| refId | string <objectId> Filter by reference ID (content, task, etc.). Use with |
| type | string Enum: "contents" "flowtemplates" "tasktemplates" "lessons" Type of reference entity. Allowed values: contents,flowtemplates,tasktemplates,lessons |
| storageId | string Filter by S3 storage ID |
| status | string Enum: "draft" "new" "done" Filter by processing status. Allowed values: draft,new,done |
| lang | string Language code to filter videos by language |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create video metadata record after S3 upload. Triggers video processing pipeline. Supports multi-create for batch operations
| refId | string <objectId> Reference to parent entity (content, task, lesson, etc.) |
| lang | string Language code for the video content |
| type required | string Enum: "contents" "flowtemplates" "tasktemplates" "lessons" Type of parent entity. Options: contents,flowtemplates,tasktemplates,lessons |
| storageId required | string Unique S3 storage identifier (generated by frontend during upload) |
| fileType | string MIME type of the video file (e.g., "video/mp4", "video/webm") |
| fileName | string Original file name |
| duration | number Video duration in seconds (populated after processing) |
| thumbnail | string S3 path to generated thumbnail image |
[ ]{- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Updates multiple resources.
| total | number Pagination response, total number of results |
| limit | number Pagination response, result set is limited to |
| skip | number Pagination response, results skipped |
Array of objects (videos) Actual data |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string"
}
]
}{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Updates multiple resources queried by given filters.
object (videos) Query parameters to filter |
| refId | string <objectId> Reference to parent entity (content, task, lesson, etc.) |
| lang | string Language code for the video content |
| type required | string Enum: "contents" "flowtemplates" "tasktemplates" "lessons" Type of parent entity. Options: contents,flowtemplates,tasktemplates,lessons |
| storageId required | string Unique S3 storage identifier (generated by frontend during upload) |
| fileType | string MIME type of the video file (e.g., "video/mp4", "video/webm") |
| fileName | string Original file name |
| duration | number Video duration in seconds (populated after processing) |
| thumbnail | string S3 path to generated thumbnail image |
{- "refId": "string",
- "lang": "string",
- "type": "contents",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string"
}{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Removes multiple resources queried by given filters.
object (videos) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Retrieve a single video by ID with processing status
| _id required | string ID of videos to return |
{- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire video record. [Internal only]
| _id required | string ID of videos to update |
| refId | string <objectId> Reference to parent entity (content, task, lesson, etc.) |
| lang | string Language code for the video content |
| type required | string Enum: "contents" "flowtemplates" "tasktemplates" "lessons" Type of parent entity. Options: contents,flowtemplates,tasktemplates,lessons |
| storageId required | string Unique S3 storage identifier (generated by frontend during upload) |
| fileType | string MIME type of the video file (e.g., "video/mp4", "video/webm") |
| fileName | string Original file name |
| duration | number Video duration in seconds (populated after processing) |
| thumbnail | string S3 path to generated thumbnail image |
{- "refId": "string",
- "lang": "string",
- "type": "contents",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string"
}{- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update video metadata or processing status. [Internal only]
| _id required | string ID of videos to update |
| refId | string <objectId> Reference to parent entity (content, task, lesson, etc.) |
| lang | string Language code for the video content |
| type required | string Enum: "contents" "flowtemplates" "tasktemplates" "lessons" Type of parent entity. Options: contents,flowtemplates,tasktemplates,lessons |
| storageId required | string Unique S3 storage identifier (generated by frontend during upload) |
| fileType | string MIME type of the video file (e.g., "video/mp4", "video/webm") |
| fileName | string Original file name |
| duration | number Video duration in seconds (populated after processing) |
| thumbnail | string S3 path to generated thumbnail image |
{- "refId": "string",
- "lang": "string",
- "type": "contents",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string"
}{- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete video metadata and trigger S3 cleanup. Supports multi-delete for batch operations
| _id required | string ID of videos to remove |
{- "_id": "string",
- "refId": "string",
- "lang": "string",
- "type": "contents",
- "status": "draft",
- "storageId": "string",
- "fileType": "string",
- "fileName": "string",
- "duration": 0,
- "thumbnail": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Vote management service for polls. Users can vote on poll options but cannot edit votes. One vote per user per poll (unless poll allows multiple choices).
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve votes for a specific poll. Must provide content reference
| contentRef | string <objectId> Filter by content (poll) ID |
| pollOptId | string Filter by poll option ID |
| createdBy | string Filter by voter user ID |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "contentRef": "string",
- "pollOptId": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Submit a vote for a poll option. Requirements:
| contentRef required | string <objectId> Reference to the poll content |
| pollOptId required | string Poll option ID that this vote is for |
{- "contentRef": "string",
- "pollOptId": "string"
}{- "_id": "string",
- "contentRef": "string",
- "pollOptId": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Remove a vote by vote ID. Only the vote creator or admins can remove votes
| id required | string ID of votes to remove |
{- "_id": "string",
- "contentRef": "string",
- "pollOptId": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Welcome widget service for retrieving unseen/new content for dashboard display. Provides personalized content feed for users based on their last visit.
Note: This is a create-only service that returns widget data based on request parameters.
Generate welcome widget data with unseen content for the authenticated user. Returns paginated list of new content since last visit
| widgetType required | string Value: "welcomewidget" Widget type identifier (must be "welcomewidget") |
| unseen | boolean Default: true Filter for unseen content only |
| skip | integer >= 0 Default: 0 Number of items to skip for pagination |
| limit | integer [ 1 .. 100 ] Default: 20 Maximum number of items to retrieve |
| contentTypes | Array of strings Items Enum: "news" "event" "poll" "task" "manual" "faq" Filter by specific content types |
{- "widgetType": "welcomewidget",
- "unseen": true,
- "skip": 0,
- "limit": 20,
- "contentTypes": [
- "news"
]
}{- "total": 10,
- "contents": [
- { }
], - "lastVisit": "2019-08-24T14:15:22Z"
}Widget configuration service for managing application navigation and dashboard pages. Typically uses a single configuration document that defines all pages and widgets. Pages are automatically filtered by user permissions (orgunits and groups).
Standard Query Parameters: This endpoint supports standard FeathersJS query parameters. See the Common Information section for details.
Retrieve widget configuration. Returns pages filtered by current user permissions unless user has navigation.admin role
| $limit | integer Number of results to return |
| $skip | integer Number of results to skip |
| $sort | object Property to sort results |
object (widgets) Query parameters to filter |
{- "total": 0,
- "limit": 0,
- "skip": 0,
- "data": [
- {
- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "orgunits": [
- "string"
], - "groups": { },
- "widgets": [
- { }
]
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create widget configuration. [Admin only]
required | Array of objects Array of pages/widgets in navigation |
{- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "groups": { },
- "widgets": [
- { }
]
}
]
}{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "orgunits": [
- "string"
], - "groups": { },
- "widgets": [
- { }
]
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve specific widget configuration by ID
| id required | string ID of widgets to return |
{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "orgunits": [
- "string"
], - "groups": { },
- "widgets": [
- { }
]
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Replace entire widget configuration. Triggers widgetsChanged event. [Admin only]
| id required | string ID of widgets to update |
required | Array of objects Array of pages/widgets in navigation |
{- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "groups": { },
- "widgets": [
- { }
]
}
]
}{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "orgunits": [
- "string"
], - "groups": { },
- "widgets": [
- { }
]
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Update specific fields in widget configuration. Triggers widgetsChanged event. [Admin only]
| id required | string ID of widgets to update |
required | Array of objects Array of pages/widgets in navigation |
{- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "groups": { },
- "widgets": [
- { }
]
}
]
}{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "orgunits": [
- "string"
], - "groups": { },
- "widgets": [
- { }
]
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Delete widget configuration. [Admin only]
| id required | string ID of widgets to remove |
{- "_id": "string",
- "pages": [
- {
- "_id": "string",
- "orderIndex": 0,
- "originLanguage": "string",
- "translators": [ ],
- "title": { },
- "mobile": true,
- "desktop": true,
- "permaUrl": "string",
- "openOn": "newtab",
- "icon": "string",
- "type": "dashboard",
- "externalUrl": "string",
- "orgchartSelection": { },
- "orgchartAttrSelection": { },
- "orgunits": [
- "string"
], - "groups": { },
- "widgets": [
- { }
]
}
], - "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Workflow automation service for executing approval flows and automated actions. Currently supports content approval workflow.
Available Actions: approveContent,rejectContent,approveTaskAnswer,rejectTaskAnswer
Execute workflow action (approve, reject, etc.)
| action required | string Enum: "approveContent" "rejectContent" "approveTaskAnswer" "rejectTaskAnswer" Workflow action to execute. Allowed values: approveContent,rejectContent,approveTaskAnswer,rejectTaskAnswer |
| value | string Optional value/comment for the action (e.g., rejection reason) |
| ref required | string <objectId> Reference to document (currently supports content) |
| notify | boolean Default: true Whether to send notifications about this action |
{- "action": "approveContent",
- "value": "string",
- "ref": "string",
- "notify": true
}{- "action": "approveContent",
- "value": "string",
- "ref": "string",
- "notify": true
}