/api/admin/ for all endpointsScope — all queries filtered by authenticated user's
business_idAuth —
Authorization: Bearer {sanctum_token} · user_type must be admin or staffEnvelope —
{ "success": true, "msg": "...", "data": [...], "pagination": {...} }Dashboard
Business-scoped KPI summary. Returns live counts of projects, proposals, open vouchers, and upcoming calendar events.
{
"success": true,
"msg": "Dashboard",
"data": {
"project_count": 12,
"active_project_count": 7,
"proposal_count": 18,
"open_voucher_count": 4,
"upcoming_event_count": 3,
"welcome_message": "Business admin dashboard"
}
}Projects
Paginated list of project. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Projects",
"data": {
"id": 4,
"business_id": 1,
"location_id": 1,
"client_user_id": 5,
"name": "Residential Block A รขยย Phase 2",
"description": "Foundation and framing works",
"status": "active",
"contract_value": 2500000.0,
"current_phase_key": "foundation",
"address": "Plot 12, DHA Phase 8, Karachi"
}
}Create a new project record.
{
"name": "Residential Block A รขยย Phase 2",
"description": "Foundation and framing works",
"location_id": 1,
"client_user_id": 5,
"status": "active",
"contract_value": 2500000,
"start_date": "2026-07-01",
"expected_end_date": "2026-12-31",
"current_phase_key": "foundation",
"address": "Plot 12, DHA Phase 8, Karachi"
}{
"success": true,
"msg": "Projects",
"data": {
"id": 4,
"business_id": 1,
"location_id": 1,
"client_user_id": 5,
"name": "Residential Block A รขยย Phase 2",
"description": "Foundation and framing works",
"status": "active",
"contract_value": 2500000.0,
"current_phase_key": "foundation",
"address": "Plot 12, DHA Phase 8, Karachi"
}
}Retrieve one project by ID.
{
"success": true,
"msg": "Projects",
"data": {
"id": 4,
"business_id": 1,
"location_id": 1,
"client_user_id": 5,
"name": "Residential Block A รขยย Phase 2",
"description": "Foundation and framing works",
"status": "active",
"contract_value": 2500000.0,
"current_phase_key": "foundation",
"address": "Plot 12, DHA Phase 8, Karachi"
}
}Update any fields on an existing project. All fields optional.
{
"name": "Residential Block A รขยย Phase 2",
"description": "Foundation and framing works",
"location_id": 1,
"client_user_id": 5,
"status": "active",
"contract_value": 2500000,
"start_date": "2026-07-01",
"expected_end_date": "2026-12-31",
"current_phase_key": "foundation",
"address": "Plot 12, DHA Phase 8, Karachi"
}{
"success": true,
"msg": "Projects",
"data": {
"id": 4,
"business_id": 1,
"location_id": 1,
"client_user_id": 5,
"name": "Residential Block A รขยย Phase 2",
"description": "Foundation and framing works",
"status": "active",
"contract_value": 2500000.0,
"current_phase_key": "foundation",
"address": "Plot 12, DHA Phase 8, Karachi"
}
}Permanently delete this project.
{
"success": true,
"msg": "Deleted",
"data": null
}Project Detail Sub-routes
All sub-routes require projects.view. Project must belong to admin's business.
All phases for a project ordered by sort_order.
{
"success": true,
"msg": "Phases",
"data": [
{
"id": 1,
"project_id": 4,
"phase_key": "foundation",
"name": "Foundation Works",
"status": "in_progress",
"progress_percent": 65,
"sort_order": 1
}
],
"pagination": {"current_page":1,"per_page":20,"total":3,"last_page":1}
}All proposals linked to a project.
{
"success": true,
"msg": "Proposals",
"data": [
{
"id": 2,
"business_id": 1,
"project_id": 4,
"title": "Revised foundation proposal",
"status": "approved",
"quoted_amount": 2500000.0,
"current_round": 2
}
],
"pagination": {"current_page":1,"per_page":20,"total":2,"last_page":1}
}All vouchers for a project.
{
"success": true,
"msg": "Vouchers",
"data": [
{
"id": 7,
"business_id": 1,
"project_id": 4,
"subcontractor_id": 2,
"voucher_no": "VCH-2026-0007",
"voucher_type": "subcontractor",
"status": "submitted",
"amount": 185000.0,
"week_ending": "2026-06-21"
}
],
"pagination": {"current_page":1,"per_page":20,"total":4,"last_page":1}
}Ledger entries for a project, ordered by entry_date desc.
{
"success": true,
"msg": "Ledgers",
"data": [
{
"id": 3,
"business_id": 1,
"project_id": 4,
"party_type": "subcontractor",
"party_id": 2,
"entry_type": "payment",
"debit": 0.0,
"credit": 185000.0,
"reference": "VCH-2026-0007",
"description": "Payment for week ending 21 Jun 2026",
"entry_date": "2026-06-22"
}
],
"pagination": {"current_page":1,"per_page":20,"total":3,"last_page":1}
}Contract and drawing revisions for a project (not paginated, returns object with two arrays).
{
"success": true,
"msg": "Revisions",
"data": {
"contracts": [
{
"id": 1,
"type": "contract",
"revision_number": 2,
"status": "approved",
"contract_value": 2500000.0,
"file_path": "contracts/proj4-rev2.pdf"
}
],
"drawings": [
{
"id": 1,
"type": "drawing",
"drawing_code": "DWG-A-001",
"revision_number": 3,
"status": "issued",
"file_path": "drawings/DWG-A-001-rev3.pdf"
}
]
}
}Material stock entries for a project.
{
"success": true,
"msg": "Materials",
"data": [
{
"id": 1,
"project_id": 4,
"material_name": "OPC Cement 50kg",
"unit": "bags",
"quantity_on_hand": 240.0,
"quantity_reserved": 60.0
}
],
"pagination": {"current_page":1,"per_page":20,"total":5,"last_page":1}
}Daily progress logs for a project, newest first.
{
"success": true,
"msg": "Daily logs",
"data": [
{
"id": 1,
"business_id": 1,
"project_id": 4,
"subcontractor_id": 2,
"user_id": 3,
"log_date": "2026-06-22",
"work_summary": "Completed 3 column foundations; 8 workers on site",
"workers_count": 8,
"status": "submitted"
}
],
"pagination": {"current_page":1,"per_page":20,"total":18,"last_page":1}
}Proposals
Paginated list of proposal. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Proposals",
"data": {
"id": 3,
"business_id": 1,
"project_id": 4,
"title": "Revised foundation proposal round 2",
"status": "draft",
"quoted_amount": 2500000.0,
"current_round": 2
}
}Create a new proposal record.
{
"project_id": 4,
"title": "Revised foundation proposal round 2",
"status": "draft",
"quoted_amount": 2500000,
"current_round": 2
}{
"success": true,
"msg": "Proposals",
"data": {
"id": 3,
"business_id": 1,
"project_id": 4,
"title": "Revised foundation proposal round 2",
"status": "draft",
"quoted_amount": 2500000.0,
"current_round": 2
}
}Retrieve one proposal by ID.
{
"success": true,
"msg": "Proposals",
"data": {
"id": 3,
"business_id": 1,
"project_id": 4,
"title": "Revised foundation proposal round 2",
"status": "draft",
"quoted_amount": 2500000.0,
"current_round": 2
}
}Update any fields on an existing proposal. All fields optional.
{
"project_id": 4,
"title": "Revised foundation proposal round 2",
"status": "draft",
"quoted_amount": 2500000,
"current_round": 2
}{
"success": true,
"msg": "Proposals",
"data": {
"id": 3,
"business_id": 1,
"project_id": 4,
"title": "Revised foundation proposal round 2",
"status": "draft",
"quoted_amount": 2500000.0,
"current_round": 2
}
}Permanently delete this proposal.
{
"success": true,
"msg": "Deleted",
"data": null
}Phases
Paginated list of phase. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Phases",
"data": {
"id": 5,
"project_id": 4,
"phase_key": "structural",
"name": "Structural Framing",
"status": "pending",
"progress_percent": 0,
"sort_order": 2
}
}Create a new phase record.
{
"project_id": 4,
"phase_key": "structural",
"name": "Structural Framing",
"status": "pending",
"progress_percent": 0,
"planned_start": "2026-08-01",
"planned_end": "2026-10-15",
"sort_order": 2
}{
"success": true,
"msg": "Phases",
"data": {
"id": 5,
"project_id": 4,
"phase_key": "structural",
"name": "Structural Framing",
"status": "pending",
"progress_percent": 0,
"sort_order": 2
}
}Retrieve one phase by ID.
{
"success": true,
"msg": "Phases",
"data": {
"id": 5,
"project_id": 4,
"phase_key": "structural",
"name": "Structural Framing",
"status": "pending",
"progress_percent": 0,
"sort_order": 2
}
}Update any fields on an existing phase. All fields optional.
{
"project_id": 4,
"phase_key": "structural",
"name": "Structural Framing",
"status": "pending",
"progress_percent": 0,
"planned_start": "2026-08-01",
"planned_end": "2026-10-15",
"sort_order": 2
}{
"success": true,
"msg": "Phases",
"data": {
"id": 5,
"project_id": 4,
"phase_key": "structural",
"name": "Structural Framing",
"status": "pending",
"progress_percent": 0,
"sort_order": 2
}
}Permanently delete this phase.
{
"success": true,
"msg": "Deleted",
"data": null
}People — Staff
Paginated list of staff profile. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Staff",
"data": {
"id": 3,
"business_id": 1,
"user_id": 7,
"location_id": 1,
"job_title": "Site Engineer",
"department": "Engineering",
"status": "active"
}
}Create a new staff profile record.
{
"user_id": 7,
"location_id": 1,
"job_title": "Site Engineer",
"department": "Engineering",
"status": "active"
}{
"success": true,
"msg": "Staff",
"data": {
"id": 3,
"business_id": 1,
"user_id": 7,
"location_id": 1,
"job_title": "Site Engineer",
"department": "Engineering",
"status": "active"
}
}Retrieve one staff profile by ID.
{
"success": true,
"msg": "Staff",
"data": {
"id": 3,
"business_id": 1,
"user_id": 7,
"location_id": 1,
"job_title": "Site Engineer",
"department": "Engineering",
"status": "active"
}
}Update any fields on an existing staff profile. All fields optional.
{
"user_id": 7,
"location_id": 1,
"job_title": "Site Engineer",
"department": "Engineering",
"status": "active"
}{
"success": true,
"msg": "Staff",
"data": {
"id": 3,
"business_id": 1,
"user_id": 7,
"location_id": 1,
"job_title": "Site Engineer",
"department": "Engineering",
"status": "active"
}
}Permanently delete this staff profile.
{
"success": true,
"msg": "Deleted",
"data": null
}People — Subcontractors
Paginated list of subcontractor. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Subcontractors",
"data": {
"id": 3,
"business_id": 1,
"user_id": null,
"company_name": "RapidSteel Contractors",
"trade_type": "steel_works",
"contact_email": "rapidsteel@contractors.test",
"contact_phone": "+92-321-0011223",
"status": "active"
}
}Create a new subcontractor record.
{
"user_id": null,
"company_name": "RapidSteel Contractors",
"trade_type": "steel_works",
"contact_email": "rapidsteel@contractors.test",
"contact_phone": "+92-321-0011223",
"status": "active"
}{
"success": true,
"msg": "Subcontractors",
"data": {
"id": 3,
"business_id": 1,
"user_id": null,
"company_name": "RapidSteel Contractors",
"trade_type": "steel_works",
"contact_email": "rapidsteel@contractors.test",
"contact_phone": "+92-321-0011223",
"status": "active"
}
}Retrieve one subcontractor by ID.
{
"success": true,
"msg": "Subcontractors",
"data": {
"id": 3,
"business_id": 1,
"user_id": null,
"company_name": "RapidSteel Contractors",
"trade_type": "steel_works",
"contact_email": "rapidsteel@contractors.test",
"contact_phone": "+92-321-0011223",
"status": "active"
}
}Update any fields on an existing subcontractor. All fields optional.
{
"user_id": null,
"company_name": "RapidSteel Contractors",
"trade_type": "steel_works",
"contact_email": "rapidsteel@contractors.test",
"contact_phone": "+92-321-0011223",
"status": "active"
}{
"success": true,
"msg": "Subcontractors",
"data": {
"id": 3,
"business_id": 1,
"user_id": null,
"company_name": "RapidSteel Contractors",
"trade_type": "steel_works",
"contact_email": "rapidsteel@contractors.test",
"contact_phone": "+92-321-0011223",
"status": "active"
}
}Permanently delete this subcontractor.
{
"success": true,
"msg": "Deleted",
"data": null
}Financial — Vouchers
Paginated list of voucher. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Vouchers",
"data": {
"id": 8,
"business_id": 1,
"project_id": 4,
"subcontractor_id": 3,
"voucher_no": "VCH-2026-0008",
"voucher_type": "subcontractor",
"status": "draft",
"amount": 220000.0,
"week_ending": "2026-06-28"
}
}Create a new voucher record.
{
"project_id": 4,
"subcontractor_id": 3,
"voucher_no": "VCH-2026-0008",
"voucher_type": "subcontractor",
"status": "draft",
"amount": 220000,
"week_ending": "2026-06-28"
}{
"success": true,
"msg": "Vouchers",
"data": {
"id": 8,
"business_id": 1,
"project_id": 4,
"subcontractor_id": 3,
"voucher_no": "VCH-2026-0008",
"voucher_type": "subcontractor",
"status": "draft",
"amount": 220000.0,
"week_ending": "2026-06-28"
}
}Retrieve one voucher by ID.
{
"success": true,
"msg": "Vouchers",
"data": {
"id": 8,
"business_id": 1,
"project_id": 4,
"subcontractor_id": 3,
"voucher_no": "VCH-2026-0008",
"voucher_type": "subcontractor",
"status": "draft",
"amount": 220000.0,
"week_ending": "2026-06-28"
}
}Update any fields on an existing voucher. All fields optional.
{
"project_id": 4,
"subcontractor_id": 3,
"voucher_no": "VCH-2026-0008",
"voucher_type": "subcontractor",
"status": "draft",
"amount": 220000,
"week_ending": "2026-06-28"
}{
"success": true,
"msg": "Vouchers",
"data": {
"id": 8,
"business_id": 1,
"project_id": 4,
"subcontractor_id": 3,
"voucher_no": "VCH-2026-0008",
"voucher_type": "subcontractor",
"status": "draft",
"amount": 220000.0,
"week_ending": "2026-06-28"
}
}Permanently delete this voucher.
{
"success": true,
"msg": "Deleted",
"data": null
}Financial — Ledger Entries
Paginated list of ledger entry. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Ledgers",
"data": {
"id": 4,
"business_id": 1,
"project_id": 4,
"party_type": "subcontractor",
"party_id": 3,
"entry_type": "payment",
"debit": 0.0,
"credit": 220000.0,
"reference": "VCH-2026-0008",
"description": "Payment against voucher",
"entry_date": "2026-06-28"
}
}Create a new ledger entry record.
{
"project_id": 4,
"party_type": "subcontractor",
"party_id": 3,
"entry_type": "payment",
"debit": 0,
"credit": 220000,
"reference": "VCH-2026-0008",
"description": "Payment against voucher",
"entry_date": "2026-06-28"
}{
"success": true,
"msg": "Ledgers",
"data": {
"id": 4,
"business_id": 1,
"project_id": 4,
"party_type": "subcontractor",
"party_id": 3,
"entry_type": "payment",
"debit": 0.0,
"credit": 220000.0,
"reference": "VCH-2026-0008",
"description": "Payment against voucher",
"entry_date": "2026-06-28"
}
}Retrieve one ledger entry by ID.
{
"success": true,
"msg": "Ledgers",
"data": {
"id": 4,
"business_id": 1,
"project_id": 4,
"party_type": "subcontractor",
"party_id": 3,
"entry_type": "payment",
"debit": 0.0,
"credit": 220000.0,
"reference": "VCH-2026-0008",
"description": "Payment against voucher",
"entry_date": "2026-06-28"
}
}Update any fields on an existing ledger entry. All fields optional.
{
"project_id": 4,
"party_type": "subcontractor",
"party_id": 3,
"entry_type": "payment",
"debit": 0,
"credit": 220000,
"reference": "VCH-2026-0008",
"description": "Payment against voucher",
"entry_date": "2026-06-28"
}{
"success": true,
"msg": "Ledgers",
"data": {
"id": 4,
"business_id": 1,
"project_id": 4,
"party_type": "subcontractor",
"party_id": 3,
"entry_type": "payment",
"debit": 0.0,
"credit": 220000.0,
"reference": "VCH-2026-0008",
"description": "Payment against voucher",
"entry_date": "2026-06-28"
}
}Permanently delete this ledger entry.
{
"success": true,
"msg": "Deleted",
"data": null
}Financial — Variation Orders
Paginated list of variation order. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Variation orders",
"data": {
"id": 1,
"business_id": 1,
"project_id": 4,
"vo_number": "VO-2026-0001",
"title": "Additional reinforcement for column footings",
"description": "Structural engineer requirement after soil report",
"amount": 75000.0,
"status": "pending"
}
}Create a new variation order record.
{
"project_id": 4,
"vo_number": "VO-2026-0001",
"title": "Additional reinforcement for column footings",
"description": "Structural engineer requirement after soil report",
"amount": 75000,
"status": "pending"
}{
"success": true,
"msg": "Variation orders",
"data": {
"id": 1,
"business_id": 1,
"project_id": 4,
"vo_number": "VO-2026-0001",
"title": "Additional reinforcement for column footings",
"description": "Structural engineer requirement after soil report",
"amount": 75000.0,
"status": "pending"
}
}Retrieve one variation order by ID.
{
"success": true,
"msg": "Variation orders",
"data": {
"id": 1,
"business_id": 1,
"project_id": 4,
"vo_number": "VO-2026-0001",
"title": "Additional reinforcement for column footings",
"description": "Structural engineer requirement after soil report",
"amount": 75000.0,
"status": "pending"
}
}Update any fields on an existing variation order. All fields optional.
{
"project_id": 4,
"vo_number": "VO-2026-0001",
"title": "Additional reinforcement for column footings",
"description": "Structural engineer requirement after soil report",
"amount": 75000,
"status": "pending"
}{
"success": true,
"msg": "Variation orders",
"data": {
"id": 1,
"business_id": 1,
"project_id": 4,
"vo_number": "VO-2026-0001",
"title": "Additional reinforcement for column footings",
"description": "Structural engineer requirement after soil report",
"amount": 75000.0,
"status": "pending"
}
}Permanently delete this variation order.
{
"success": true,
"msg": "Deleted",
"data": null
}Financial — Daywork Orders
Paginated list of daywork order. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Daywork orders",
"data": {
"id": 1,
"business_id": 1,
"project_id": 4,
"dwo_number": "DWO-2026-0001",
"title": "Emergency waterproofing works",
"description": "Urgent waterproofing after rain damage",
"amount": 32000.0,
"status": "draft",
"work_date": "2026-06-22"
}
}Create a new daywork order record.
{
"project_id": 4,
"dwo_number": "DWO-2026-0001",
"title": "Emergency waterproofing works",
"description": "Urgent waterproofing after rain damage",
"amount": 32000,
"status": "draft",
"work_date": "2026-06-22"
}{
"success": true,
"msg": "Daywork orders",
"data": {
"id": 1,
"business_id": 1,
"project_id": 4,
"dwo_number": "DWO-2026-0001",
"title": "Emergency waterproofing works",
"description": "Urgent waterproofing after rain damage",
"amount": 32000.0,
"status": "draft",
"work_date": "2026-06-22"
}
}Retrieve one daywork order by ID.
{
"success": true,
"msg": "Daywork orders",
"data": {
"id": 1,
"business_id": 1,
"project_id": 4,
"dwo_number": "DWO-2026-0001",
"title": "Emergency waterproofing works",
"description": "Urgent waterproofing after rain damage",
"amount": 32000.0,
"status": "draft",
"work_date": "2026-06-22"
}
}Update any fields on an existing daywork order. All fields optional.
{
"project_id": 4,
"dwo_number": "DWO-2026-0001",
"title": "Emergency waterproofing works",
"description": "Urgent waterproofing after rain damage",
"amount": 32000,
"status": "draft",
"work_date": "2026-06-22"
}{
"success": true,
"msg": "Daywork orders",
"data": {
"id": 1,
"business_id": 1,
"project_id": 4,
"dwo_number": "DWO-2026-0001",
"title": "Emergency waterproofing works",
"description": "Urgent waterproofing after rain damage",
"amount": 32000.0,
"status": "draft",
"work_date": "2026-06-22"
}
}Permanently delete this daywork order.
{
"success": true,
"msg": "Deleted",
"data": null
}Calendar Events
Paginated list of calendar event. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Calendar",
"data": {
"id": 5,
"business_id": 1,
"project_id": 4,
"assigned_user_id": 7,
"title": "Foundation inspection",
"description": "Structural engineer site visit for foundation sign-off",
"starts_at": "2026-07-05T09:00:00+05:00",
"ends_at": "2026-07-05T12:00:00+05:00",
"event_type": "inspection"
}
}Create a new calendar event record.
{
"project_id": 4,
"assigned_user_id": 7,
"title": "Foundation inspection",
"description": "Structural engineer site visit for foundation sign-off",
"starts_at": "2026-07-05T09:00:00+05:00",
"ends_at": "2026-07-05T12:00:00+05:00",
"event_type": "inspection"
}{
"success": true,
"msg": "Calendar",
"data": {
"id": 5,
"business_id": 1,
"project_id": 4,
"assigned_user_id": 7,
"title": "Foundation inspection",
"description": "Structural engineer site visit for foundation sign-off",
"starts_at": "2026-07-05T09:00:00+05:00",
"ends_at": "2026-07-05T12:00:00+05:00",
"event_type": "inspection"
}
}Retrieve one calendar event by ID.
{
"success": true,
"msg": "Calendar",
"data": {
"id": 5,
"business_id": 1,
"project_id": 4,
"assigned_user_id": 7,
"title": "Foundation inspection",
"description": "Structural engineer site visit for foundation sign-off",
"starts_at": "2026-07-05T09:00:00+05:00",
"ends_at": "2026-07-05T12:00:00+05:00",
"event_type": "inspection"
}
}Update any fields on an existing calendar event. All fields optional.
{
"project_id": 4,
"assigned_user_id": 7,
"title": "Foundation inspection",
"description": "Structural engineer site visit for foundation sign-off",
"starts_at": "2026-07-05T09:00:00+05:00",
"ends_at": "2026-07-05T12:00:00+05:00",
"event_type": "inspection"
}{
"success": true,
"msg": "Calendar",
"data": {
"id": 5,
"business_id": 1,
"project_id": 4,
"assigned_user_id": 7,
"title": "Foundation inspection",
"description": "Structural engineer site visit for foundation sign-off",
"starts_at": "2026-07-05T09:00:00+05:00",
"ends_at": "2026-07-05T12:00:00+05:00",
"event_type": "inspection"
}
}Permanently delete this calendar event.
{
"success": true,
"msg": "Deleted",
"data": null
}Setup & Reference Data
Configure these during business onboarding before creating projects. Each follows the standard 5-endpoint CRUD pattern scoped to the business.
Paginated list of location. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Locations",
"data": {
"id": 2,
"business_id": 1,
"name": "Karachi Office",
"address": "Plot 14, SITE Area, Karachi",
"contact_person": "Usman Ali",
"contact_phone": "+92-300-4455667",
"is_active": true
}
}Create a new location record.
{
"name": "Karachi Office",
"address": "Plot 14, SITE Area, Karachi",
"contact_person": "Usman Ali",
"contact_phone": "+92-300-4455667",
"is_active": true
}{
"success": true,
"msg": "Locations",
"data": {
"id": 2,
"business_id": 1,
"name": "Karachi Office",
"address": "Plot 14, SITE Area, Karachi",
"contact_person": "Usman Ali",
"contact_phone": "+92-300-4455667",
"is_active": true
}
}Retrieve one location by ID.
{
"success": true,
"msg": "Locations",
"data": {
"id": 2,
"business_id": 1,
"name": "Karachi Office",
"address": "Plot 14, SITE Area, Karachi",
"contact_person": "Usman Ali",
"contact_phone": "+92-300-4455667",
"is_active": true
}
}Update any fields on an existing location. All fields optional.
{
"name": "Karachi Office",
"address": "Plot 14, SITE Area, Karachi",
"contact_person": "Usman Ali",
"contact_phone": "+92-300-4455667",
"is_active": true
}{
"success": true,
"msg": "Locations",
"data": {
"id": 2,
"business_id": 1,
"name": "Karachi Office",
"address": "Plot 14, SITE Area, Karachi",
"contact_person": "Usman Ali",
"contact_phone": "+92-300-4455667",
"is_active": true
}
}Permanently delete this location.
{
"success": true,
"msg": "Deleted",
"data": null
}Paginated list of phase library item. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Phase library",
"data": {
"id": 5,
"business_id": 1,
"phase_key": "electrical",
"name": "Electrical Works",
"description": "Full electrical wiring, panel installation, fixtures",
"default_duration_days": 45,
"sort_order": 5,
"is_active": true
}
}Create a new phase library item record.
{
"phase_key": "electrical",
"name": "Electrical Works",
"description": "Full electrical wiring, panel installation, fixtures",
"default_duration_days": 45,
"sort_order": 5,
"is_active": true
}{
"success": true,
"msg": "Phase library",
"data": {
"id": 5,
"business_id": 1,
"phase_key": "electrical",
"name": "Electrical Works",
"description": "Full electrical wiring, panel installation, fixtures",
"default_duration_days": 45,
"sort_order": 5,
"is_active": true
}
}Retrieve one phase library item by ID.
{
"success": true,
"msg": "Phase library",
"data": {
"id": 5,
"business_id": 1,
"phase_key": "electrical",
"name": "Electrical Works",
"description": "Full electrical wiring, panel installation, fixtures",
"default_duration_days": 45,
"sort_order": 5,
"is_active": true
}
}Update any fields on an existing phase library item. All fields optional.
{
"phase_key": "electrical",
"name": "Electrical Works",
"description": "Full electrical wiring, panel installation, fixtures",
"default_duration_days": 45,
"sort_order": 5,
"is_active": true
}{
"success": true,
"msg": "Phase library",
"data": {
"id": 5,
"business_id": 1,
"phase_key": "electrical",
"name": "Electrical Works",
"description": "Full electrical wiring, panel installation, fixtures",
"default_duration_days": 45,
"sort_order": 5,
"is_active": true
}
}Permanently delete this phase library item.
{
"success": true,
"msg": "Deleted",
"data": null
}Paginated list of document type. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Document types",
"data": {
"id": 3,
"business_id": 1,
"name": "Completion Certificate",
"category": "certification",
"requires_approval": true,
"is_active": true
}
}Create a new document type record.
{
"name": "Completion Certificate",
"category": "certification",
"requires_approval": true,
"is_active": true
}{
"success": true,
"msg": "Document types",
"data": {
"id": 3,
"business_id": 1,
"name": "Completion Certificate",
"category": "certification",
"requires_approval": true,
"is_active": true
}
}Retrieve one document type by ID.
{
"success": true,
"msg": "Document types",
"data": {
"id": 3,
"business_id": 1,
"name": "Completion Certificate",
"category": "certification",
"requires_approval": true,
"is_active": true
}
}Update any fields on an existing document type. All fields optional.
{
"name": "Completion Certificate",
"category": "certification",
"requires_approval": true,
"is_active": true
}{
"success": true,
"msg": "Document types",
"data": {
"id": 3,
"business_id": 1,
"name": "Completion Certificate",
"category": "certification",
"requires_approval": true,
"is_active": true
}
}Permanently delete this document type.
{
"success": true,
"msg": "Deleted",
"data": null
}Paginated list of trade type. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Trade types",
"data": {
"id": 4,
"business_id": 1,
"name": "Structural Steel Works",
"code": "SSW",
"is_active": true
}
}Create a new trade type record.
{
"name": "Structural Steel Works",
"code": "SSW",
"is_active": true
}{
"success": true,
"msg": "Trade types",
"data": {
"id": 4,
"business_id": 1,
"name": "Structural Steel Works",
"code": "SSW",
"is_active": true
}
}Retrieve one trade type by ID.
{
"success": true,
"msg": "Trade types",
"data": {
"id": 4,
"business_id": 1,
"name": "Structural Steel Works",
"code": "SSW",
"is_active": true
}
}Update any fields on an existing trade type. All fields optional.
{
"name": "Structural Steel Works",
"code": "SSW",
"is_active": true
}{
"success": true,
"msg": "Trade types",
"data": {
"id": 4,
"business_id": 1,
"name": "Structural Steel Works",
"code": "SSW",
"is_active": true
}
}Permanently delete this trade type.
{
"success": true,
"msg": "Deleted",
"data": null
}Paginated list of subcontractor category. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Subcontractor categories",
"data": {
"id": 2,
"business_id": 1,
"name": "Civil Works",
"code": "CIV",
"is_active": true
}
}Create a new subcontractor category record.
{
"name": "Civil Works",
"code": "CIV",
"is_active": true
}{
"success": true,
"msg": "Subcontractor categories",
"data": {
"id": 2,
"business_id": 1,
"name": "Civil Works",
"code": "CIV",
"is_active": true
}
}Retrieve one subcontractor category by ID.
{
"success": true,
"msg": "Subcontractor categories",
"data": {
"id": 2,
"business_id": 1,
"name": "Civil Works",
"code": "CIV",
"is_active": true
}
}Update any fields on an existing subcontractor category. All fields optional.
{
"name": "Civil Works",
"code": "CIV",
"is_active": true
}{
"success": true,
"msg": "Subcontractor categories",
"data": {
"id": 2,
"business_id": 1,
"name": "Civil Works",
"code": "CIV",
"is_active": true
}
}Permanently delete this subcontractor category.
{
"success": true,
"msg": "Deleted",
"data": null
}Paginated list of project template. Scoped to authenticated business.
| Param | Description |
|---|---|
| search | Text search |
| per_page | Default 20 |
{
"success": true,
"msg": "Project templates",
"data": {
"id": 2,
"business_id": 1,
"name": "Residential Construction Standard",
"description": "Standard phases for a residential build",
"phase_keys": ["foundation","structural","roofing","plumbing","electrical","finishing"],
"is_active": true
}
}Create a new project template record.
{
"name": "Residential Construction Standard",
"description": "Standard phases for a residential build",
"phase_keys": ["foundation","structural","roofing","plumbing","electrical","finishing"],
"is_active": true
}{
"success": true,
"msg": "Project templates",
"data": {
"id": 2,
"business_id": 1,
"name": "Residential Construction Standard",
"description": "Standard phases for a residential build",
"phase_keys": ["foundation","structural","roofing","plumbing","electrical","finishing"],
"is_active": true
}
}Retrieve one project template by ID.
{
"success": true,
"msg": "Project templates",
"data": {
"id": 2,
"business_id": 1,
"name": "Residential Construction Standard",
"description": "Standard phases for a residential build",
"phase_keys": ["foundation","structural","roofing","plumbing","electrical","finishing"],
"is_active": true
}
}Update any fields on an existing project template. All fields optional.
{
"name": "Residential Construction Standard",
"description": "Standard phases for a residential build",
"phase_keys": ["foundation","structural","roofing","plumbing","electrical","finishing"],
"is_active": true
}{
"success": true,
"msg": "Project templates",
"data": {
"id": 2,
"business_id": 1,
"name": "Residential Construction Standard",
"description": "Standard phases for a residential build",
"phase_keys": ["foundation","structural","roofing","plumbing","electrical","finishing"],
"is_active": true
}
}Permanently delete this project template.
{
"success": true,
"msg": "Deleted",
"data": null
}Settings — Signature
Get the business-level signature settings used on vouchers, certificates, and documents.
{
"success": true,
"msg": "Signature settings",
"data": {
"id": 1,
"business_id": 1,
"user_id": 0,
"signature_image_path": "signatures/business-1-default.png",
"signer_name": "Eng. Arif Khan",
"signer_title": "Director - Pak Engineering Service"
}
}Update/upsert the business signature. Creates the record if it does not yet exist.
{
"signature_image_path": "signatures/business-1-default.png",
"signer_name": "Eng. Arif Khan",
"signer_title": "Director - Pak Engineering Service"
}{
"success": true,
"msg": "Signature settings",
"data": {
"id": 1,
"business_id": 1,
"user_id": 0,
"signature_image_path": "signatures/business-1-default.png",
"signer_name": "Eng. Arif Khan",
"signer_title": "Director - Pak Engineering Service"
}
}Notifications
In-app notifications for the authenticated user. Supports is_read filter.
| Param | Description |
|---|---|
| is_read | 0 = unread only, 1 = read only |
| per_page | Default 20 |
{
"success": true,
"msg": "Notifications",
"data": {
"data": [
{
"id": 12,
"user_id": 2,
"title": "New project assigned",
"body": "You have been assigned to Residential Block A",
"type": "project_assigned",
"is_read": false,
"created_at": "2026-06-22T14:00:00+05:00"
}
],
"meta": {
"current_page": 1,
"per_page": 20,
"total": 3,
"last_page": 1
}
}
}Fast unread count for topbar badge.
{
"success": true,
"msg": "Unread count",
"data": {
"count": 3
}
}Roles & Permissions
List all roles with their assigned permissions.
{
"success": true,
"msg": "Roles",
"data": [
{
"id": 1,
"slug": "admin",
"name": "Business Admin",
"is_system": true,
"permissions": [
{"id": 1, "slug": "projects.view", "name": "View Projects"},
{"id": 2, "slug": "projects.manage", "name": "Manage Projects"},
{"id": 3, "slug": "dashboard.view", "name": "View Dashboard"}
]
},
{
"id": 3,
"slug": "site-supervisor",
"name": "Site Supervisor",
"is_system": false,
"permissions": [
{"id": 1, "slug": "projects.view", "name": "View Projects"},
{"id": 5, "slug": "phases.view", "name": "View Phases"}
]
}
]
}Create a custom role with specified permission IDs.
{
"name": "Site Supervisor",
"permission_ids": [1, 5, 9, 13]
}{
"success": true,
"msg": "Roles",
"data": [
{
"id": 1,
"slug": "admin",
"name": "Business Admin",
"is_system": true,
"permissions": [
{"id": 1, "slug": "projects.view", "name": "View Projects"},
{"id": 2, "slug": "projects.manage", "name": "Manage Projects"},
{"id": 3, "slug": "dashboard.view", "name": "View Dashboard"}
]
},
{
"id": 3,
"slug": "site-supervisor",
"name": "Site Supervisor",
"is_system": false,
"permissions": [
{"id": 1, "slug": "projects.view", "name": "View Projects"},
{"id": 5, "slug": "phases.view", "name": "View Phases"}
]
}
]
}