RMP v2.0 Complete API Reference

Comprehensive documentation for all API endpoints and XIMSS protocol functions

XIMSS Protocol Functions

XIMSSService.extractSession(token)
Extracts CommuniGate Pro session information from JWT token
token: JWT token string
Returns: XIMSSSession object with sessionId, userName, domain, server, port
XIMSSService.executeCommand(session, command, attributes, xmlBody)
Executes any XIMSS command against CommuniGate Pro server
session: XIMSSSession object
command: XIMSS command name
attributes: Command attributes object
xmlBody: Optional XML body content
Returns: Parsed XML response from server
XIMSSService.openCalendar(session, calendar)
Opens a calendar for read/write operations (required before any calendar operations)
session: XIMSSSession object
calendar: Calendar name (default: 'Calendar')
Returns: Success status with calendar handle
Requires calendar access permissions
XIMSSService.findEvents(session, calendar, timeFrom, timeTill, itemData)
Retrieves calendar events within specified time range
session: XIMSSSession object
calendar: Calendar handle name
timeFrom: Start time (YYYYMMDDTHHMMSS format)
timeTill: End time (YYYYMMDDTHHMMSS format)
itemData: Fields to return (optional)
Returns: Array of calendar events
XIMSSService.calendarPublish(session, calendar, eventData)
Publishes/creates a calendar event with METHOD:PUBLISH or METHOD:REQUEST
session: XIMSSSession object
calendar: Calendar handle
eventData: iCalendar XML event data
Returns: Created event UID and status
// Example iCalendar format: <iCalendar xmlns="urn:ietf:params:xml:ns:xcal"> <vCalendar method="PUBLISH" prodid="RMP v2.0" version="2.0"> <vevent> <uid>RMP-123456789</uid> <summary>Meeting Title</summary> <dtstart>20250830T140000</dtstart> <dtend>20250830T150000</dtend> </vevent> </vCalendar> </iCalendar>

Authentication & Authorization

POST /api/v2/auth/simple-login

Authenticate with CommuniGate Pro server and receive JWT token

Parameter Type Required Description
email string Yes User email address
password string Yes User password
server string No CommuniGate Pro server (extracted from email domain if not provided)
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": {
    "email": "user@domain.com",
    "realName": "John Doe",
    "isDomainAdmin": false,
    "isServerAdmin": false
  },
  "sessionId": "1-xxxxx-xxxxx",
  "expiresIn": 3600
}
POST /api/v2/auth/refresh

Refresh an expired JWT token using refresh token

Header Type Required Description
Authorization string Yes Bearer [refresh-token]
GET /api/v2/auth/check-admin

Check if authenticated user has admin privileges

Requires valid JWT token
{
  "isAdmin": true,
  "isDomainAdmin": true,
  "isServerAdmin": false,
  "adminDomains": ["domain.com", "sub.domain.com"]
}
POST /api/v2/auth/logout

Terminate session and invalidate JWT token

Requires valid JWT token

Calendar Operations

GET /api/v2/calendars

List all calendars accessible to authenticated user

Requires valid JWT token
{
  "success": true,
  "calendars": [
    {
      "name": "Calendar",
      "type": "personal",
      "access": "read-write"
    },
    {
      "name": "Team Calendar",
      "type": "shared",
      "access": "read-only"
    }
  ]
}
GET /api/v2/calendars/:id/events

Get events from a specific calendar

Parameter Type Required Description
startDate string Yes Start date (ISO 8601)
endDate string Yes End date (ISO 8601)
includeRecurring boolean No Include recurring events (default: true)
POST /api/v2/calendars/:id/events

Create a new calendar event

Body Parameter Type Required Description
title string Yes Event title
startTime string Yes Start time (ISO 8601)
endTime string Yes End time (ISO 8601)
location string No Event location
attendees array No Array of attendee email addresses
sendInvitations boolean No Send email invitations (default: true)
GET /api/v2/calendars/:id/freebusy

Get free/busy information for calendar

Parameter Type Required Description
email string Yes Email address to check
startTime string Yes Start time (ISO 8601)
endTime string Yes End time (ISO 8601)
{
  "success": true,
  "periods": [
    {
      "from": "2025-08-30T10:00:00Z",
      "till": "2025-08-30T11:00:00Z",
      "type": "BUSY"
    },
    {
      "from": "2025-08-30T14:00:00Z",
      "till": "2025-08-30T15:30:00Z",
      "type": "TENTATIVE"
    }
  ]
}
DELETE /api/v2/calendars/:calendarId/events/:eventId

Cancel/delete a calendar event

Parameter Type Required Description
sendCancellation boolean No Send cancellation notices (default: true)
recurrenceId string No For recurring events, specific occurrence ID

Resource Management

GET /api/v2/resources

List all available resources

Parameter Type Required Description
type string No Filter by resource type
category string No Filter by category
available boolean No Only show available resources
page number No Page number (default: 1)
limit number No Items per page (default: 50)
{
  "success": true,
  "resources": [
    {
      "id": "room-01@confroom.resources.domain.com",
      "name": "Conference Room 01",
      "type": "conference-room",
      "category": "meeting-resources",
      "capacity": 10,
      "features": ["projector", "whiteboard", "video-conferencing"],
      "customFields": {
        "floor": "3rd",
        "building": "Main"
      }
    }
  ],
  "total": 150,
  "page": 1,
  "pages": 3
}
GET /api/v2/resources/:id

Get detailed information about a specific resource

Requires valid JWT token
POST /api/v2/resources

Create a new resource (Admin only)

Requires admin privileges
Body Parameter Type Required Description
name string Yes Resource name
type string Yes Resource type ID
category string Yes Resource category
customFields object No Custom field values
PUT /api/v2/resources/:id

Update resource information (Admin only)

Requires admin privileges
DELETE /api/v2/resources/:id

Delete a resource (Admin only)

Requires admin privileges
GET /api/v2/resources/:id/availability

Check resource availability for specific time range

Parameter Type Required Description
startTime string Yes Start time (ISO 8601)
endTime string Yes End time (ISO 8601)

Booking Operations

GET /api/v2/bookings

List bookings for authenticated user

Parameter Type Required Description
status string No Filter by status (confirmed, tentative, cancelled)
startDate string No Filter bookings after this date
endDate string No Filter bookings before this date
resourceId string No Filter by specific resource
POST /api/v2/bookings

Create a new booking

Body Parameter Type Required Description
resourceId string Yes Resource to book
title string Yes Booking title
startTime string Yes Start time (ISO 8601)
endTime string Yes End time (ISO 8601)
attendees array No List of attendee emails
sendInvitations boolean No Send invitations (default: false for direct write)
services array No Additional services (catering, equipment)
{
  "success": true,
  "booking": {
    "id": "RMP-1755199070886-94jjgepj3",
    "resourceId": "room-01@confroom.resources.domain.com",
    "title": "Team Meeting",
    "startTime": "2025-08-30T14:00:00Z",
    "endTime": "2025-08-30T15:00:00Z",
    "status": "confirmed",
    "organizer": "user@domain.com",
    "attendees": ["user2@domain.com", "user3@domain.com"],
    "calendarEventId": "13"
  }
}
PUT /api/v2/bookings/:id

Update an existing booking

Must be booking owner or admin
DELETE /api/v2/bookings/:id

Cancel a booking

Parameter Type Required Description
sendCancellation boolean No Send cancellation notices (default: true)
POST /api/v2/bookings/check-conflicts

Check for booking conflicts

Body Parameter Type Required Description
resources array Yes Resource IDs to check
startTime string Yes Start time
endTime string Yes End time

Resource Types

GET /api/v2/resource-types

List all resource types and categories

{
  "success": true,
  "categories": [
    {
      "id": "meeting-resources",
      "name": "Meeting Resources",
      "icon": "bi-door-open"
    },
    {
      "id": "equipment",
      "name": "Equipment",
      "icon": "bi-laptop"
    }
  ],
  "types": [
    {
      "id": "conference-room",
      "name": "Conference Room",
      "category": "meeting-resources",
      "fields": [
        {
          "name": "capacity",
          "type": "number",
          "required": true
        },
        {
          "name": "features",
          "type": "multiselect",
          "options": ["projector", "whiteboard", "video-conferencing"]
        }
      ]
    }
  ]
}
POST /api/v2/resource-types

Create a new resource type (Admin only)

Requires admin privileges
PUT /api/v2/resource-types/:id

Update resource type configuration (Admin only)

Requires admin privileges

Contacts & Group Management

GET /api/v2/contacts

Get user's contacts from Contacts folder

Parameter Type Required Description
search string No Search term for filtering
limit number No Maximum results (default: 100)
{
  "success": true,
  "contacts": [
    {
      "uid": "contact-123",
      "name": "John Doe",
      "email": "john@domain.com",
      "phone": "+1234567890",
      "organization": "ACME Corp"
    }
  ]
}
GET /api/v2/contacts-all-books

Get contacts from ALL address books

Parameter Type Required Description
addressBook string No Specific address book to search
includeGroups boolean No Include contact groups (default: true)
{
  "success": true,
  "addressBooks": ["Contacts", "adressbuch2", "Business Contacts"],
  "contacts": [
    {
      "email": "john@domain.com",
      "name": "John Doe",
      "phone": "+1234567890",
      "addressBook": "Contacts"
    }
  ],
  "groups": [
    {
      "name": "[Development Team]",
      "members": ["dev1@domain.com", "dev2@domain.com"],
      "addressBook": "Contacts"
    }
  ]
}
POST /api/v2/contacts

Create a new contact (vCard)

Body Parameter Type Required Description
name string Yes Contact full name
email string Yes Email address
phone string No Phone number
organization string No Company/organization name
addressBook string No Target address book (default: Contacts)
PUT /api/v2/contacts/:uid

Update an existing contact

Requires valid JWT token
DELETE /api/v2/contacts/:uid

Delete a contact

Requires valid JWT token
GET /api/v2/groups

Get server groups and contact groups

{
  "success": true,
  "serverGroups": [
    {
      "name": "AllUsers",
      "members": ["user1", "user2", "user3"]
    },
    {
      "name": "Administrators",
      "members": ["admin1", "admin2"]
    }
  ],
  "contactGroups": [
    {
      "name": "[Team Leaders]",
      "members": ["leader1@domain.com", "leader2@domain.com"],
      "description": "Project team leaders"
    }
  ]
}
POST /api/v2/groups

Create a new contact group

Body Parameter Type Required Description
name string Yes Group name (will be wrapped in [])
members array Yes Array of member email addresses
description string No Group description

User Management

GET /api/v2/users

List users in domain

Parameter Type Required Description
domain string No Domain to list users from (default: current domain)
includeResources boolean No Include resource accounts (default: false)
search string No Search filter for user names/emails
limit number No Maximum results (default: 100)
{
  "success": true,
  "users": [
    {
      "email": "user1@domain.com",
      "realName": "John Doe",
      "type": "user",
      "hasCalendar": true,
      "isAdmin": false
    },
    {
      "email": "user2@domain.com",
      "realName": "Jane Smith",
      "type": "user",
      "hasCalendar": true,
      "isAdmin": true
    }
  ],
  "total": 45
}
GET /api/v2/users/:email

Get detailed user information

Requires valid JWT token
{
  "success": true,
  "user": {
    "email": "user@domain.com",
    "realName": "John Doe",
    "type": "user",
    "hasCalendar": true,
    "isAdmin": false,
    "settings": {
      "timezone": "America/New_York",
      "language": "en-US",
      "dateFormat": "MM/DD/YYYY"
    },
    "quotas": {
      "mailbox": "10GB",
      "fileStorage": "5GB"
    }
  }
}
POST /api/v2/admin/users

Create a new user account (Admin only)

Requires admin privileges
Body Parameter Type Required Description
email string Yes User email address
password string Yes Initial password
realName string Yes User's full name
createCalendar boolean No Create calendar mailbox (default: true)
createContacts boolean No Create contacts folder (default: true)
isAdmin boolean No Grant admin privileges (default: false)
PUT /api/v2/admin/users/:email

Update user account settings (Admin only)

Requires admin privileges
DELETE /api/v2/admin/users/:email

Delete a user account (Admin only)

Requires admin privileges
Parameter Type Required Description
deleteData boolean No Delete all user data (default: false)
POST /api/v2/admin/users/:email/reset-password

Reset user password (Admin only)

Requires admin privileges
Body Parameter Type Required Description
newPassword string Yes New password
requireChange boolean No Force password change on next login

Domain Operations

GET /api/v2/domains

List all domains (Admin only)

Requires admin privileges
{
  "success": true,
  "domains": [
    {
      "name": "domain.com",
      "type": "primary",
      "users": 150,
      "resources": 75,
      "created": "2024-01-15T00:00:00Z"
    },
    {
      "name": "confroom.resources.domain.com",
      "type": "resource-subdomain",
      "parent": "domain.com",
      "resources": 25
    }
  ]
}
POST /api/v2/admin/domains

Create a new domain or subdomain (Admin only)

Requires server admin privileges
Body Parameter Type Required Description
domain string Yes Domain name
type string No Domain type (primary, resource-subdomain)
adminEmail string No Domain admin email
GET /api/v2/domains/:domain/settings

Get domain settings (Admin only)

Requires domain admin privileges
PUT /api/v2/domains/:domain/settings

Update domain settings (Admin only)

Requires domain admin privileges

File Operations

GET /api/v2/files

List files in user's file storage

Parameter Type Required Description
path string No Directory path (default: /)
account string No Account to access (admin only)
{
  "success": true,
  "files": [
    {
      "name": "document.pdf",
      "type": "file",
      "size": 1024000,
      "modified": "2025-08-30T10:00:00Z",
      "mimeType": "application/pdf"
    },
    {
      "name": "RMPSettings",
      "type": "directory",
      "modified": "2025-08-30T09:00:00Z"
    }
  ]
}
GET /api/v2/files/:path

Download a file

Requires valid JWT token
POST /api/v2/files

Upload a file

Body Parameter Type Required Description
file file Yes File to upload (multipart/form-data)
path string No Target directory path
DELETE /api/v2/files/:path

Delete a file

Requires valid JWT token

Admin Operations

POST /api/v2/admin/bulk-create-resources

Bulk create multiple resources (Admin only)

Requires admin privileges
Body Parameter Type Required Description
pattern string Yes Naming pattern with {n}, {nn}, {nnn}
startNumber number Yes Starting number
count number Yes Number to create
type string Yes Resource type ID
customFields object No Custom field values (supports patterns)
{
  "success": true,
  "created": 10,
  "resources": [
    "room-01@confroom.resources.domain.com",
    "room-02@confroom.resources.domain.com",
    // ... more resources
  ]
}
GET /api/v2/admin/statistics

Get system statistics and usage metrics (Admin only)

Requires admin privileges
{
  "success": true,
  "statistics": {
    "totalUsers": 150,
    "totalResources": 75,
    "totalBookings": 1234,
    "activeBookings": 45,
    "utilizationRate": 78.5,
    "topResources": [
      {
        "id": "room-01",
        "name": "Conference Room 01",
        "bookings": 234,
        "utilization": 85.2
      }
    ],
    "bookingTrends": {
      "daily": [45, 52, 48, 61, 55],
      "weekly": [312, 298, 345, 378]
    }
  }
}
POST /api/v2/admin/import-resources

Import resources from CSV/JSON (Admin only)

Requires admin privileges
Body Parameter Type Required Description
file file Yes CSV or JSON file
format string No File format (csv, json) - auto-detected if not specified
dryRun boolean No Validate without creating (default: false)
GET /api/v2/admin/export-resources

Export all resources to CSV/JSON (Admin only)

Requires admin privileges
Parameter Type Required Description
format string No Export format (csv, json) - default: json
includeBookings boolean No Include booking history
POST /api/v2/admin/backup

Create system backup (Admin only)

Requires server admin privileges
POST /api/v2/admin/restore

Restore from backup (Admin only)

Requires server admin privileges

SaaS & Portal Operations

POST /api/v2/saas/register

Register new SaaS customer subscription

Body Parameter Type Required Description
companyName string Yes Company name
emailDomain string Yes Company email domain
adminEmail string Yes Administrator email
services array Yes Selected services and plans
deployment string Yes cloud or self-hosted
region string No Preferred region (EU, US, Asia)
{
  "success": true,
  "subscription": {
    "id": "sub_123456",
    "companyName": "ACME Corp",
    "emailDomain": "acme.com",
    "server": "cgpro.rmp.cloud",
    "services": {
      "rmp": {
        "plan": "standard",
        "price": 49.99
      },
      "email": {
        "plan": "business",
        "price": 9.99
      }
    },
    "totalMonthly": 59.98,
    "status": "active"
  }
}
POST /api/v2/saas/customer-login

SaaS customer login with subscription lookup

Body Parameter Type Required Description
email string Yes User email
password string Yes Password

Note: Server is automatically determined from subscription data - no server field required

{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": {
    "email": "user@acme.com",
    "realName": "John Doe",
    "company": "ACME Corp"
  },
  "subscription": {
    "services": ["rmp", "email", "storage"],
    "status": "active",
    "expiresAt": "2025-12-31T23:59:59Z"
  }
}
GET /api/v2/saas/subscription

Get current subscription details

Requires valid JWT token
{
  "success": true,
  "subscription": {
    "id": "sub_123456",
    "status": "active",
    "services": {
      "rmp": {
        "plan": "standard",
        "users": 45,
        "maxUsers": 50,
        "resources": 95,
        "maxResources": 100
      },
      "email": {
        "plan": "business",
        "storage": "42GB",
        "maxStorage": "50GB"
      }
    },
    "billing": {
      "monthly": 59.98,
      "nextBilling": "2025-09-01T00:00:00Z",
      "paymentMethod": "credit_card"
    }
  }
}
GET /api/v2/saas/available-servers

Get available servers and capacity

{
  "success": true,
  "servers": [
    {
      "id": "cgpro-eu-1",
      "name": "Europe Server 1",
      "region": "EU",
      "location": "Frankfurt, Germany",
      "capacity": {
        "current": 20,
        "maximum": 100,
        "percentage": 20
      },
      "status": "available",
      "features": ["auto-backup", "high-availability"]
    },
    {
      "id": "cgpro-us-1",
      "name": "US East Server 1",
      "region": "US",
      "location": "Virginia, USA",
      "capacity": {
        "current": 45,
        "maximum": 100,
        "percentage": 45
      },
      "status": "available"
    }
  ]
}
PUT /api/v2/saas/subscription/upgrade

Upgrade subscription plan

Requires valid JWT token
Body Parameter Type Required Description
service string Yes Service to upgrade (rmp, email, etc.)
newPlan string Yes Target plan name
GET /api/v2/saas/invoices

Get billing invoices

Requires valid JWT token

WebSocket Real-time Events

Connection
Connect to WebSocket server for real-time updates
const socket = io('wss://rmp.core.at', { auth: { token: 'your-jwt-token' }, transports: ['websocket'] }); socket.on('connect', () => { console.log('Connected to WebSocket'); }); socket.on('error', (error) => { console.error('WebSocket error:', error); });
Event: booking:created
Fired when a new booking is created
socket.on('booking:created', (data) => { console.log('New booking:', data); // data = { // booking: { id, title, resourceId, startTime, endTime, organizer }, // timestamp: '2025-08-30T10:00:00Z' // } });
Event: booking:updated
Fired when a booking is modified
socket.on('booking:updated', (data) => { console.log('Updated booking:', data); // data = { // booking: { id, title, changes }, // timestamp: '2025-08-30T10:00:00Z' // } });
Event: booking:cancelled
Fired when a booking is cancelled
socket.on('booking:cancelled', (data) => { console.log('Cancelled booking:', data); // data = { // bookingId: 'RMP-123456', // reason: 'User cancelled', // timestamp: '2025-08-30T10:00:00Z' // } });
Subscribe to Resource
Subscribe to updates for specific resource
// Subscribe to resource updates socket.emit('subscribe:resource', { resourceId: 'room-01@confroom.resources.domain.com' }); // Listen for resource-specific updates socket.on('resource:update', (data) => { console.log('Resource update:', data); // data = { // resourceId: 'room-01@confroom.resources.domain.com', // event: 'booking_added', // booking: { ... } // } }); // Unsubscribe from resource socket.emit('unsubscribe:resource', { resourceId: 'room-01@confroom.resources.domain.com' });
Subscribe to Calendar
Subscribe to calendar event updates
// Subscribe to calendar socket.emit('subscribe:calendar', { calendarId: 'user@domain.com/Calendar' }); // Listen for calendar updates socket.on('calendar:event:added', (data) => { console.log('New calendar event:', data); }); socket.on('calendar:event:modified', (data) => { console.log('Modified calendar event:', data); }); socket.on('calendar:event:deleted', (data) => { console.log('Deleted calendar event:', data); });
Real-time Search
Search with real-time results streaming
// Start real-time search socket.emit('search:start', { query: 'conference', types: ['resources', 'bookings'], stream: true }); // Receive search results as they come socket.on('search:result', (data) => { console.log('Search result:', data); // Results stream in as they're found }); socket.on('search:complete', (data) => { console.log('Search complete:', data.totalResults); });
System Notifications
Receive system-wide notifications
// Listen for system notifications socket.on('notification', (data) => { console.log('System notification:', data); // data = { // type: 'info|warning|error', // title: 'Maintenance Notice', // message: 'System maintenance scheduled', // timestamp: '2025-08-30T10:00:00Z' // } }); // Admin-only: Broadcast notification socket.emit('admin:broadcast', { type: 'info', title: 'System Update', message: 'New features available', targets: ['all'] // or specific user/resource IDs });
Presence & Status
Track user presence and resource availability
// Update user presence socket.emit('presence:update', { status: 'online', // online, away, busy, offline message: 'In a meeting' }); // Subscribe to presence updates socket.emit('presence:subscribe', { users: ['user1@domain.com', 'user2@domain.com'] }); socket.on('presence:changed', (data) => { console.log('User presence changed:', data); // data = { // userId: 'user1@domain.com', // status: 'busy', // message: 'In a meeting', // timestamp: '2025-08-30T10:00:00Z' // } });

Cache Management

CalendarCacheService
Server-side calendar data caching with Redis
Storage: Redis with domain-namespaced keys
TTL: 5 minutes for calendar events, 1 minute for free/busy
Key Format: tenant:{domain}:calendar:{calendarId}:events
Invalidation: Automatic on booking changes
POST /api/v2/cache/invalidate

Manually invalidate cache entries (Admin only)

Requires admin privileges
Body Parameter Type Required Description
pattern string Yes Cache key pattern to invalidate (supports wildcards)
type string No Cache type (calendar, resource, user)
{
  "success": true,
  "invalidated": 15,
  "message": "Invalidated 15 cache entries matching pattern"
}
GET /api/v2/cache/stats

Get cache statistics (Admin only)

Requires admin privileges
{
  "success": true,
  "stats": {
    "hitRate": 0.85,
    "totalKeys": 1234,
    "memoryUsed": "45MB",
    "evictions": 89,
    "byType": {
      "calendar": {
        "keys": 456,
        "hitRate": 0.92,
        "avgTTL": 240
      },
      "resource": {
        "keys": 234,
        "hitRate": 0.88,
        "avgTTL": 180
      },
      "freebusy": {
        "keys": 544,
        "hitRate": 0.79,
        "avgTTL": 60
      }
    }
  }
}
POST /api/v2/cache/warm

Pre-warm cache with specific data (Admin only)

Requires admin privileges
Body Parameter Type Required Description
type string Yes Data type to warm (calendar, resource, freebusy)
targets array Yes List of calendar/resource IDs to pre-cache
dateRange object No Date range for calendar data
GET /api/v2/cache/config

Get cache configuration (Admin only)

Requires admin privileges
{
  "success": true,
  "config": {
    "provider": "redis",
    "maxMemory": "512MB",
    "evictionPolicy": "allkeys-lru",
    "ttlDefaults": {
      "calendar": 300,
      "resource": 300,
      "freebusy": 60,
      "user": 600
    },
    "namespacing": {
      "enabled": true,
      "pattern": "tenant:{domain}:{type}:{id}"
    }
  }
}

RMP v2.0 API Documentation
Author: [core] Information Technologies
Last Updated: August 2025