Intact API Documentation
Complete RESTful API for Certification Management System
Base URL: https://intact.webninjaafrica.com/api/v1
12
Modules
40
Sections
97
Endpoints
13
Code Examples
Getting Started
▼Overview
INFO
/
Public
API Overview
Complete REST API for Certification Management System
Parameters
| Type | Name | Type | Required | Description | Example |
|---|---|---|---|---|---|
| Body | api_name |
string | No | Name of the API | Intact API |
| Body | version |
string | No | API version | 1.0.0 |
Responses
Status 200: API Information
{
"name": "Intact API",
"version": "1.0.0",
"description": "Certification Management System",
"base_url": "https:\/\/intact.webninjaafrica.com\/api\/v1"
}
Code Examples
curl -X GET "https://intact.webninjaafrica.com/api/v1/"
Simple API overview request
Base URL
INFO
/base
Public
Base URL Information
All endpoints are relative to the base URL
Parameters
| Type | Name | Type | Required | Description | Example |
|---|---|---|---|---|---|
| Body | base_url |
string | No | Base URL for all API calls | https://intact.webninjaafrica.com/api/v1 |
Responses
Status 200: Base URL Info
{
"base_url": "https:\/\/intact.webninjaafrica.com\/api\/v1",
"documentation": "https:\/\/intact.webninjaafrica.com\/docs.php",
"status": "active"
}
Code Examples
<?php $base_url = "https://intact.webninjaafrica.com/api/v1"; $response = file_get_contents($base_url . "/tenants"); echo $response; ?>
PHP example using base URL
import requests
base_url = "https://intact.webninjaafrica.com/api/v1"
response = requests.get(f"{base_url}/tenants")
print(response.json())
Python example using base URL
const axios = require("axios");
const base_url = "https://intact.webninjaafrica.com/api/v1";
axios.get(`${base_url}/tenants`)
.then(response => console.log(response.data));
Node.js example using base URL
curl -X GET "https://intact.webninjaafrica.com/api/v1/tenants"
cURL example using base URL
Response Format
INFO
/response-format
Public
Response Format
Standard API response structure for all endpoints
Parameters
| Type | Name | Type | Required | Description | Example |
|---|---|---|---|---|---|
| Body | success_response |
object | No | Example of successful response | {"success":true,"data":{},"message":"Operation successful"} |
| Body | error_response |
object | No | Example of error response | {"success":false,"message":"Error description","status_code":400} |
| Body | pagination_response |
object | No | Example of paginated response | {"success":true,"data":[],"pagination":{"current_page":1,"per_page":20,"total":100,"total_pages":5}} |
Responses
Status 200: Success Response Example
{
"success": true,
"data": {
"id": "123",
"name": "Example"
},
"message": "Operation successful"
}
Status 400: Error Response Example
{
"success": false,
"message": "Invalid input provided",
"status_code": 400
}
Status 401: Unauthorized Response
{
"success": false,
"message": "Authentication required",
"status_code": 401
}
Status 403: Forbidden Response
{
"success": false,
"message": "Insufficient permissions",
"status_code": 403
}
Status 404: Not Found Response
{
"success": false,
"message": "Resource not found",
"status_code": 404
}
Status 500: Server Error Response
{
"success": false,
"message": "Internal server error",
"status_code": 500
}
Code Examples
<?php
$response = curl_exec($curl);
$data = json_decode($response, true);
if ($data["success"]) {
echo "Success: " . json_encode($data["data"]);
} else {
echo "Error: " . $data["message"];
}
?>
PHP example of handling API responses
import requests
response = requests.get(url)
data = response.json()
if data["success"]:
print("Success: " + str(data["data"]))
else:
print("Error: " + data["message"])
Python example of handling API responses
axios.get(url)
.then(response => {
if (response.data.success) {
console.log("Success:", response.data.data);
} else {
console.log("Error:", response.data.message);
}
})
.catch(error => console.log("Request failed:", error.message));
Node.js example of handling API responses
curl -X GET "https://intact.webninjaafrica.com/api/v1/tenants" | jq ".data"
cURL with jq for parsing JSON response
Error Handling
INFO
/errors
Public
Error Codes
Common HTTP status codes and error responses
Parameters
| Type | Name | Type | Required | Description | Example |
|---|---|---|---|---|---|
| Body | error_400 |
object | No | Bad Request - Invalid input | {"code":400,"meaning":"Bad Request","solution":"Check your request parameters"} |
| Body | error_401 |
object | No | Unauthorized - Missing or invalid token | {"code":401,"meaning":"Unauthorized","solution":"Provide valid JWT token in Authorization header"} |
| Body | error_403 |
object | No | Forbidden - Insufficient permissions | {"code":403,"meaning":"Forbidden","solution":"Contact administrator for access"} |
| Body | error_404 |
object | No | Not Found - Resource doesn't exist | {"code":404,"meaning":"Not Found","solution":"Verify the resource ID or endpoint path"} |
| Body | error_422 |
object | No | Validation Error - Data validation failed | {"code":422,"meaning":"Unprocessable Entity","solution":"Check validation rules for required fields"} |
| Body | error_429 |
object | No | Too Many Requests - Rate limit exceeded | {"code":429,"meaning":"Too Many Requests","solution":"Wait before making more requests"} |
| Body | error_500 |
object | No | Server Error - Internal server error | {"code":500,"meaning":"Internal Server Error","solution":"Contact support with request details"} |
Responses
Status 200: Error Codes List
{
"success": true,
"error_codes": [
400,
401,
403,
404,
422,
429,
500
],
"common_errors": {
"400": "Bad Request",
"401": "Unauthorized",
"403": "Forbidden",
"404": "Not Found",
"422": "Validation Error",
"429": "Too Many Requests",
"500": "Internal Server Error"
}
}
Code Examples
<?php
function handleApiResponse($response) {
$data = json_decode($response, true);
switch(http_response_code()) {
case 400:
echo "Bad Request: " . $data["message"];
break;
case 401:
echo "Authentication required. Please login.";
break;
case 403:
echo "Access denied. Insufficient permissions.";
break;
case 404:
echo "Resource not found.";
break;
case 422:
echo "Validation failed: " . json_encode($data["errors"]);
break;
case 429:
echo "Rate limit exceeded. Please wait.";
break;
case 500:
echo "Server error. Please try again later.";
break;
default:
echo "Unknown error: " . $data["message"];
}
}
?>
PHP error handling example
import requests
def handle_response(response):
if response.status_code == 200:
return response.json()["data"]
elif response.status_code == 400:
print("Bad Request: " + response.json()["message"])
elif response.status_code == 401:
print("Authentication required. Please login.")
elif response.status_code == 403:
print("Access denied. Insufficient permissions.")
elif response.status_code == 404:
print("Resource not found.")
elif response.status_code == 422:
print("Validation failed: " + str(response.json()["errors"]))
elif response.status_code == 429:
print("Rate limit exceeded. Please wait.")
elif response.status_code == 500:
print("Server error. Please try again later.")
return None
response = requests.get(url, headers=headers)
data = handle_response(response)
Python error handling example
const axios = require("axios");
async function makeRequest(url, headers) {
try {
const response = await axios.get(url, { headers });
return response.data.data;
} catch (error) {
if (error.response) {
switch (error.response.status) {
case 400:
console.log("Bad Request: " + error.response.data.message);
break;
case 401:
console.log("Authentication required. Please login.");
break;
case 403:
console.log("Access denied. Insufficient permissions.");
break;
case 404:
console.log("Resource not found.");
break;
case 422:
console.log("Validation failed: " + JSON.stringify(error.response.data.errors));
break;
case 429:
console.log("Rate limit exceeded. Please wait.");
break;
case 500:
console.log("Server error. Please try again later.");
break;
default:
console.log("Error: " + error.response.data.message);
}
} else {
console.log("Request failed: " + error.message);
}
return null;
}
}
Node.js error handling example
# Check HTTP status code
curl -w "\nHTTP Status: %{http_code}\n" -X GET "https://intact.webninjaafrica.com/api/v1/endpoint"
# With error handling
response=$(curl -s -w "\n%{http_code}" -X GET "https://intact.webninjaafrica.com/api/v1/endpoint")
http_code=$(echo "$response" | tail -n1)
body=$(echo "$response" | sed "$ d")
if [ $http_code -eq 200 ]; then
echo "Success: $body"
else
echo "Error $http_code: $body"
fi
cURL error handling example
Authentication
▼Login
POST
/auth/login
Public
User Login
Authenticate user and get JWT token
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Logout
POST
/auth/logout
Auth Required
User Logout
Invalidate user session
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Password Management
POST
/auth/change-password
Auth Required
Change Password
Change user password
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/auth/forgot-password
Public
Forgot Password
Request password reset
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/auth/reset-password
Public
Reset Password
Reset password with token
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Token Management
POST
/auth/refresh
Auth Required
Refresh Token
Get new access token
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
GET
/auth/me
Auth Required
Get Current User
Get authenticated user info
Response Example
{
"success": true,
"data": {...}
}
Core System
▼Tenants
GET
/tenants
Auth Required
List Tenants
Get paginated list of tenants
Response Example
{
"success": true,
"data": {...}
}
GET
/tenants/{id}
Auth Required
Get Tenant
Get tenant by ID
Response Example
{
"success": true,
"data": {...}
}
POST
/tenants
Auth Required
Create Tenant
Create a new tenant
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
PUT
/tenants/{id}
Auth Required
Update Tenant
Update existing tenant
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
DELETE
/tenants/{id}
Auth Required
Delete Tenant
Soft delete tenant
Response Example
{
"success": true,
"data": {...}
}
Users
GET
/users
Auth Required
List Users
Get paginated list of users
Response Example
{
"success": true,
"data": {...}
}
GET
/users/{id}
Auth Required
Get User
Get user by ID
Response Example
{
"success": true,
"data": {...}
}
POST
/users
Auth Required
Create User
Create a new user
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
PUT
/users/{id}
Auth Required
Update User
Update existing user
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
DELETE
/users/{id}
Auth Required
Delete User
Soft delete user
Response Example
{
"success": true,
"data": {...}
}
Roles
GET
/roles
Auth Required
List Roles
Get paginated list of roles
Response Example
{
"success": true,
"data": {...}
}
GET
/roles/{id}
Auth Required
Get Role
Get role by ID
Response Example
{
"success": true,
"data": {...}
}
POST
/roles
Auth Required
Create Role
Create a new role
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
PUT
/roles/{id}
Auth Required
Update Role
Update existing role
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
DELETE
/roles/{id}
Auth Required
Delete Role
Delete role
Response Example
{
"success": true,
"data": {...}
}
Permissions
GET
/permissions
Auth Required
List Permissions
Get all permissions
Response Example
{
"success": true,
"data": {...}
}
GET
/permissions/{id}
Auth Required
Get Permission
Get permission by ID
Response Example
{
"success": true,
"data": {...}
}
Audit Logs
GET
/audit-logs
Auth Required
List Audit Logs
Get audit trail records
Response Example
{
"success": true,
"data": {...}
}
GET
/audit-logs/{id}
Auth Required
Get Audit Log
Get audit log by ID
Response Example
{
"success": true,
"data": {...}
}
Documents
GET
/documents
Auth Required
List Documents
Get paginated list of documents
Response Example
{
"success": true,
"data": {...}
}
GET
/documents/{id}
Auth Required
Get Document
Get document by ID
Response Example
{
"success": true,
"data": {...}
}
POST
/documents
Auth Required
Upload Document
Upload a new document
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
System Settings
GET
/settings
Auth Required
Get Settings
Get system settings
Response Example
{
"success": true,
"data": {...}
}
PUT
/settings
Auth Required
Update Settings
Update system settings
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Client Management
▼Clients
GET
/clients
Auth Required
List Clients
Get paginated list of clients
Response Example
{
"success": true,
"data": {...}
}
GET
/clients/{id}
Auth Required
Get Client
Get client by ID
Response Example
{
"success": true,
"data": {...}
}
POST
/clients
Auth Required
Create Client
Create a new client
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Contacts
GET
/client-contacts
Auth Required
List Contacts
Get client contacts
Response Example
{
"success": true,
"data": {...}
}
POST
/client-contacts
Auth Required
Create Contact
Add client contact
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Sites
GET
/client-sites
Auth Required
List Sites
Get client sites
Response Example
{
"success": true,
"data": {...}
}
POST
/client-sites
Auth Required
Create Site
Add client site
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Applications
GET
/applications
Auth Required
List Applications
Get certification applications
Response Example
{
"success": true,
"data": {...}
}
POST
/applications
Auth Required
Create Application
Submit certification application
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Quotations
GET
/quotations
Auth Required
List Quotations
Get quotations
Response Example
{
"success": true,
"data": {...}
}
POST
/quotations
Auth Required
Create Quotation
Generate quotation
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Contracts
GET
/contracts
Auth Required
List Contracts
Get contracts
Response Example
{
"success": true,
"data": {...}
}
POST
/contracts
Auth Required
Create Contract
Create contract from quotation
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Standards & Accreditation
▼Accreditations
GET
/accreditations
Auth Required
List Accreditations
Get accreditations
Response Example
{
"success": true,
"data": {...}
}
POST
/accreditations
Auth Required
Create Accreditation
Add accreditation
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Standards
GET
/standards
Auth Required
List Standards
Get ISO standards
Response Example
{
"success": true,
"data": {...}
}
POST
/standards
Auth Required
Create Standard
Add new standard
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Clauses
GET
/standard-clauses
Auth Required
List Clauses
Get standard clauses
Response Example
{
"success": true,
"data": {...}
}
POST
/standard-clauses
Auth Required
Create Clause
Add clause to standard
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Audit Management
▼Audit Schedules
GET
/audit-schedules
Auth Required
List Audits
Get audit schedules
Response Example
{
"success": true,
"data": {...}
}
POST
/audit-schedules
Auth Required
Create Audit
Schedule new audit
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/audit-schedules/{id}/start
Auth Required
Start Audit
Begin audit
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/audit-schedules/{id}/complete
Auth Required
Complete Audit
Finish audit
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Audit Teams
GET
/audit-teams
Auth Required
List Teams
Get audit team members
Response Example
{
"success": true,
"data": {...}
}
POST
/audit-teams
Auth Required
Assign Auditor
Add auditor to team
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Audit Checklists
GET
/audit-checklists
Auth Required
List Checklists
Get audit checklist items
Response Example
{
"success": true,
"data": {...}
}
PUT
/audit-checklists/{id}
Auth Required
Update Checklist
Update checklist item
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Audit Evidence
GET
/audit-evidence
Auth Required
List Evidence
Get audit evidence
Response Example
{
"success": true,
"data": {...}
}
POST
/audit-evidence
Auth Required
Add Evidence
Add evidence document
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Non-Conformity Management
▼Non-Conformities
GET
/non-conformities
Auth Required
List NCs
Get non-conformities
Response Example
{
"success": true,
"data": {...}
}
POST
/non-conformities
Auth Required
Create NC
Add non-conformity
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/non-conformities/{id}/close
Auth Required
Close NC
Close non-conformity
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Corrective Actions
GET
/corrective-actions
Auth Required
List Actions
Get corrective actions
Response Example
{
"success": true,
"data": {...}
}
POST
/corrective-actions
Auth Required
Create Action
Add corrective action
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/corrective-actions/{id}/verify
Auth Required
Verify Action
Verify completion
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Certificate Management
▼Certificates
GET
/certificates
Auth Required
List Certificates
Get all certificates
Response Example
{
"success": true,
"data": {...}
}
POST
/certificates
Auth Required
Issue Certificate
Issue new certificate
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/certificates/{id}/suspend
Auth Required
Suspend Certificate
Suspend certificate
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/certificates/{id}/reinstate
Auth Required
Reinstate Certificate
Reinstate suspended certificate
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/certificates/{id}/withdraw
Auth Required
Withdraw Certificate
Withdraw certificate
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Verification
GET
/certificates/verify/{number}
Public
Verify Certificate
Public certificate verification
Response Example
{
"success": true,
"data": {...}
}
History
GET
/certificate-history
Auth Required
List History
Get certificate history
Response Example
{
"success": true,
"data": {...}
}
Financial Management
▼Invoices
GET
/invoices
Auth Required
List Invoices
Get invoices
Response Example
{
"success": true,
"data": {...}
}
POST
/invoices
Auth Required
Create Invoice
Generate invoice
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/invoices/{id}/mark-paid
Auth Required
Mark Paid
Mark invoice as paid
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Payments
GET
/payments
Auth Required
List Payments
Get payment records
Response Example
{
"success": true,
"data": {...}
}
POST
/payments
Auth Required
Record Payment
Record payment received
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Quality Management
▼Complaints
GET
/complaints
Auth Required
List Complaints
Get complaints
Response Example
{
"success": true,
"data": {...}
}
POST
/complaints
Auth Required
Create Complaint
Submit complaint
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
POST
/complaints/{id}/resolve
Auth Required
Resolve Complaint
Mark complaint resolved
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Training & Competency
▼Training Records
GET
/training-records
Auth Required
List Training
Get training records
Response Example
{
"success": true,
"data": {...}
}
POST
/training-records
Auth Required
Add Training
Add training record
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Auditor Competencies
GET
/auditor-competencies
Auth Required
List Competencies
Get auditor competencies
Response Example
{
"success": true,
"data": {...}
}
POST
/auditor-competencies
Auth Required
Add Competency
Add auditor competency
Request Body Example
{
"example": "value"
}
Response Example
{
"success": true,
"data": {...}
}
Dashboard & Reports
▼Dashboard
GET
/dashboard/stats
Auth Required
Dashboard Stats
Get dashboard statistics
Response Example
{
"success": true,
"data": {...}
}
GET
/dashboard/recent-activities
Auth Required
Recent Activities
Get recent activities
Response Example
{
"success": true,
"data": {...}
}
GET
/dashboard/upcoming-audits
Auth Required
Upcoming Audits
Get upcoming audits
Response Example
{
"success": true,
"data": {...}
}
GET
/dashboard/expiring-certificates
Auth Required
Expiring Certificates
Get expiring certificates
Response Example
{
"success": true,
"data": {...}
}
Reports
GET
/reports/audit-summary
Auth Required
Audit Summary
Get audit summary report
Response Example
{
"success": true,
"data": {...}
}
GET
/reports/certificate-expiry
Auth Required
Certificate Expiry
Get certificate expiry report
Response Example
{
"success": true,
"data": {...}
}
GET
/reports/financial
Auth Required
Financial Report
Get financial report
Response Example
{
"success": true,
"data": {...}
}
GET
/reports/non-conformities
Auth Required
NC Report
Get non-conformity report
Response Example
{
"success": true,
"data": {...}
}