Unity System

SSO handshakes, global payroll aggregators, operations synchronization, and mobile monitoring microservices.

01

SSO & Authentication

These endpoints manage the identity handshake between Unity and external applications. They handle token validation, company mapping, and mobile authentication flows.

POST /api/sso/validate-token Validate SSO Token

Validates a temporary token generated by the Unity launcher to authenticate a staff member via SSO.

Request Payload
{
  "token": "sso_token_string",
  "email": "staff@example.com"
}
Response
200 OK — Returns staff_data
POST /api/sso/staff/companies Get Staff Companies

Returns all companies that the given staff member has been mapped to across the Unity group.

Request Payload
{
  "email": "staff@example.com"
}
Response
200 OK — Returns list of mapped companies
POST /api/login Mobile App Login

Authenticates a user for the Unity Mobile App and issues a Bearer Token for subsequent API requests.

Request Payload
{
  "email": "staff@example.com",
  "password": "password123",
  "device_name": "iPhone 15"
}
Response
200 OK — Returns Bearer Token
02

Global Intelligence

These endpoints fetch real-time data from all active subsidiaries using the GraphQL bridge. All endpoints require a Bearer Token. Data is aggregated across the entire company group.

Method Endpoint Data Returned
GET /api/sso/global-staff Combined staff directory from all companies.
GET /api/sso/global-leads Unified sales leads and pipeline data.
GET /api/sso/global-deals All active deals and opportunities.
GET /api/sso/global-tasks Pending tasks assigned to the authenticated user.
GET /api/sso/global-tickets Support tickets from all helpdesks.
GET /api/sso/global-announcements Group-wide announcement feed.
GET /api/sso/global-activity-logs Security and audit logs from all instances.
GET /api/sso/global-invoices Aggregated financial billing data.
GET /api/sso/global-payments Payment history across the group.
03

Operations & Sync

Advanced APIs for pushing data from the Hub back to subsidiary ERPs. These endpoints require a valid Bearer Token and are used for payroll synchronization and document storage.

POST /api/sso/sync-payroll Sync Payroll Record

Pushes a calculated payroll history entry to a specified subsidiary ERP, including salary, bonuses, and deductions for a given month.

Request Payload
{
  "company_id": 1,
  "remote_staff_id": 10,
  "payroll_data": {
    "net_salary": 5000,
    "month": "May",
    "year": "2026",
    "bonuses": [],
    "deductions": []
  }
}
Response
200 OK — Payroll record synced to subsidiary
POST /api/sso/upload-payslip Upload Payslip Document

Stores a payslip PDF on Unity Hub and syncs the document link back to the subsidiary ERP. The PDF must be provided as a Base64-encoded string.

Request Payload
{
  "company_id": 1,
  "remote_staff_id": 10,
  "month": "May",
  "year": "2026",
  "payslip_pdf": "base64_encoded_string",
  "file_name": "custom_name.pdf"
}
Response
200 OK — PDF stored and link synced to subsidiary
04

Mobile Monitoring

Endpoints optimized for the Unity Mobile App dashboard. These return lightweight, summarized data designed for mobile consumption. All require a Bearer Token.

Method Endpoint Description
GET /api/mobile/activities Simplified security activity feed for the mobile dashboard.
GET /api/mobile/tickets/count Summary counts for support ticket statuses (open, pending, resolved).
Salecloud System

Deals pipelines, lead monitoring, anonymous whistleblowing, CRM contacts, quarterly bulletins, and staff management.

05

Sales Cloud: Auth & Passwords

Authentication and password recovery endpoints for the Sales Cloud module. These handle public logins, OTP requests, OTP validation, and password resetting.

POST /api/login Staff Login

Authenticate staff members and return a Bearer Token.

Request Payload
{
  "email": "staff@example.com",
  "password": "password123"
}
Response
200 OK — Returns authenticated user details and token
{
  "user": {
    "staffid": 1,
    "email": "staff@example.com",
    "firstname": "John",
    "lastname": "Doe",
    "facebook": "...",
    "linkedin": "...",
    "skype": "...",
    "phonenumber": "...",
    "profile_image": "profile.jpg",
    "role": "Sales Rep",
    "small_img": "https://erp.collaboratoor.com/uploads/.../thumb_...",
    "thumb_img": "https://erp.collaboratoor.com/uploads/.../small_..."
  },
  "token": "1|abcdef123456..."
}
POST /api/password/reset Request Reset OTP

Request a password reset OTP code sent via email.

Request Payload
{
  "email": "staff@example.com"
}
Response
200 OK
{
  "message": "success"
}
POST /api/password/reset/otp Verify Reset OTP

Verify the OTP received via email and return an access token to authorize password setting.

Request Payload
{
  "email": "staff@example.com",
  "otp": "1234"
}
Response
200 OK
{
  "message": "OTP verification successful",
  "token": "2|ghijk789..."
}
POST /api/password/reset/otp/resend Resend Verification OTP

Resend the verification OTP code if the time since the last mail exceeds 2 minutes.

Request Payload
{
  "email": "staff@example.com"
}
Response
200 OK
{
  "message": "Verification code has been sent to your email successfully"
}
06

Sales Cloud: Jobs, Roles & Depts

Retrieve lists of active departments, positions, and company roles. These endpoints are public and do not require Bearer authentication.

GET /api/departments Get Departments

Retrieve a list of all company departments (with sensitive columns like email password excluded).

Response
200 OK
{
  "message": "success",
  "departments": [
    {
      "departmentid": 1,
      "name": "Sales",
      "email": "sales@company.com",
      "hidefromclient": 0
    }
  ]
}
GET /api/positions Get Positions & Roles

Fetch all job positions and roles defined in the system.

Response
200 OK
{
  "message": "success",
  "positions": [
    { 
      "position_id": 1, 
      "position_name": "Sales Manager" 
    }
  ],
  "roles": [
    { 
      "roleid": 1, 
      "name": "Administrator" 
    }
  ]
}
07

Sales Cloud: Deals Management

Complete suite for deal pipelines, deal sources, stages, individual deal tracking, and goal progress. Private endpoints require a valid Bearer Token.

GET /api/deal/pipelines Get Pipelines

Retrieve all deal pipelines ordered by their layout hierarchy.

Response
200 OK
{
  "pipelines": [
    { 
      "pipeline_id": 1, 
      "pipeline_name": "Standard Sales", 
      "description": "...", 
      "order": 1 
    }
  ]
}
GET /api/deal/sources Get Deal Sources

Fetch all available deal/lead sources.

Response
200 OK
{
  "sources": [
    { 
      "source_id": 1, 
      "source_name": "Google Search" 
    }
  ]
}
GET /api/deal/stages Get Deal Stages

Get stages in all pipelines, optionally filtered by a specific pipeline.

Query Parameters
Parameter Type Required Description
pipeline_id integer No Filter stages by a specific pipeline ID.
Response
200 OK
{
  "stages": [
    { 
      "stage_id": 1, 
      "stage_name": "Contact Initiated", 
      "pipeline_id": 1, 
      "stage_order": 1 
    }
  ]
}
GET /api/deal/assigned Get Assigned Deals

Fetch all deals assigned to the currently authenticated staff member, with associated staff details.

Response
200 OK
{
  "message": "success",
  "deals": [
    {
      "id": 5,
      "title": "Enterprise Cloud Setup",
      "deal_value": 150000,
      "status": "active",
      "pipeline": "Standard Sales",
      "stage": "Proposal Sent",
      "source": "Cold Calling",
      "staff_members": [
        { 
          "staffid": 1, 
          "firstname": "John", 
          "lastname": "Doe", 
          "profile_image": "..." 
        }
      ]
    }
  ]
}
GET /api/deal/{id} Get Deal Details

View the complete configuration, pipeline details, and active stages for a single deal.

Response
200 OK
{
  "message": "success",
  "deal": { 
    "id": 5, 
    "title": "Enterprise Cloud Setup",
    "deal_value": 150000,
    "status": "active"
  },
  "pipeline": { 
    "pipeline_id": 1, 
    "pipeline_name": "Standard Sales" 
  },
  "current_stage": { 
    "stage_id": 3, 
    "stage_name": "Proposal Sent" 
  },
  "stages": []
}
POST /api/deal/create Create Deal

Create a new deal and assign the owner.

Request Payload
{
  "title": "Enterprise Cloud Setup",
  "deal_value": 150000,
  "source_id": 1,
  "pipeline_id": 1,
  "stage_id": 1,
  "default_deal_owner": 1
}
Response
201 Created
{
  "status": true,
  "message": "Deal added successfully.",
  "deal": { 
    "id": 6, 
    "title": "Enterprise Cloud Setup" 
  }
}
PUT /api/deal/deals/{id} Update Deal

Update an existing deal's metrics or status.

Request Payload
{
  "title": "Enterprise Cloud Setup Updated",
  "deal_value": 160000
}
Response
200 OK
{
  "status": true,
  "message": "Deal updated successfully.",
  "deal": {
    "id": 5,
    "title": "Enterprise Cloud Setup Updated",
    "deal_value": 160000
  }
}
DELETE /api/deal/deals/{id} Delete Deal

Permanently delete a deal.

Response
200 OK
{
  "status": true,
  "message": "Deal deleted successfully."
}
GET /api/deal/notifications Get Notifications

Retrieve in-app notifications for the authenticated user.

Query Parameters
Parameter Type Required Description
read boolean No Filter notifications by read status (defaults to false).
Response
200 OK
{
  "notifications": [
    { 
      "id": 12, 
      "touserid": 1, 
      "description": "New lead assigned", 
      "isread": 0, 
      "date": "2026-05-19" 
    }
  ]
}
08

Sales Cloud: Leads Management

Complete system for managing, tracking, updating, adding notes/reminders/documents to, and converting leads into system clients.

GET /api/lead/assigned Get Assigned Leads

List all active unconverted leads assigned to the logged-in user.

Response
200 OK
{
  "message": "success",
  "leads": [
    {
      "id": 10,
      "name": "Jane Sarah Smith",
      "company": "Smith Corp",
      "email": "jane@smith.com",
      "phonenumber": "08012345678",
      "status": "In Progress",
      "source": "Website Form",
      "country": "Nigeria"
    }
  ]
}
GET /api/lead/status Get Dropdown Values

Retrieve dropdown values for all Lead Statuses and Lead Sources.

Response
200 OK
{
  "message": "success",
  "status": [ 
    { "id": 1, "name": "Attempted to Contact" } 
  ],
  "sources": [ 
    { "id": 1, "name": "Web Search" } 
  ]
}
GET /api/lead/countries Get System Countries

Fetch all available system countries.

Response
200 OK
{
  "message": "success",
  "countries": [ 
    { "country_id": 1, "short_name": "NG", "long_name": "Nigeria" } 
  ]
}
POST /api/lead/create Create Lead

Create a new lead record.

Request Payload
{
  "firstname": "Jane",
  "lastname": "Smith",
  "middlename": "Sarah",
  "phonenumber": 2348012345678,
  "is_public": 1,
  "source": "Website",
  "status": "New",
  "email": "jane@smith.com",
  "lead_value": 1500.00
}
Response
200 OK
{
  "message": "Success"
}
POST /api/lead/update/{id} Update Lead

Update an existing lead record by Route ID.

Request Payload
{
  "firstname": "Jane",
  "lastname": "Smith",
  "status": "In Progress"
}
Response
200 OK
{
  "message": "Success"
}
GET /api/lead/notes/{id} Get Lead Notes

Retrieve chronological timeline notes written on a lead.

Response
200 OK
{
  "message": "Success",
  "notes": [
    { 
      "id": 1, 
      "description": "Met client today", 
      "dateadded": "2026-05-19", 
      "firstname": "John" 
    }
  ]
}
POST /api/lead/notes/{id} Add Note

Add a new note to a lead and optionally update the lastcontact date.

Request Payload
{
  "note": "Called customer and resolved queries.",
  "lastcontact": "2026-05-19 12:00:00"
}
Response
200 OK — Returns refreshed notes list
GET /api/lead/notes/delete/{id} Delete Note

Delete a lead note by its ID.

Response
200 OK — Returns refreshed notes list
GET /api/lead/reminders/{id} Get Reminders

Fetch all tasks/reminders created under a specific lead.

Response
200 OK
{
  "message": "Success",
  "reminders": [
    { 
      "id": 1, 
      "description": "Call client back", 
      "date": "2026-05-20" 
    }
  ]
}
POST /api/lead/reminders/{id} Create Reminder

Add a new future reminder for a lead.

Request Payload
{
  "reminder": "Call client back",
  "date": "2026-05-20"
}
Response
200 OK — Returns refreshed reminders list
GET /api/lead/reminders/delete/{id} Delete Reminder

Remove a scheduled reminder by its ID.

Response
200 OK — Returns refreshed reminders list
GET /api/lead/files/{id} Get Lead Files

Fetch all document attachments uploaded to a lead.

Response
200 OK
{
  "message": "Success",
  "files": [
    { 
      "id": 4, 
      "file_name": "contract.pdf", 
      "filetype": "application/pdf" 
    }
  ]
}
POST /api/lead/files/{id} Upload File

Upload a document/attachment for a lead (size capped at 2MB).

Request Body (Multipart Form)
Field Type Required Description
file File Yes Allowed mime types: png, jpg, jpeg, docx, doc, xls, xlsx, zip, rar, txt, pdf (max 2048 KB).
Response
200 OK — Returns refreshed files list
GET /api/lead/files/delete/{id} Delete File

Delete a lead's document file from physical storage and DB by its ID.

Response
200 OK — Returns refreshed files list
GET /api/lead/convert/{id} Convert Lead

Convert an active lead into a validated client and create a matching primary contact.

Response
200 OK
{
  "message": "Success"
}
09

Sales Cloud: Tickets

Complete ticketing endpoints for resolving user and customer support issues, managing department categories, tracking status, and assigning staff members.

GET /api/tickets/{id} Get Ticket Details

Retrieve detailed columns of a single support ticket by ID.

Response
200 OK
{
  "id": 1,
  "subject": "App Login Issue",
  "department": "IT Support",
  "status": 1,
  "message": "...",
  "ticketkey": "..."
}
GET /api/tickets/user/{userid} Get User Tickets

Get all customer/staff support tickets created by a specific User ID.

Response
200 OK
{
  "status": true,
  "tickets": []
}
POST /api/tickets Create Ticket

Open a new support ticket (auto-assigns a unique tracking hash like Perfex).

Request Payload
{
  "subject": "App Login Issue",
  "department": "IT Support",
  "contactid": 1,
  "userid": 1,
  "message": "Cannot log into mobile dashboard",
  "assigned": 2,
  "priority": 1
}
Response
201 Created
{
  "status": true,
  "message": "Ticket add successful.",
  "ticket": {}
}
PUT /api/tickets/{id} Update Ticket

Edit/update ticket attributes by route parameter.

Request Payload
{
  "status": 2,
  "assigned": 3
}
Response
200 OK
{
  "status": true,
  "message": "Ticket Update Successful."
}
DELETE /api/tickets/{id} Delete Ticket

Permanently delete a support ticket.

Response
200 OK
{
  "status": true,
  "message": "Ticket Delete Successful."
}
10

Sales Cloud: Activity Logs

Access audit logs and user activity feeds, proxied directly from the ERP platform logging microservice.

GET /api/activitylog Get Proxy Activity Logs

Proxies queries to the ERP platform logging microservice (https://erp.havosoft.com/api/activitylog).

Query Parameters
Parameter Type Required Description
type string No Log filter type, e.g. "deals" or "leads".
limit integer No Number of logs to return (default 50).
offset integer No Pagination offset index (default 0).
Response
200 OK — Relayed JSON from ERP system
11

Sales Cloud: Customer Management

Endpoints to manage client companies, map secondary sub-contacts, perform internationalized phone validations, and conduct third-party KYC checks via Oystr Finance.

GET /api/customer/assigned Get Assigned Customers

Get all customer profiles where the logged-in agent is the account creator.

Response
200 OK
{
  "message": "success",
  "clients": [
    {
      "userid": 15,
      "firstname": "Dave",
      "lastname": "Peters",
      "company": "Dave Retail Ltd",
      "email": "dave@peters.com",
      "phonenumber": "+2348011223344",
      "city": "Ikeja",
      "state": "Lagos",
      "country": "Nigeria"
    }
  ]
}
GET /api/customer/contacts/{id} Get Sub-contacts

Retrieve sub-contacts linked under a main customer account.

Response
200 OK
{
  "message": "success",
  "contacts": [
    { 
      "id": 1, 
      "is_primary": 1, 
      "firstname": "Dave", 
      "lastname": "Peters" 
    }
  ]
}
POST /api/customer/validate Oystr KYC Identity Check

Perform financial/KYC identity checks (BVN or other indices) using the third-party Oystr Finance API.

Request Payload
{
  "number": "22223333444",
  "type": "bvn"
}
Response
200 OK
{
  "firstname": "DAVID",
  "lastname": "PETERS",
  "middlename": "OLU",
  "phone": "08011223344",
  "address": "12 Allen Avenue, Ikeja",
  "image": "/9j/4AAQSkZJRgABAQ..."
}
POST /api/customer/create Create Client Company

Register a new client company and primary contact, enforcing 10-digit internationalized Nigerian phone validation.

Request Payload
{
  "firstname": "Dave",
  "lastname": "Peters",
  "country": 1,
  "phonenumber": "08011223344",
  "company": "Dave Retail Ltd",
  "email": "dave@peters.com"
}
Response
200 OK
{
  "message": "Success"
}
12

Sales Cloud: Whistleblowing / Reports

Anonymous or signed reporting platform to flag workplace misconduct. Features multipart document uploads (capped at 2MB).

GET /api/whistles List Filed Reports

List anonymous or signed staff reports filed by the active staff member.

Response
200 OK
{
  "message": "success",
  "whistles": [
    { 
      "title": "Misconduct", 
      "body": "...", 
      "status": "pending", 
      "firstname": "Admin", 
      "lastname": "User" 
    }
  ]
}
POST /api/whistles/add File Incident Report

Submit a whistleblowing incident with file proof upload (Capped at 2MB).

Request Body (Multipart Form)
Field Type Required Description
staffid numeric Yes Target staff member being reported.
title string Yes Brief summary of the incident.
body string Yes Detailed incident narration.
date date string Yes Incident occurrence date.
file File Yes Document proof (png, jpg, jpeg, docx, doc, xls, xlsx, zip, rar, txt, pdf) max 2048 KB.
Response
200 OK — Returns refreshed whistles list
13

Sales Cloud: Products & Categories

Retrieve system catalog goods, license templates, categorizations, and item rates.

GET /api/products/categories Get Categories

Get all product categorizations.

Response
200 OK
{
  "message": "success",
  "categories": [
    { 
      "groupid": 2, 
      "name": "Software Licences" 
    }
  ]
}
GET /api/products/{id} Get Products by Category

Fetch all goods/products belonging to a specific category ID.

Response
200 OK
{
  "message": "success",
  "products": [
    { 
      "articleid": 1, 
      "description": "Sales ERP License", 
      "rate": 500.00 
    }
  ]
}
14

Sales Cloud: Announcements

Broadcast system news and corporate bulletins published to the directory in the past 90 days.

GET /api/announcements Get Quarterly Announcements

Fetch bulletin board postings broadcasted to staff in the last quarter (with HTML strip-tags applied).

Response
200 OK
{
  "message": "success",
  "announcements": [
    { 
      "announcementid": 1, 
      "name": "Annual General Meeting", 
      "message": "The meeting is scheduled for...", 
      "dateadded": "2026-05-19" 
    }
  ]
}
15

Sales Cloud: Home & Dashboard

Load indicators, summary numbers (leads, deals, clients, colleagues, items), goals, notifications, and individual performance charts.

GET /api/home Get Dashboard Consolidated Summary

Consolidate main summary counts (Active leads, Clients, Staff, Products, Deals), staff announcements, reminders, and sales goals progress for dashboard load.

Response
200 OK
{
  "leads": 12,
  "deals": 5,
  "clients": 8,
  "staff": 40,
  "products": 105,
  "fname": "John",
  "lname": "Doe",
  "id": 1,
  "performance": 3,
  "image": "profile.jpg",
  "announcements": [],
  "reminders": [],
  "goals": []
}
GET /api/chart/{id} Get Sales Target Chart Data

Get single sales target progress metric chart data.

Response
200 OK
{
  "message": "success",
  "performance": 4
}
16

Sales Cloud: Staff Directory & Profile

Change and set user passwords, retrieve user profile metadata, update attributes, and query the colleague directory.

POST /api/password/set Set Password (OTP Reset Flow)

Set a new password using OTP authorization verification.

Request Payload
{
  "password": "newsecretpassword",
  "password_confirmation": "newsecretpassword",
  "otp": "1234"
}
Response
200 OK
{
  "message": "Password reset successfully"
}
POST /api/password/update Change Password (Profile Settings)

Change user password from the profile page.

Request Payload
{
  "old": "currentpassword",
  "password": "newsecretpassword",
  "password_confirmation": "newsecretpassword"
}
Response
200 OK
{
  "message": "Success"
}
GET /api/get/user Fetch Profile Credentials

Fetch profile credentials of the logged-in staff member.

Response
200 OK
{
  "message": "Success",
  "user": {
    "staffid": 1,
    "email": "staff@example.com",
    "firstname": "John",
    "lastname": "Doe"
  }
}
POST /api/user/update Update Selective Profile Details

Update profile details selectively using attribute indices (e.g. 1 => First Name, 2 => Last Name, 4 => Phone Number, 5 => Facebook Link, 6 => LinkedIn Link, 7 => Skype Handle).

Request Payload
{
  "index": 1,
  "text": "John"
}
Response
200 OK
{
  "message": "Success",
  "user": {}
}
GET /api/staff/directory Get Colleague Directory

List all active colleague profiles and roles.

Response
200 OK
{
  "message": "Success",
  "staff": [
    { 
      "staffid": 2, 
      "firstname": "Sarah", 
      "lastname": "Connor", 
      "role": "Supervisor" 
    }
  ]
}
NIN API System

National identity verification and real-time lookup services interfacing with the official NIMC registry.

17

NIN & Identity Verification

Identity validation and search services utilizing the official NIMC database. Verify person identity using national identity numbers or registered mobile phone numbers.

Live Server Host: https://meta.collaboratoor.com/meta/public/api
Swagger Documentation: https://meta.collaboratoor.com/meta/public/api/documentation
POST /identity/verify-phone Verify Phone Number (KYC)

Verify phone numbers using Nigerian fintech bank accounts. Accepts single or bulk comma-separated phone numbers and searches for matching account names.

Query Parameters
Parameter Type Required Description
phones string Yes Single 11-digit phone number or comma-separated numbers (e.g. 08051057322,08123456789).
Responses
200 OK — Successful Lookup
{
  "status": "success",
  "data": [
    {
      "phone": "08051057322",
      "result": {
        "account_name": "Adebayo Johnson Solomon",
        "status": "found"
      }
    }
  ]
}
400 Bad Request — Missing Parameters
{
  "status": "error",
  "message": "Please provide one or more phone numbers."
}
POST /ninAuth/getNINDetailsWithPhone Verify NIN with Phone

Verify a citizen's NIN profile details by supplying their registered phone number. Uses internal headers and Bearer auth.

Request Payload
{
  "phone": "08012345678"
}
Responses
200 OK — Successful Verification
{
  "status": "success",
  "data": {
    "firstname": "Adebayo",
    "lastname": "Solomon",
    "nin": "12345678901"
  }
}
400 Bad Request
{
  "status": "error",
  "message": "Please provide a phone number."
}
402 Payment Required
{
  "error": "Insufficient wallet balance"
}
POST /ninAuth/bulkGetNINDetailsWithPhone Verify NIN with Phone (Bulk)

Verify multiple NIN records simultaneously by providing an array of registered phone numbers.

Request Payload
{
  "phones": [
    "08012345678"
  "pauseMs": 0
}
Responses
200 OK — Successful Verification
{
  "status": "success",
  "data": [
    {
      "phone": "08012345678",
      "source": "cache",
      "status": "success",
      "data": {
        "firstname": "Adebayo"
      }
    ]
}
POST /ninAuth/getNINDetails Verify NIN directly

Verify a citizen's NIMC identity parameters directly using their 11-digit NIN.

Request Payload
{
  "nin": "12345678901"
}
Responses
200 OK — Successful Verification
{
  "status": "success",
  "data": {
    "firstname": "Sarah",
    "lastname": "Connor"
  }
}
POST /ninAuth/bulkGetNINDetailsWithNIN Verify NINs directly (Bulk)

Verify multiple direct NINs in a single request. PauseMs sets processing sleep increments between requests.

Request Payload
{
  "nins": [
    "12345678901"
  "pauseMs": 0
}
Responses
200 OK — Bulk Results
{
  "status": "success",
  "data": [
    {
      "nin": "12345678901",
      "source": "cache",
      "status": "success",
      "data": {
        "firstname": "Sarah"
      }
    }
  ]
}
CDR Analysis System

Call Detail Record search, forensics parsing, and admin-fulfilled data reporting systems.

18

CDR Search & Reporting

API endpoints for the Call Detail Record (CDR) search and forensics reporting system. These enable submission of query phone numbers and checking processing statuses.

Server Endpoint: https://cdranalysis.collaboratoor.com
Swagger Documentation: https://cdranalysis.collaboratoor.com/api/documentation
GET /api/cdr/status/{id} Get CDR search status & data

Retrieves the search status and full call logs of a CDR request. If the status is 'completed', the returned body includes all parsed CDR log records.

Path Parameters
Parameter Type Required Description
id integer Yes Unique ID of the submitted search request.
Responses
200 OK — Successful Operation
{
  "request_id": 1,
  "phone_number": "2348037866054",
  "status": "completed",
  "created_at": "2026-05-19T12:20:43.717Z",
  "updated_at": "2026-05-19T12:20:43.717Z",
  "records": [
    {
      "called_number": "2348037866054",
      "calling_number": "2347037365636",
      "total_calls": 88
    ]
}
404 Not Found
{
  "error": "Request not found"
}