API Overview
Everything you need to integrate with our gamification platform
ProEnhance API
User-facing gamification API for signup, login, challenges, rewards tracking, and user engagement. Perfect for mobile apps and customer portals.
ProControl API
Administrative API for program design and management. Create campaigns, configure behaviors, manage organizations, and control the entire loyalty ecosystem.
Authentication
Secure authentication required for all API endpoints
ProEnhance API
Valid API Keys are generated on an Organisation level for authentication:
x-api-key: YOUR_ORG_API_KEY
ProControl API
Administrative Bearer token authentication for all endpoints:
Authorization: Bearer ADMIN_JWT_TOKEN
Base URL:
https://control.proeliumintelligence.com
ProEnhance API
User-facing gamification and loyalty platform endpoints
User Management
Register a new user account
Request Body
{
"username": "string",
"email": "string",
"password": "string",
"firstName": "string",
"lastName": "string"
}
Response
{
"id": "string",
"username": "string",
"email": "string",
"emailVerified": false,
"createdAt": "2023-01-01T00:00:00Z"
}
Authenticate user and receive JWT token
Request Body
{
"email": "string",
"password": "string"
}
Response
{
"token": "string",
"user": {
"id": "string",
"username": "string",
"email": "string"
},
"expiresAt": "2023-01-01T00:00:00Z"
}
Verify user email address with token
Email verification endpoint - no additional parameters required. The token is provided in the URL path.
Update user profile information
Update user profile endpoint. Requires authentication. Request body should contain user profile fields to update.
Get user's challenges and progress
Get all challenges for a specific user, including their progress and completion status.
Organisation
Authenticate organisation with API key
Authenticate an organisation using their API key. Include the X-API-Key header in your request.
Rewards
Get reward details by ID
Retrieve detailed information about a specific reward including points value, availability, and redemption details.
Events
Process a new event
Submit a new event for processing. The event will be evaluated against configured behaviors and may trigger rewards or challenge progress updates.
ProControl API
Administrative API for designing loyalty and incentive programs
Back Office Users
Create a new back office user
Request Body
{
"firstName": "John",
"lastName": "Doe",
"name": "John Doe",
"email": "john@example.com",
"userName": "johndoe",
"phoneNumber": "+1234567890",
"emailConfirmed": true,
"lockoutEnabled": false,
"twoFactorEnabled": false
}
Response
{
"success": true,
"message": "User created successfully"
}
Get all back office users with pagination
Query Parameters
Number of records to skip
Maximum records to return
Response
[
{
"id": "string",
"firstName": "string",
"lastName": "string",
"email": "string",
"userName": "string"
}
]
Get back office user by ID
Retrieve detailed information about a specific back office user by their ID.
Update back office user
Update an existing back office user's information. Provide the user ID in the URL and updated user data in the request body.
Delete back office user
Permanently delete a back office user account. This action cannot be undone. Provide the user ID in the URL.
Users
Create a new user with external ID
Request Body
{
"externalUserId": "external_123",
"associatedOrganisations": [
"org_id_1",
"org_id_2"
],
"optIn": true,
"activity": {
"points": 100,
"challengesInProgress": 2
}
}
Response
{
"id": "string",
"externalUserId": "string",
"optIn": true,
"createdAt": "2023-01-01T00:00:00Z"
}
Get users with filtering and pagination
Query Parameters
Filter by organisation
Filter by opt-in status
Response
[
{
"id": "string",
"externalUserId": "string",
"optIn": true,
"associatedOrganisations": ["org1"]
}
]
Organisations
Create a new organisation
Request Body
{
"name": "Company Ltd",
"description": "A sample company",
"type": "Enterprise",
"industry": "Technology",
"email": "info@company.com",
"website": "https://company.com",
"isActive": true
}
Response
{
"id": "string",
"name": "string",
"isActive": true,
"createdAt": "2023-01-01T00:00:00Z"
}
Get organisation by ID
Retrieve detailed information about a specific organisation including name, description, contact details, and associated features.
Rewards
Get rewards with filtering and pagination
Query Parameters
Filter by organisation
Filter by live status
Filter by active status
Response
[
{
"id": "string",
"name": "string",
"pointsValue": 100,
"monetaryValue": 10.00,
"isActive": true,
"category": "gift_card"
}
]
Create a new reward
Request Body
{
"name": "$10 Gift Card",
"description": "Amazon gift card",
"organisationId": "org123",
"pointsValue": 1000,
"monetaryValue": 10.00,
"availableStock": 100,
"isActive": true,
"category": "gift_card"
}
Response
{
"id": "string",
"name": "string",
"pointsValue": 1000,
"createdAt": "2023-01-01T00:00:00Z"
}
Get reward by ID
Retrieve detailed information about a specific reward including points value, description, availability, and redemption details.
Update reward
Update an existing reward's details including name, description, points value, or availability status.
Delete reward
Permanently remove a reward from the system. This action cannot be undone and will affect any associated challenges or campaigns.
Challenges
Create a new challenge
Request Body
{
"name": "Daily Steps Challenge",
"description": "Walk 10,000 steps daily",
"organisationId": "org123",
"targetValue": 10000,
"targetUnit": "steps",
"pointsReward": 100,
"startDate": "2023-01-01T00:00:00Z",
"endDate": "2023-12-31T23:59:59Z",
"isActive": true
}
Response
{
"id": "string",
"name": "string",
"isActive": true,
"createdAt": "2023-01-01T00:00:00Z"
}
Get challenges with filtering
Query Parameters
Filter by organisation
Filter by active status
Response
[
{
"id": "string",
"name": "string",
"targetValue": 10000,
"pointsReward": 100,
"isActive": true
}
]
Event Evaluation
Evaluate and process an event
Request Body
{
"eventType": "user_action",
"userId": "user123",
"organisationId": "org123",
"eventDateTime": "2023-01-01T00:00:00Z",
"eventData": {
"action": "login",
"points": 10
},
"metadata": {
"source": "mobile_app"
}
}
Response
{
"processed": true,
"message": "Event processed successfully",
"pointsAwarded": 10,
"challengesUpdated": 1
}
Get fleet management test example
Get a sample fleet management event for testing purposes. Shows the expected structure for fleet-related events.
Get transport management test example
Get a sample transport management event for testing purposes. Shows the expected structure for transport-related events.
Badges
Get badges with filtering and pagination
Query Parameters
Filter by organisation
Filter by live status
Filter by status
Response
[
{
"id": "string",
"name": "string",
"description": "string",
"logoType": "string",
"isLive": true,
"status": "active"
}
]
Create a new badge
Request Body
{
"name": "Achievement Badge",
"description": "Awarded for completing challenges",
"logoType": "trophy",
"organisationId": "org123",
"isLive": true,
"status": "active"
}
Response
{
"id": "string",
"name": "string",
"isLive": true,
"createdAt": "2023-01-01T00:00:00Z"
}
Behaviours
Get behaviours with filtering options
Query Parameters
Filter by organisation
Filter by live status
Response
[
{
"id": "string",
"name": "string",
"eventType": "string",
"isLive": true,
"status": "active"
}
]
Create a new behaviour
Request Body
{
"name": "Login Behavior",
"eventType": "user_login",
"organisationId": "org123",
"conditions": [
{
"field": "loginCount",
"operator": "greater_than",
"value": "5",
"dataType": "integer"
}
],
"isLive": true
}
Response
{
"id": "string",
"name": "string",
"eventType": "string",
"createdAt": "2023-01-01T00:00:00Z"
}
Campaigns
Get campaigns with filtering options
Query Parameters
Filter by organisation
Filter by active status
Response
[
{
"id": "string",
"name": "string",
"text": "string",
"validFrom": "2023-01-01T00:00:00Z",
"validTo": "2023-12-31T23:59:59Z",
"hashtags": ["promo", "loyalty"]
}
]
Create a new campaign
Request Body
{
"name": "Summer Promotion",
"text": "Get 20% off this summer!",
"image": "https://example.com/image.jpg",
"hashtags": ["summer", "discount"],
"validFrom": "2023-06-01T00:00:00Z",
"validTo": "2023-08-31T23:59:59Z",
"organisationId": "org123",
"link": "https://example.com/promo"
}
Response
{
"id": "string",
"name": "string",
"validFrom": "2023-06-01T00:00:00Z",
"createdAt": "2023-01-01T00:00:00Z"
}
Surveys
Get surveys with filtering options
Query Parameters
Filter by organisation
Filter by active status
Response
[
{
"id": "string",
"name": "string",
"validFrom": "2023-01-01T00:00:00Z",
"validTo": "2023-12-31T23:59:59Z",
"questions": [
{
"text": "How satisfied are you?",
"responseType": "rating"
}
]
}
]
Create a new survey
Request Body
{
"name": "Customer Satisfaction",
"organisationId": "org123",
"validFrom": "2023-01-01T00:00:00Z",
"validTo": "2023-12-31T23:59:59Z",
"questions": [
{
"text": "Rate our service",
"responseType": "rating"
},
{
"text": "Any feedback?",
"responseType": "text"
}
]
}
Response
{
"id": "string",
"name": "string",
"validFrom": "2023-01-01T00:00:00Z",
"createdAt": "2023-01-01T00:00:00Z"
}
Promotions
Create a new promotion
Request Body
{
"name": "Summer Sale",
"code": "SUMMER20",
"organisationId": "org123",
"discount": 20.0,
"description": "20% off summer items",
"validFrom": "2023-06-01T00:00:00Z",
"validTo": "2023-08-31T23:59:59Z",
"usageLimit": 1000,
"isPercentage": true,
"isActive": true
}
Response
{
"id": "string",
"name": "string",
"code": "string",
"discount": 20.0,
"createdAt": "2023-01-01T00:00:00Z"
}
Get promotion by ID
Retrieve detailed information about a specific promotion including discount amount, validity dates, usage limits, and associated terms.
Data Schemas
Data models and structures for both API platforms
ProEnhance API Schemas
User
{
"id": "string",
"username": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"emailVerified": "boolean",
"createdAt": "string",
"updatedAt": "string"
}
UserChallenge
{
"id": "string",
"userId": "string",
"title": "string",
"description": "string",
"progress": "number",
"completed": "boolean",
"reward": {
"id": "string",
"name": "string",
"points": "number"
}
}
Reward
{
"id": "string",
"name": "string",
"description": "string",
"points": "number",
"type": "string",
"available": "boolean",
"createdAt": "string"
}
Event
{
"id": "string",
"userId": "string",
"eventType": "string",
"data": "object",
"timestamp": "string",
"processed": "boolean"
}
ProControl API Schemas
UserRequest
{
"externalUserId": "string",
"associatedOrganisations": ["string"],
"optIn": "boolean",
"optInDate": "string (date-time)",
"optOutDate": "string (date-time)",
"activity": {
"challengesInProgress": "integer",
"challengesExpired": "integer",
"socialShares": "integer",
"rewardsClaimed": "integer",
"rewardsRedeemed": "integer",
"points": "integer"
}
}
BackOfficeUserRequest
{
"firstName": "string",
"lastName": "string",
"name": "string",
"email": "string (email)",
"userName": "string",
"phoneNumber": "string",
"emailConfirmed": "boolean",
"lockoutEnabled": "boolean",
"twoFactorEnabled": "boolean",
"about": "string",
"address": "string",
"jobTitle": "string",
"roles": ["string"],
"associatedOrganisations": ["string"]
}
ChallengeRequest
{
"name": "string",
"description": "string",
"organisationId": "string",
"instructions": "string",
"associatedBehaviourId": "string",
"associatedRewardId": "string",
"logoUrl": "string (uri)",
"targetValue": "integer",
"targetUnit": "string",
"startDate": "string (date-time)",
"endDate": "string (date-time)",
"pointsReward": "integer",
"maxParticipants": "integer",
"isActive": "boolean",
"isRecurring": "boolean",
"recurrencePattern": "string",
"difficultyLevel": "string",
"category": "string",
"tags": ["string"],
"requiresApproval": "boolean",
"priority": "integer (0-5)"
}
RewardRequest
{
"name": "string",
"description": "string",
"organisationId": "string",
"code": "string",
"codeList": ["string"],
"pointsValue": "integer",
"monetaryValue": "number",
"availableStock": "integer",
"ttlTimeFrame": "string",
"ttlTimeFrameNumber": "integer",
"termsAndConditionsLink": "string (uri)",
"agreedLogoImage": "string (uri)",
"agreedProductImage": "string (uri)",
"redeemGuidance": "string",
"isActive": "boolean",
"requiresApproval": "boolean",
"category": "string",
"expiryDate": "string (date-time)"
}
EventRequest
{
"eventType": "string",
"userId": "string",
"organisationId": "string",
"eventDateTime": "string (date-time)",
"eventData": {
"additionalProperties": {}
},
"metadata": {
"additionalProperties": "string"
}
}
OrganisationRequest
{
"name": "string",
"childCompanies": ["string"],
"description": "string",
"type": "string",
"logoUrl": "string (uri)",
"features": ["string"],
"industry": "string",
"phone": "string",
"email": "string (email)",
"address": "string",
"website": "string (uri)",
"isActive": "boolean"
}
BadgeRequest
{
"name": "string",
"description": "string",
"logoType": "string",
"organisationId": "string",
"isLive": "boolean",
"status": "string"
}
BehaviourRequest
{
"name": "string",
"eventType": "string",
"organisationId": "string",
"conditions": [
{
"field": "string",
"operator": "string",
"value": "string",
"dataType": "string"
}
],
"isLive": "boolean",
"status": "string",
"duration": {
"type": "string",
"withinSpecificTimeframeNumber": "integer",
"withinSpecificTimeframe": "string",
"forSpecificTimeframeNumber": "integer",
"forSpecificTimeframe": "string",
"dateFrom": "string (date-time)",
"dateTo": "string (date-time)"
}
}
CampaignRequest
{
"name": "string",
"text": "string",
"image": "string (uri)",
"hashtags": ["string"],
"validFrom": "string (date-time)",
"validTo": "string (date-time)",
"organisationId": "string",
"link": "string (uri)"
}
SurveyRequest
{
"name": "string",
"organisationId": "string",
"validFrom": "string (date-time)",
"validTo": "string (date-time)",
"questions": [
{
"text": "string",
"responseType": "string"
}
]
}
PromotionRequest
{
"name": "string",
"code": "string",
"organisationId": "string",
"discount": "number (0-100)",
"description": "string",
"validFrom": "string (date-time)",
"validTo": "string (date-time)",
"usageLimit": "integer",
"timesUsed": "integer",
"minimumOrderValue": "number",
"maximumDiscountAmount": "number",
"isPercentage": "boolean",
"isActive": "boolean",
"requiresAuthentication": "boolean",
"productType": "string",
"productTypes": ["string"],
"allowedCompanies": ["string"],
"excludedProducts": ["string"],
"associatedChallenge": "string",
"category": "string"
}