🛡️ InsuApp CRUD API

REST API for Insurance Companies to Manage Customers & Policies

Version 1.0 | January 2026

🌐 Base URL & Information

Base URL: https://[Your subdomain]/crudapi

🔐 Authentication Flow

  1. Login: POST to /auth/login with your API key
  2. Get Token: Response includes token and expiration date
  3. Use Token: Add header Authorization: Bearer YOUR_TOKEN to all requests

Security: Your IP is whitelisted on login. Requests from other IPs will be rejected.

🔐 Authentication Endpoints

GET /auth 🔓 No Token Required Get auth info

Example Request

GET /auth

Response

{ "status": "info", "message": "API Authentication", "endpoints": { "login": "POST /auth/login", "verify": "GET /auth/verify" } }
POST /auth/login 🔓 No Token Required Login to get token

Request Body

FieldTypeDescription
api_keystring requiredYour API key

Example Request

POST /auth/login Content-Type: application/json { "api_key": "YOUR_API_KEY" }

Response

{ "status": "success", "data": { "token": "a1b2c3d4e5f6...", "expires_at": "2026-01-29 15:00:00", "expires_in": "24 hours", "ip_whitelisted": "192.168.1.100" } }
GET /auth/verify Verify token

Headers

Authorization: Bearer {token}

Example Request

GET /auth/verify Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": { "ip_whitelisted": "192.168.1.100", "expires_at": "2026-01-29 15:00:00", "hours_remaining": 23.5 } }

👥 Customers API

GET /customers List all customers

Headers

Authorization: Bearer {token}

Query Parameters

ParameterDescription
pagePage number (default: 1)
limitRecords per page (default: 50)
searchSearch in name, surname, email, mobile

Example Request

GET /customers?page=1&limit=10 Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": [{ "id": 7, "name": "John", "surname": "Smith", "mobile": "99123456" }], "pagination": { "page": 1, "total": 150 } }
GET /customers/{id} Get customer by ID

Headers

Authorization: Bearer {token}

Example Request

GET /customers/7 Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": { "id": 7, "name": "John", "surname": "Smith", "email": "[email protected]", "mobile": "99123456" } }
GET /customers/{field}/{value} Search by field

Headers

Authorization: Bearer {token}

Allowed Fields

unique_id, govID, email, mobile, name, surname, company

Example Request

GET /customers/mobile/99123456 Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": [{ "id": 7, "name": "John", "mobile": "99123456" }] }
POST /customers/add Create new customer

Headers

Authorization: Bearer {token}

Request Body

FieldTypeDescription
namestring requiredFirst name
surnamestring requiredLast name
mobilestring requiredMobile number
govIDstring requiredGovernment ID
emailstring optionalEmail
telephonestring optionalTelephone
dobdate optionalDate of birth (YYYY-MM-DD)
companystring optionalCompany name

Example Request

POST /customers/add Authorization: Bearer a1b2c3d4e5f6... Content-Type: application/json { "name": "John", "surname": "Smith", "mobile": "99123456", "govID": "823013", "email": "[email protected]" }

Response

{ "status": "success", "message": "Customer added successfully", "data": { "id": 8, "unique_id": "678abc" } }
POST /customers/edit/{id} Update customer

Headers

Authorization: Bearer {token}

Request Body

FieldTypeDescription
namestring optionalFirst name
surnamestring optionalLast name
mobilestring optionalMobile
govIDstring optionalGovernment ID
emailstring optionalEmail
telephonestring optionalTelephone
dobdate optionalDate of birth
companystring optionalCompany
💡 Only include fields you want to update

Example Request

POST /customers/edit/7 Authorization: Bearer a1b2c3d4e5f6... Content-Type: application/json { "email": "[email protected]" }

Response

{ "status": "success", "message": "Customer updated successfully", "rows_affected": 1 }
POST /customers/delete/{id} Delete customer

Headers

Authorization: Bearer {token}

Request Body

No body required. ID in URL. Multiple IDs: /customers/delete/7,8,9

Example Request

POST /customers/delete/7 Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "message": "Customer(s) deleted successfully", "rows_affected": 1 }
POST /customers/import Bulk import

Headers

Authorization: Bearer {token}

Request Body

FieldTypeDescription
customersarray requiredArray of customer objects

Each requires: name, surname, mobile, govID

Example Request

POST /customers/import Authorization: Bearer a1b2c3d4e5f6... Content-Type: application/json { "customers": [ {"name":"John","surname":"Smith","mobile":"99111111","govID":"ID001"}, {"name":"Jane","surname":"Doe","mobile":"99222222","govID":"ID002"} ] }

Response

{ "status": "success", "data": {"total":2,"success":2,"errors":0} }

📋 Policies API

GET /policies List all policies

Headers

Authorization: Bearer {token}

Query Parameters

ParameterDescription
page, limitPagination
customer_idFilter by customer
insurance_typeFilter by type
searchSearch in title

Example Request

GET /policies?customer_id=7 Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": [{ "id": 15, "title": "POL-2026-001", "type_name": "Life Insurance", "company_name": "ABC Insurance" }] }
GET /policies/{id} Get policy by ID

Headers

Authorization: Bearer {token}

Example Request

GET /policies/15 Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": { "id": 15, "title": "POL-2026-001", "expire_date": "2026-12-31" } }
GET /policies/customer/{id} Get policies by customer

Headers

Authorization: Bearer {token}

Example Request

GET /policies/customer/7 Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": [{"id":15,"title":"POL-2026-001"}], "count": 1 }
POST /policies/add Create new policy

Headers

Authorization: Bearer {token}

Request Body

FieldTypeDescription
customer_idinteger requiredCustomer ID
titlestring requiredPolicy title
insurance_typeinteger requiredID from /types endpoint (types table)
insurance_companyinteger requiredID from /companies endpoint (insurance_companies table)
expire_datedate requiredExpiry (YYYY-MM-DD)

Example Request

POST /policies/add Authorization: Bearer a1b2c3d4e5f6... Content-Type: application/json { "customer_id": 7, "title": "POL-2026-002", "insurance_type": 1, "insurance_company": 5, "expire_date": "2027-06-30" }

Response

{ "status": "success", "message": "Policy added successfully", "data": {"id": 16} }
POST /policies/edit/{id} Update policy

Headers

Authorization: Bearer {token}

Request Body

FieldTypeDescription
customer_idinteger optionalCustomer ID
titlestring optionalPolicy title
insurance_typeinteger optionalID from /types endpoint (types table)
insurance_companyinteger optionalID from /companies endpoint (insurance_companies table)
expire_datedate optionalExpiry (YYYY-MM-DD)
💡 Only include fields you want to update

Example Request

POST /policies/edit/15 Authorization: Bearer a1b2c3d4e5f6... Content-Type: application/json { "expire_date": "2027-12-31" }

Response

{ "status": "success", "message": "Policy updated successfully" }
POST /policies/delete/{id} Delete policy

Headers

Authorization: Bearer {token}

Request Body

No body required. ID in URL. Multiple IDs: /policies/delete/15,16,17

Example Request

POST /policies/delete/15 Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "message": "Policy(ies) deleted successfully" }
POST /policies/import Bulk import

Headers

Authorization: Bearer {token}

Request Body

FieldTypeDescription
policiesarray requiredArray of policy objects

Each requires: customer_id, title, insurance_type, insurance_company, expire_date

Example Request

POST /policies/import Authorization: Bearer a1b2c3d4e5f6... Content-Type: application/json { "policies": [ {"customer_id":7,"title":"IMP-001","insurance_type":1,"insurance_company":5,"expire_date":"2027-12-31"} ] }

Response

{ "status": "success", "data": {"total":1,"success":1,"errors":0} }

📚 Reference Data

GET /types List insurance types

Headers

Authorization: Bearer {token}

Example Request

GET /types Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": [ {"id":1,"name":"Life Insurance"}, {"id":2,"name":"Health Insurance"} ] }
💡 Use the id for insurance_type when creating policies
GET /companies List insurance companies

Headers

Authorization: Bearer {token}

Example Request

GET /companies Authorization: Bearer a1b2c3d4e5f6...

Response

{ "status": "success", "data": [ {"id":1,"name":"ABC Insurance","tel":"22111111"} ] }
💡 Use the id for insurance_company when creating policies

⚠️ Error Codes

CodeHTTPDescription
AUTH_HEADER_MISSING401No Authorization header
INVALID_AUTH_FORMAT401Not "Bearer {token}" format
TOKEN_NOT_FOUND401Token doesn't exist
TOKEN_EXPIRED401Token expired (24h limit)
IP_NOT_WHITELISTED401IP doesn't match login IP