Introduction

The Qeei is a B2B SaaS (Software-as-a-Service) platform designed to digitize and streamline the asset valuation process. It operates as a multi-tenant system, meaning a single instance of the software serves multiple companies (tenants), with each company's data kept isolated.


The core concept is to move valuation companies away from manual, paper-based, and Excel-driven workflows to a centralized, online system that manages the entire lifecycle of a valuation request.



Access Requirements


Before using this API, you must obtain your App Key, Secret Key, and the implementation details for X-SIGNATURE from the system administrator.

All API requests must include these credentials; any request without them will be rejected.

Base API URL
https://qeei-backend-admin-dev.dafa.dev/api/v1

Common Errors

A guide to consistent error response formats used across all endpoints.

Error 401 – Unauthorized

The request requires authentication. The user is either not logged in or does not have a valid access token.

Error Response
{
    "message": "Unauthorized",
    "success": false
}

Error 403 – Forbidden

The request was understood, but the server refuses to authorize it. The user does not have permission to perform this action.

Error Response
{
    "message": "You are not allowed to perform this action",
    "success": false
}

Error 404 – Not Found

The requested resource could not be found on the server. It may have been moved or deleted.

Error Response
{
    "message": "Resource not found",
    "success": false
}

Error 405 – Method Not Allowed

The HTTP method used is not supported for this endpoint. Check the allowed request methods.

Error Response
{
    "message": "Method not allowed",
    "success": false
}

Error 419 – Page Expired

The session or CSRF token has expired. Please refresh the page and try again.

Error Response
{
    "message": "Page Expired",
    "success": false
}

Error 422 – Unprocessable Entity

The server understood the request, but the submitted data was invalid. Please review and correct the errors.(Errors may be return array or string)

Error Response
{
    "errors": [],
    "message": "Validation Error",
    "success": false
}

Error 500 – Internal Server Error

An unexpected error occurred on the server. Please try again later or contact support.

Error Response
{
    "message": "Server Error",
    "success": false
}

Mobile API

Budgets

GET /api/v1/mobile/budgets

List Budgets

List my budgets.

Retrieves a list of all budgets the user owns or has access to. Supports filtering by status and type.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Trip Budget Doc",
            "type": "one_time",
            "status": "active",
            "currency": "SAR",
            "owner_id": 1,
            "userRole": "owner",
            "created_at": "2026-10-19T07:12:19.000000Z",
            "deleted_at": null,
            "is_trashed": false,
            "updated_at": "2026-10-19T07:12:19.000000Z",
            "description": null,
            "total_amount": 5000,
            "ending_balance": 5000,
            "total_expenses": 0
        },
        {
            "id": 2,
            "name": "Monthly Budget Doc",
            "type": "scheduled",
            "status": "active",
            "currency": "SAR",
            "owner_id": 1,
            "userRole": "owner",
            "created_at": "2026-10-19T07:12:19.000000Z",
            "deleted_at": null,
            "is_trashed": false,
            "updated_at": "2026-10-19T07:12:19.000000Z",
            "description": null,
            "total_amount": 3000,
            "ending_balance": 3000,
            "total_expenses": 0
        }
    ],
    "message": "Budgets retrieved successfully",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/mobile/budgets

Create Budget

Initialise a new budget.

Create a new budget. Requires specifying the name, overall limit, and budget type (one-time or scheduled).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string New Project Budget
type string one_time
currency string USD
description string Documentation test budget

Request Validations Or Notes

Field/Name Examples
name required, string, min 2, max 100, EnglishLetters, Unique
description optional, string
currency required, string
type required, enum: one_time, scheduled
status optional, enum: active, finished, hidden
total_amount optional, number, min 0
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "New Project Budget",
        "type": "one_time",
        "status": "active",
        "currency": "USD",
        "owner_id": 1,
        "userRole": null,
        "created_at": "2026-10-19T07:12:19.000000Z",
        "deleted_at": null,
        "is_trashed": false,
        "updated_at": "2026-10-19T07:12:19.000000Z",
        "description": "Documentation test budget",
        "total_amount": 0,
        "ending_balance": null,
        "total_expenses": 0
    },
    "message": "Budget created successfully",
    "success": true
}
GET /api/v1/mobile/budgets/shared-with-me

Shared With Me

Budgets shared by others.

List budgets that other users have shared with you.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Budgets shared with you retrieved",
    "success": true
}
POST /api/v1/mobile/budgets/1/transactions/income

Add Income

Record income.

Directly record an income transaction. This is a helper endpoint that forces the transaction type to income.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
amount integer 500

Request Validations Or Notes

Field/Name Examples
type optional, allowed: income, expense
amount required, number, min 0.01
description optional, string, max 255
category optional, string, max 50
account optional, string, max 100
date optional, date (YYYY-MM-DD)
time optional, date format H:i
additionalDate optional, date (YYYY-MM-DD)
photo optional, file, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "transaction": {
            "id": 2,
            "type": "income",
            "photo": null,
            "amount": 500,
            "account": null,
            "category": null,
            "budget_id": "1",
            "created_at": "2026-10-19T07:12:23.000000Z",
            "updated_at": "2026-10-19T07:12:23.000000Z",
            "description": null,
            "creation_date": "2026-10-19",
            "creation_time": "07:12",
            "additional_date": null
        },
        "newEndingBalance": 5500
    },
    "message": "Income recorded successfully",
    "success": true
}
POST /api/v1/mobile/budgets/1/transactions/expense

Add Expense

Record expense.

Directly record an expense transaction. This is a helper endpoint that forces the transaction type to expense.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
date string 2026-10-19
time string 11:46
amount integer 50
category string Food
description string Buying milk and eggs

Request Validations Or Notes

Field/Name Examples
type optional, allowed: income, expense
amount required, number, min 0.01
description optional, string, max 255
category optional, string, max 50
account optional, string, max 100
date optional, date (YYYY-MM-DD)
time optional, date format H:i
additionalDate optional, date (YYYY-MM-DD)
photo optional, file, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "transaction": {
            "id": 3,
            "type": "expense",
            "photo": null,
            "amount": 50,
            "account": null,
            "category": "Food",
            "budget_id": "1",
            "created_at": "2026-10-19T07:12:24.000000Z",
            "updated_at": "2026-10-19T07:12:24.000000Z",
            "description": "Buying milk and eggs",
            "creation_date": "2026-10-19",
            "creation_time": "11:46",
            "additional_date": null
        },
        "newEndingBalance": 5450
    },
    "message": "Expense recorded successfully",
    "success": true
}
GET /api/v1/mobile/budgets/1/transactions

List Transactions

List budget history.

Retrieves a list of transactions for a specific budget. Supports date range filtering, category filtering, and listing trashed transactions.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 3,
            "type": "expense",
            "photo": null,
            "amount": 50,
            "account": null,
            "category": "Food",
            "budget_id": 1,
            "created_at": "2026-10-19T07:12:24.000000Z",
            "updated_at": "2026-10-19T07:12:24.000000Z",
            "description": "Buying milk and eggs",
            "creation_date": "2026-10-19",
            "creation_time": "11:46:00",
            "additional_date": null
        },
        {
            "id": 2,
            "type": "income",
            "photo": null,
            "amount": 500,
            "account": null,
            "category": null,
            "budget_id": 1,
            "created_at": "2026-10-19T07:12:23.000000Z",
            "updated_at": "2026-10-19T07:12:23.000000Z",
            "description": null,
            "creation_date": "2026-10-19",
            "creation_time": "07:12:00",
            "additional_date": null
        },
        {
            "id": 1,
            "type": "expense",
            "photo": null,
            "amount": 50,
            "account": null,
            "category": "Food",
            "budget_id": 1,
            "created_at": "2026-10-19T07:12:19.000000Z",
            "updated_at": "2026-10-19T07:12:19.000000Z",
            "description": "Initial Expense",
            "creation_date": "2026-10-19",
            "creation_time": null,
            "additional_date": null
        }
    ],
    "message": "Transactions retrieved",
    "success": true,
    "summary": {
        "totalAmount": 500,
        "totalIncome": 500,
        "endingBalance": 400,
        "totalExpenses": 100
    },
    "pagination": {
        "total": 3,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/mobile/budgets/1/split

Split Budget

Divide costs with others.

Distribute the budget total amount among multiple users as allocations.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
splits array [{"amount":2500,"userId":4,"percentage":50},{"amount":2500,"userId":1,"percentage":50}]

Request Validations Or Notes

Field/Name Examples
splits required, array, min 1
splits[].userId optional, exists users,id
splits[].amount required, number, min 0
splits[].percentage required, number, min 0, max 100
Success (200 OK)
{
    "data": {
        "splits": [
            {
                "id": 1,
                "user": {
                    "id": 4,
                    "name": "Demo User",
                    "email": "user2@demo.com",
                    "phone": "01211172299",
                    "avatar": null,
                    "is_active": true,
                    "country_id": null,
                    "created_at": "2026-10-19T07:11:54.000000Z",
                    "deleted_at": null,
                    "updated_at": "2026-10-19T07:11:56.000000Z",
                    "postal_code": null,
                    "locked_until": null,
                    "main_address": null,
                    "last_login_at": "2026-10-19T07:11:56.000000Z",
                    "phone_verified_at": null,
                    "change_password_token": null,
                    "failed_login_attempts": 0,
                    "change_password_expired_at": null
                },
                "amount": "2500.00",
                "user_id": 4,
                "budget_id": 1,
                "created_at": "2026-10-19T07:12:28.000000Z",
                "percentage": "50.00",
                "updated_at": "2026-10-19T07:12:28.000000Z"
            },
            {
                "id": 2,
                "user": {
                    "id": 1,
                    "name": "Updated User Name",
                    "email": "updated_email@example.com",
                    "phone": "01011113333",
                    "avatar": null,
                    "is_active": true,
                    "country_id": null,
                    "created_at": "2026-10-19T07:10:16.000000Z",
                    "deleted_at": null,
                    "updated_at": "2026-10-19T07:10:59.000000Z",
                    "postal_code": null,
                    "locked_until": null,
                    "main_address": null,
                    "last_login_at": null,
                    "phone_verified_at": null,
                    "change_password_token": null,
                    "failed_login_attempts": 0,
                    "change_password_expired_at": null
                },
                "amount": "2500.00",
                "user_id": 1,
                "budget_id": 1,
                "created_at": "2026-10-19T07:12:28.000000Z",
                "percentage": "50.00",
                "updated_at": "2026-10-19T07:12:28.000000Z"
            }
        ],
        "totalAmount": 5000
    },
    "message": "Splits updated successfully",
    "success": true
}
GET /api/v1/mobile/budgets/1/split

View Splits

View split info.

View how a specific budget is divided among collaborators.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "budget": {
            "id": 1,
            "name": "Trip Budget Doc",
            "type": "one_time",
            "status": "active",
            "currency": "SAR",
            "owner_id": 1,
            "userRole": "owner",
            "created_at": "2026-10-19T07:12:19.000000Z",
            "deleted_at": null,
            "updated_at": "2026-10-19T07:12:28.000000Z",
            "description": null,
            "total_amount": 5000,
            "ending_balance": 4950,
            "total_expenses": 50
        },
        "splits": [
            {
                "id": 1,
                "user": {
                    "id": 4,
                    "name": "Demo User",
                    "email": "user2@demo.com",
                    "phone": "01211172299",
                    "avatar": null,
                    "is_active": true,
                    "country_id": null,
                    "created_at": "2026-10-19T07:11:54.000000Z",
                    "deleted_at": null,
                    "updated_at": "2026-10-19T07:11:56.000000Z",
                    "postal_code": null,
                    "locked_until": null,
                    "main_address": null,
                    "last_login_at": "2026-10-19T07:11:56.000000Z",
                    "phone_verified_at": null,
                    "change_password_token": null,
                    "failed_login_attempts": 0,
                    "change_password_expired_at": null
                },
                "amount": "2500.00",
                "user_id": 4,
                "budget_id": 1,
                "created_at": "2026-10-19T07:12:28.000000Z",
                "percentage": "50.00",
                "updated_at": "2026-10-19T07:12:28.000000Z"
            },
            {
                "id": 2,
                "user": {
                    "id": 1,
                    "name": "Updated User Name",
                    "email": "updated_email@example.com",
                    "phone": "01011113333",
                    "avatar": null,
                    "is_active": true,
                    "country_id": null,
                    "created_at": "2026-10-19T07:10:16.000000Z",
                    "deleted_at": null,
                    "updated_at": "2026-10-19T07:10:59.000000Z",
                    "postal_code": null,
                    "locked_until": null,
                    "main_address": null,
                    "last_login_at": null,
                    "phone_verified_at": null,
                    "change_password_token": null,
                    "failed_login_attempts": 0,
                    "change_password_expired_at": null
                },
                "amount": "2500.00",
                "user_id": 1,
                "budget_id": 1,
                "created_at": "2026-10-19T07:12:28.000000Z",
                "percentage": "50.00",
                "updated_at": "2026-10-19T07:12:28.000000Z"
            }
        ],
        "isComplete": true,
        "totalAmount": 5000
    },
    "message": "Split details retrieved",
    "success": true
}
GET /api/v1/mobile/budgets/1

Get Budget Details

Retrieve Budget details.

Retrieves detailed information about a specific Budget using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "budget": {
            "id": 1,
            "name": "Trip Budget Doc",
            "type": "one_time",
            "status": "active",
            "currency": "SAR",
            "owner_id": 1,
            "userRole": "owner",
            "created_at": "2026-10-19T07:12:19.000000Z",
            "deleted_at": null,
            "is_trashed": false,
            "updated_at": "2026-10-19T07:12:28.000000Z",
            "description": null,
            "total_amount": 5000,
            "ending_balance": 4950,
            "total_expenses": 50
        }
    },
    "message": "Budget retrieved",
    "success": true
}
PUT /api/v1/mobile/budgets/1

Update Budget

Update an existing Budget.

Updates the specified Budget with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
total_amount integer 5000

Request Validations Or Notes

Field/Name Examples
name optional, required, string, max 100
description optional, string
currency optional, required, string
type optional, required, enum: one_time, scheduled
status optional, enum: active, finished, hidden
total_amount optional, number, min 0
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Trip Budget Doc",
        "type": "one_time",
        "status": "active",
        "currency": "SAR",
        "owner_id": 1,
        "userRole": null,
        "created_at": "2026-10-19T07:12:19.000000Z",
        "deleted_at": null,
        "is_trashed": false,
        "updated_at": "2026-10-19T07:12:28.000000Z",
        "description": null,
        "total_amount": 5000,
        "ending_balance": 4950,
        "total_expenses": 50
    },
    "message": "Budget updated successfully",
    "success": true
}
PUT /api/v1/mobile/budgets/2/hide

hide Budget

Hide a budget.

Updates the budget status to hidden. Hidden budgets are still accessible but may be filtered out from default listings.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Monthly Budget Doc",
        "type": "scheduled",
        "status": "hidden",
        "currency": "SAR",
        "owner_id": 1,
        "userRole": null,
        "created_at": "2026-10-19T07:12:19.000000Z",
        "deleted_at": null,
        "is_trashed": false,
        "updated_at": "2026-10-19T07:24:41.000000Z",
        "description": null,
        "total_amount": 3000,
        "ending_balance": 3000,
        "total_expenses": 0
    },
    "message": "Budget hidden successfully",
    "success": true
}
GET /api/v1/mobile/budgets/1/transactions/3

Transaction Details

Reveal transaction info.

View details of a specific transaction.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "createdBy": "Updated User Name",
        "transaction": {
            "id": 3,
            "type": "expense",
            "photo": null,
            "amount": "50.00",
            "account": null,
            "category": "Food",
            "budget_id": 1,
            "created_at": "2026-10-19T07:12:24.000000Z",
            "updated_at": "2026-10-19T07:12:24.000000Z",
            "description": "Buying milk and eggs",
            "creation_date": "2026-10-19",
            "creation_time": "11:46:00",
            "additional_date": null
        }
    },
    "message": "Transaction details retrieved",
    "success": true
}
PUT /api/v1/mobile/budgets/1/transactions/3

Update Transaction

Edit transaction.

Update transaction details.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
amount integer 600
description string Buying organic milk

Request Validations Or Notes

Field/Name Examples
amount optional, required, number, min 0.01
description optional, string, max 255
category optional, string, max 50
account optional, string, max 100
date optional, required, date (YYYY-MM-DD)
photo optional, file, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "transaction": {
            "id": 3,
            "type": "expense",
            "photo": null,
            "amount": 600,
            "account": null,
            "category": "Food",
            "budget_id": "1",
            "created_at": "2026-10-19T07:12:24.000000Z",
            "updated_at": "2026-10-19T07:24:45.000000Z",
            "description": "Buying organic milk",
            "creation_date": "2026-10-19",
            "creation_time": "11:46:00",
            "additional_date": null
        },
        "updatedBudgetSummary": {
            "totalAmount": 5000,
            "endingBalance": 4400,
            "totalExpenses": 600
        }
    },
    "message": "Transaction updated successfully",
    "success": true
}
POST /api/v1/mobile/splits/2/settle

Settle Split

Settle debt.

Mark a split allocation as settled.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "settled": true
    },
    "message": "Split settled successfully",
    "success": true
}
DELETE /api/v1/mobile/budgets/1

Delete Budget

Delete a Budget.

Deletes the specified Budget from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Budget deleted successfully.",
    "success": true
}
POST /api/v1/mobile/budgets/1/restore

Restore Budget

Restore deleted Budget.

Restore a previously deleted Budget record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Trip Budget Doc",
        "type": "one_time",
        "status": "active",
        "currency": "SAR",
        "owner_id": 1,
        "userRole": null,
        "created_at": "2026-10-19T07:12:19.000000Z",
        "deleted_at": null,
        "is_trashed": false,
        "updated_at": "2026-10-19T07:32:28.000000Z",
        "description": null,
        "total_amount": 5000,
        "ending_balance": 4400,
        "total_expenses": 600
    },
    "message": "Budget restored successfully",
    "success": true
}
DELETE /api/v1/mobile/budgets/1/transactions/3

Delete Transaction

Delete transaction.

Remove a transaction from the budget.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
null

Asset Documents

GET /api/v1/mobile/asset-folders

Get AssetFolder List

Retrieve a list of AssetFolder.

Retrieves a list of AssetFolder records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Personal & Legal Documents",
            "active": true,
            "created_at": "2026-10-19",
            "cover_photo": "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-folders\/covers\/personal-legal-documents.jpg",
            "total_price": 19250.5,
            "documents_count": 3
        }
    ],
    "message": "Folders retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 1,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/mobile/asset-folders

Create AssetFolder

Create a new AssetFolder.

Creates a new AssetFolder in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Insurance Policies

Request Validations Or Notes

Field/Name Examples
name required, string, min 3, max 50, EnglishLetters
cover_photo optional, image, max 5120 KB (upload)
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Insurance Policies",
        "active": true,
        "documents": [],
        "created_at": "2026-10-19",
        "cover_photo": null,
        "total_price": 0,
        "documents_count": 0
    },
    "message": "Folder created successfully.",
    "success": true
}
GET /api/v1/mobile/asset-docs

Get AssetDoc List

Retrieve a list of AssetDoc.

Retrieves a list of AssetDoc records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Apartment Lease Agreement",
            "value": "18000.00",
            "active": true,
            "photos": [
                "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
                "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
            ],
            "currency": "USD",
            "end_date": "2025-12-31",
            "reminder": {
                "time": "2025-12-01 09:00:00",
                "is_periodic": false,
                "periodic_method": null
            },
            "documents": [
                "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
            ],
            "created_at": "2026-10-19",
            "start_date": "2025-01-01",
            "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
            "asset_folder_id": 1
        },
        {
            "id": 2,
            "name": "Comprehensive Car Insurance",
            "value": "1250.50",
            "active": true,
            "photos": [
                "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/car-insurance-card.jpg"
            ],
            "currency": "USD",
            "end_date": "2026-03-14",
            "reminder": {
                "time": "2026-03-14 08:30:00",
                "is_periodic": true,
                "periodic_method": "monthly"
            },
            "documents": [
                "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/car-insurance-policy.pdf"
            ],
            "created_at": "2026-10-19",
            "start_date": "2025-03-15",
            "description": "Full-coverage auto insurance for vehicle plate XYZ-1234, including roadside assistance and windscreen cover.",
            "asset_folder_id": 1
        },
        {
            "id": 3,
            "name": "Passport",
            "value": null,
            "active": true,
            "photos": [
                "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2021\/passport-photo-page.jpg"
            ],
            "currency": null,
            "end_date": "2031-05-31",
            "reminder": {
                "time": "2031-03-02 09:00:00",
                "is_periodic": true,
                "periodic_method": "yearly"
            },
            "documents": [],
            "created_at": "2026-10-19",
            "start_date": "2021-06-01",
            "description": "Primary international travel document. Renewal reminder repeats every year, starting three months before expiry.",
            "asset_folder_id": 1
        }
    ],
    "message": "Documents retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 3,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/mobile/asset-docs

Create AssetDoc

Create a new AssetDoc.

Creates a new AssetDoc in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Health Insurance Policy
value integer 3600
currency string USD
end_date string 2026-01-31
reminder array {"time":"2026-01-10 09:00:00","is_periodic":true,"periodic_method":"monthly"}
start_date string 2025-02-01
description string Family health insurance plan covering 4 members, including dental and optical coverage.
photos_files array []
document_files array []
asset_folder_id integer 1

Request Validations Or Notes

Field/Name Examples
asset_folder_id optional, Exists
name required, string, min 3, max 100, EnglishLetters
description optional, string
start_date optional, date (YYYY-MM-DD)
end_date optional, date (YYYY-MM-DD), on or after start_date
reminder optional, array
reminder.time required, required_with, date (YYYY-MM-DD)
reminder.is_periodic required, required_with, true/false
reminder.periodic_method optional, string, allowed: daily, weekly, monthly, yearly, required if reminder.is_periodic = true
value optional, number, max 999999999999
currency optional, string, max 10
photos_files optional, array, max 20
photos_files[] required, image, file types: jpg,jpeg,png,webp,heic, max 10240 KB (upload)
document_files optional, array
document_files[] required, file, file types: pdf,xls,xlsx,csv,doc,docx,txt,ppt,pptx, max 5120 KB (upload)
Success (200 OK)
{
    "data": {
        "id": 4,
        "name": "Health Insurance Policy",
        "value": "3600.00",
        "active": true,
        "photos": [],
        "currency": "USD",
        "end_date": "2026-01-31",
        "reminder": {
            "time": "2026-01-10 09:00:00",
            "is_periodic": true,
            "periodic_method": "monthly"
        },
        "documents": [],
        "created_at": "2026-10-19",
        "start_date": "2025-02-01",
        "description": "Family health insurance plan covering 4 members, including dental and optical coverage.",
        "asset_folder_id": 1
    },
    "message": "Document created successfully.",
    "success": true
}
POST /api/v1/mobile/asset-docs/move

Move Documents

Bulk move documents.

Move one or more documents to a different folder.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
document_ids array [1]
target_folder_id integer 1

Request Validations Or Notes

Field/Name Examples
document_ids required, array
document_ids[] exists:asset_docs,id
target_folder_id required, exists asset_folders,id
Success (200 OK)
{
    "data": [],
    "message": "Documents moved successfully.",
    "success": true
}
GET /api/v1/mobile/asset-docs/1/download

Download Document

Download document files.

Get downloadable URLs for a document's photos and attached files.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Apartment Lease Agreement",
        "photos": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
        ],
        "documents": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
        ]
    },
    "message": "Document files retrieved successfully.",
    "success": true
}
POST /api/v1/mobile/asset-docs/1/duplicate

Duplicate Document

Duplicate a document.

Duplicate a document (copies fields and media; name suffixed with " (Copy)").

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "name": "Apartment Lease Agreement (Copy)",
        "value": "18000.00",
        "active": true,
        "photos": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
        ],
        "currency": "USD",
        "end_date": "2025-12-31",
        "reminder": {
            "time": "2025-12-01 09:00:00",
            "is_periodic": false,
            "periodic_method": null
        },
        "documents": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
        ],
        "created_at": "2026-10-19",
        "start_date": "2025-01-01",
        "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
        "asset_folder_id": 1
    },
    "message": "Document duplicated successfully.",
    "success": true
}
POST /api/v1/mobile/asset-docs/1/archive

Archive Document

Archive a document.

Archive a document (active=false). Distinct from soft-delete: the row stays queryable.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Apartment Lease Agreement",
        "value": "18000.00",
        "active": false,
        "photos": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
        ],
        "currency": "USD",
        "end_date": "2025-12-31",
        "reminder": {
            "time": "2025-12-01 09:00:00",
            "is_periodic": false,
            "periodic_method": null
        },
        "documents": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
        ],
        "created_at": "2026-10-19",
        "start_date": "2025-01-01",
        "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
        "asset_folder_id": 1
    },
    "message": "Document archived successfully.",
    "success": true
}
POST /api/v1/mobile/asset-docs/1/unarchive

Unarchive Document

Unarchive a document.

Unarchive a document (active=true).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Apartment Lease Agreement",
        "value": "18000.00",
        "active": true,
        "photos": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
        ],
        "currency": "USD",
        "end_date": "2025-12-31",
        "reminder": {
            "time": "2025-12-01 09:00:00",
            "is_periodic": false,
            "periodic_method": null
        },
        "documents": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
        ],
        "created_at": "2026-10-19",
        "start_date": "2025-01-01",
        "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
        "asset_folder_id": 1
    },
    "message": "Document unarchived successfully.",
    "success": true
}
GET /api/v1/mobile/asset-folders/1

Get AssetFolder Details

Retrieve AssetFolder details.

Retrieves detailed information about a specific AssetFolder using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Personal & Legal Documents",
        "active": true,
        "documents": [
            {
                "id": 1,
                "name": "Apartment Lease Agreement",
                "value": "18000.00",
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
                ],
                "currency": "USD",
                "end_date": "2025-12-31",
                "reminder": {
                    "time": "2025-12-01 09:00:00",
                    "is_periodic": false,
                    "periodic_method": null
                },
                "documents": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
                ],
                "created_at": "2026-10-19",
                "start_date": "2025-01-01",
                "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
                "asset_folder_id": 1
            },
            {
                "id": 2,
                "name": "Comprehensive Car Insurance",
                "value": "1250.50",
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/car-insurance-card.jpg"
                ],
                "currency": "USD",
                "end_date": "2026-03-14",
                "reminder": {
                    "time": "2026-03-14 08:30:00",
                    "is_periodic": true,
                    "periodic_method": "monthly"
                },
                "documents": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/car-insurance-policy.pdf"
                ],
                "created_at": "2026-10-19",
                "start_date": "2025-03-15",
                "description": "Full-coverage auto insurance for vehicle plate XYZ-1234, including roadside assistance and windscreen cover.",
                "asset_folder_id": 1
            },
            {
                "id": 3,
                "name": "Passport",
                "value": null,
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2021\/passport-photo-page.jpg"
                ],
                "currency": null,
                "end_date": "2031-05-31",
                "reminder": {
                    "time": "2031-03-02 09:00:00",
                    "is_periodic": true,
                    "periodic_method": "yearly"
                },
                "documents": [],
                "created_at": "2026-10-19",
                "start_date": "2021-06-01",
                "description": "Primary international travel document. Renewal reminder repeats every year, starting three months before expiry.",
                "asset_folder_id": 1
            },
            {
                "id": 4,
                "name": "Health Insurance Policy",
                "value": "3600.00",
                "active": true,
                "photos": [],
                "currency": "USD",
                "end_date": "2026-01-31",
                "reminder": {
                    "time": "2026-01-10 09:00:00",
                    "is_periodic": true,
                    "periodic_method": "monthly"
                },
                "documents": [],
                "created_at": "2026-10-19",
                "start_date": "2025-02-01",
                "description": "Family health insurance plan covering 4 members, including dental and optical coverage.",
                "asset_folder_id": 1
            },
            {
                "id": 5,
                "name": "Apartment Lease Agreement (Copy)",
                "value": "18000.00",
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
                ],
                "currency": "USD",
                "end_date": "2025-12-31",
                "reminder": {
                    "time": "2025-12-01 09:00:00",
                    "is_periodic": false,
                    "periodic_method": null
                },
                "documents": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
                ],
                "created_at": "2026-10-19",
                "start_date": "2025-01-01",
                "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
                "asset_folder_id": 1
            }
        ],
        "created_at": "2026-10-19",
        "cover_photo": "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-folders\/covers\/personal-legal-documents.jpg",
        "total_price": 40850.5,
        "documents_count": 5
    },
    "message": "Folder retrieved successfully.",
    "success": true
}
PUT /api/v1/mobile/asset-folders/1

Update AssetFolder

Update an existing AssetFolder.

Updates the specified AssetFolder with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Personal Legal and Financial Documents

Request Validations Or Notes

Field/Name Examples
name optional, string, min 3, max 100, EnglishLetters
cover_photo optional, image, max 5120 KB (upload)
delete_cover_photo optional, true/false
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Personal Legal and Financial Documents",
        "active": true,
        "documents": [
            {
                "id": 1,
                "name": "Apartment Lease Agreement",
                "value": "18000.00",
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
                ],
                "currency": "USD",
                "end_date": "2025-12-31",
                "reminder": {
                    "time": "2025-12-01 09:00:00",
                    "is_periodic": false,
                    "periodic_method": null
                },
                "documents": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
                ],
                "created_at": "2026-10-19",
                "start_date": "2025-01-01",
                "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
                "asset_folder_id": 1
            },
            {
                "id": 2,
                "name": "Comprehensive Car Insurance",
                "value": "1250.50",
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/car-insurance-card.jpg"
                ],
                "currency": "USD",
                "end_date": "2026-03-14",
                "reminder": {
                    "time": "2026-03-14 08:30:00",
                    "is_periodic": true,
                    "periodic_method": "monthly"
                },
                "documents": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/car-insurance-policy.pdf"
                ],
                "created_at": "2026-10-19",
                "start_date": "2025-03-15",
                "description": "Full-coverage auto insurance for vehicle plate XYZ-1234, including roadside assistance and windscreen cover.",
                "asset_folder_id": 1
            },
            {
                "id": 3,
                "name": "Passport",
                "value": null,
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2021\/passport-photo-page.jpg"
                ],
                "currency": null,
                "end_date": "2031-05-31",
                "reminder": {
                    "time": "2031-03-02 09:00:00",
                    "is_periodic": true,
                    "periodic_method": "yearly"
                },
                "documents": [],
                "created_at": "2026-10-19",
                "start_date": "2021-06-01",
                "description": "Primary international travel document. Renewal reminder repeats every year, starting three months before expiry.",
                "asset_folder_id": 1
            },
            {
                "id": 4,
                "name": "Health Insurance Policy",
                "value": "3600.00",
                "active": true,
                "photos": [],
                "currency": "USD",
                "end_date": "2026-01-31",
                "reminder": {
                    "time": "2026-01-10 09:00:00",
                    "is_periodic": true,
                    "periodic_method": "monthly"
                },
                "documents": [],
                "created_at": "2026-10-19",
                "start_date": "2025-02-01",
                "description": "Family health insurance plan covering 4 members, including dental and optical coverage.",
                "asset_folder_id": 1
            },
            {
                "id": 5,
                "name": "Apartment Lease Agreement (Copy)",
                "value": "18000.00",
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
                ],
                "currency": "USD",
                "end_date": "2025-12-31",
                "reminder": {
                    "time": "2025-12-01 09:00:00",
                    "is_periodic": false,
                    "periodic_method": null
                },
                "documents": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
                ],
                "created_at": "2026-10-19",
                "start_date": "2025-01-01",
                "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
                "asset_folder_id": 1
            }
        ],
        "created_at": "2026-10-19",
        "cover_photo": "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-folders\/covers\/personal-legal-documents.jpg",
        "total_price": 40850.5,
        "documents_count": 5
    },
    "message": "Folder updated successfully.",
    "success": true
}
DELETE /api/v1/mobile/asset-folders/1

Delete AssetFolder

Delete a AssetFolder.

Deletes the specified AssetFolder from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Folder deleted successfully.",
    "success": true
}
GET /api/v1/mobile/asset-docs/6

Get AssetDoc Details

Retrieve AssetDoc details.

Retrieves detailed information about a specific AssetDoc using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 6,
        "name": "Apartment Lease Agreement",
        "value": "18000.00",
        "active": true,
        "photos": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
        ],
        "currency": "USD",
        "end_date": "2025-12-31",
        "reminder": {
            "time": "2025-12-01 09:00:00",
            "is_periodic": false,
            "periodic_method": null
        },
        "documents": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
        ],
        "created_at": "2026-10-19",
        "start_date": "2025-01-01",
        "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
        "asset_folder_id": 3
    },
    "message": "Document retrieved successfully.",
    "success": true
}
PUT /api/v1/mobile/asset-docs/6

Update AssetDoc

Update an existing AssetDoc.

Updates the specified AssetDoc with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Contract V2
deleted_photos array []
document_files array []
deleted_documents array []

Request Validations Or Notes

Field/Name Examples
asset_folder_id optional, Exists
name optional, string, min 3, max 100, EnglishLetters
description optional, string
start_date optional, date (YYYY-MM-DD)
end_date optional, date (YYYY-MM-DD), on or after start_date
reminder optional, array
reminder.time required, required_with, date (YYYY-MM-DD)
reminder.is_periodic required, required_with, true/false
reminder.periodic_method optional, string, allowed: daily, weekly, monthly, yearly, required if reminder.is_periodic = true
value optional, number, min 0.01, max 999999999999
currency optional, string, max 10
photos_files optional, array, max 6
photos_files[] required, image, file types: jpg,jpeg,png,webp,heic, max 10240 KB (upload)
document_files optional, array
document_files[] required, file, file types: pdf,xls,xlsx,csv,doc,docx,txt,ppt,pptx, max 5120 KB (upload)
deleted_photos optional, array
deleted_photos[] optional, string
deleted_documents optional, array
deleted_documents[] optional, string
Success (200 OK)
{
    "data": {
        "id": 6,
        "name": "Contract V2",
        "value": "18000.00",
        "active": true,
        "photos": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
        ],
        "currency": "USD",
        "end_date": "2025-12-31",
        "reminder": {
            "time": "2025-12-01 09:00:00",
            "is_periodic": false,
            "periodic_method": null
        },
        "documents": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
        ],
        "created_at": "2026-10-19",
        "start_date": "2025-01-01",
        "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
        "asset_folder_id": 3
    },
    "message": "Document updated successfully.",
    "success": true
}
DELETE /api/v1/mobile/asset-docs/6

Delete AssetDoc

Delete a AssetDoc.

Deletes the specified AssetDoc from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Document deleted successfully.",
    "success": true
}
POST /api/v1/mobile/asset-folders/3/restore

Restore AssetFolder

Restore deleted AssetFolder.

Restore a previously deleted AssetFolder record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Personal & Legal Documents",
        "active": true,
        "documents": [
            {
                "id": 7,
                "name": "Comprehensive Car Insurance",
                "value": "1250.50",
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/car-insurance-card.jpg"
                ],
                "currency": "USD",
                "end_date": "2026-03-14",
                "reminder": {
                    "time": "2026-03-14 08:30:00",
                    "is_periodic": true,
                    "periodic_method": "monthly"
                },
                "documents": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/car-insurance-policy.pdf"
                ],
                "created_at": "2026-10-19",
                "start_date": "2025-03-15",
                "description": "Full-coverage auto insurance for vehicle plate XYZ-1234, including roadside assistance and windscreen cover.",
                "asset_folder_id": 3
            },
            {
                "id": 8,
                "name": "Passport",
                "value": null,
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2021\/passport-photo-page.jpg"
                ],
                "currency": null,
                "end_date": "2031-05-31",
                "reminder": {
                    "time": "2031-03-02 09:00:00",
                    "is_periodic": true,
                    "periodic_method": "yearly"
                },
                "documents": [],
                "created_at": "2026-10-19",
                "start_date": "2021-06-01",
                "description": "Primary international travel document. Renewal reminder repeats every year, starting three months before expiry.",
                "asset_folder_id": 3
            },
            {
                "id": 9,
                "name": "Apartment Lease Agreement",
                "value": "18000.00",
                "active": true,
                "photos": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
                ],
                "currency": "USD",
                "end_date": "2025-12-31",
                "reminder": {
                    "time": "2025-12-01 09:00:00",
                    "is_periodic": false,
                    "periodic_method": null
                },
                "documents": [
                    "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
                ],
                "created_at": "2026-10-19",
                "start_date": "2025-01-01",
                "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
                "asset_folder_id": 3
            }
        ],
        "created_at": "2026-10-19",
        "cover_photo": "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-folders\/covers\/personal-legal-documents.jpg",
        "total_price": 19250.5,
        "documents_count": 3
    },
    "message": "Folder restored successfully.",
    "success": true
}
DELETE /api/v1/mobile/asset-folders/3/force

Permanently Delete AssetFolder

Force delete AssetFolder.

Permanently remove the AssetFolder record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Folder permanently deleted.",
    "success": true
}
POST /api/v1/mobile/asset-docs/delete-many

Bulk Delete AssetDoc

Bulk delete AssetDoc.

Delete multiple AssetDoc records from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
documents array [10]
Success (200 OK)
{
    "data": [],
    "message": "Documents deleted successfully.",
    "success": true
}
POST /api/v1/mobile/asset-docs/move-to-main-directory

Move AssetDoc to Main Directory

Move AssetDoc to main directory.

Move the specified AssetDoc records to the main directory.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
documents array [10]
Success (200 OK)
{
    "data": [],
    "message": "Documents moved to main directory successfully.",
    "success": true
}
POST /api/v1/mobile/asset-docs/10/restore

Restore AssetDoc

Restore deleted AssetDoc.

Restore a previously deleted AssetDoc record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 10,
        "name": "Apartment Lease Agreement",
        "value": "18000.00",
        "active": true,
        "photos": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-front.jpg",
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-signature-page.jpg"
        ],
        "currency": "USD",
        "end_date": "2025-12-31",
        "reminder": {
            "time": "2025-12-01 09:00:00",
            "is_periodic": false,
            "periodic_method": null
        },
        "documents": [
            "http:\/\/qeei_backend_admin.test\/storage\/media\/asset-docs\/2025\/apartment-lease-agreement.pdf"
        ],
        "created_at": "2026-10-19",
        "start_date": "2025-01-01",
        "description": "12-month residential lease for Unit 4B, Green Valley Residences. Auto-renews annually unless cancelled 60 days before expiry.",
        "asset_folder_id": 4
    },
    "message": "Document restored successfully.",
    "success": true
}
DELETE /api/v1/mobile/asset-docs/10/force

Permanently Delete AssetDoc

Force delete AssetDoc.

Permanently remove the AssetDoc record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Document permanently deleted.",
    "success": true
}

FAQs

GET /api/v1/mobile/faqs

Get All FAQs (Mobile)

List FAQs (mobile).

Mobile app: retrieve the list of active FAQs.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "answer": "",
            "question": "",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "",
                    "en": ""
                },
                "question": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19"
        },
        {
            "id": 3,
            "answer": "Test answer",
            "question": "Test question 21635182",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "إجابة تجريبية",
                    "en": "Test answer"
                },
                "question": {
                    "ar": "سؤال تجريبي 21635182",
                    "en": "Test question 21635182"
                }
            },
            "created_at": "2026-10-19"
        }
    ],
    "message": "faq::faq.retrieved",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "total_faqs": 2,
    "active_faqs": 2,
    "inactive_faqs": 0
}
GET /api/v1/mobile/faqs/1

Get FAQ (Mobile)

Show FAQ (mobile).

Mobile app: retrieve a single FAQ by id.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "answer": "",
        "question": "",
        "is_active": true,
        "translate": {
            "answer": {
                "ar": "",
                "en": ""
            },
            "question": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "faq::faq.retrieved",
    "success": true
}

Categories

GET /api/v1/mobile/categories

Get All Categories (Mobile)

List categories (mobile).

Mobile app: retrieve the list of categories.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "icon": "test-icon.png",
            "name": "",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": ""
        },
        {
            "id": 3,
            "icon": "icon-14890347.png",
            "name": "Test Category 14890347",
            "status": true,
            "valuers": 10,
            "translate": {
                "name": {
                    "ar": "تصنيف تجريبي 14890347",
                    "en": "Test Category 14890347"
                },
                "description": {
                    "ar": "وصف تجريبي",
                    "en": "Test description"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Test description"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/categories/1

Get Category (Mobile)

Show category (mobile).

Mobile app: retrieve a single category by id.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "icon": "test-icon.png",
        "name": "",
        "status": true,
        "valuers": 1,
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19",
        "service_no": 1,
        "description": ""
    },
    "message": "Data retrieved successfully.",
    "success": true
}

Tags

GET /api/v1/mobile/tags

Get All Tags (Mobile)

List tags (mobile).

Mobile app: retrieve the list of tags.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "color": "#FF0000",
            "status": true,
            "category": {
                "id": 1,
                "icon": "test-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "tag_name": "",
            "translate": {
                "tag_name": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19"
        },
        {
            "id": 3,
            "color": "#FF0000",
            "status": true,
            "category": {
                "id": 1,
                "icon": "test-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "tag_name": "Test Tag 96182373",
            "translate": {
                "tag_name": {
                    "ar": "وسم تجريبي 96182373",
                    "en": "Test Tag 96182373"
                }
            },
            "created_at": "2026-10-19"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/tags/1

Get Tag (Mobile)

Show tag (mobile).

Mobile app: retrieve a single tag by id.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "color": "#FF0000",
        "status": true,
        "category": {
            "id": 1,
            "icon": "test-icon.png",
            "name": "Main Category",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "التصنيف الرئيسي",
                    "en": "Main Category"
                },
                "description": {
                    "ar": "التصنيف الرئيسي للوسوم",
                    "en": "Main category for tags"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Main category for tags"
        },
        "tag_name": "",
        "translate": {
            "tag_name": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data retrieved successfully.",
    "success": true
}

Static Pages

GET /api/v1/mobile/pages/about_us

Get Pages By Type (Mobile)

List pages by type (mobile).

Mobile app: retrieve static pages of a given type.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "",
        "type": "about_us",
        "content": "",
        "is_active": true,
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "content": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/pages/about_us/1

Get Page (Mobile)

Show page (mobile).

Mobile app: retrieve a single static page by type and id.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "",
        "type": "about_us",
        "content": "",
        "is_active": true,
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "content": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data retrieved successfully.",
    "success": true
}

Business Cards

GET /api/v1/mobile/business-card-groups

Get Business-card-group List

Retrieve a list of Business-card-group.

Retrieves a list of Business-card-group records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
search string Work
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Work Contacts",
            "active": true,
            "contacts": [],
            "created_at": "2026-10-19",
            "contacts_count": 1
        }
    ],
    "message": "Groups retrieved successfully.",
    "success": true
}
POST /api/v1/mobile/business-card-groups

Create Business-card-group

Create a new Business-card-group.

Creates a new Business-card-group in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Family
active boolean 1

Request Validations Or Notes

Field/Name Examples
name required, string, max 255
active optional, true/false
contact_ids optional, array
contact_ids[] required, exists business_card_contacts,id
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Family",
        "active": true,
        "contacts": [],
        "created_at": "2026-10-19",
        "contacts_count": 0
    },
    "message": "Group created successfully.",
    "success": true
}
GET /api/v1/mobile/business-card-contacts

Get Business-card-contact List

Retrieve a list of Business-card-contact.

Retrieves a list of Business-card-contact records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
search string Jane
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Jane Smith",
            "email": "jane.smith@techcorp.com",
            "notes": null,
            "phone": "+966501234567",
            "active": true,
            "company": "Tech Corp",
            "website": "https:\/\/techcorp.com",
            "group_ids": [
                1
            ],
            "job_title": "Software Engineer",
            "back_image": null,
            "created_at": "2026-10-19",
            "front_image": null
        }
    ],
    "message": "Contacts retrieved successfully.",
    "success": true,
    "summary": {
        "groups": [
            {
                "id": 1,
                "name": "Work Contacts"
            },
            {
                "id": 2,
                "name": "Family"
            }
        ]
    },
    "pagination": {
        "total": 1,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/mobile/business-card-contacts

Create Business-card-contact

Create a new Business-card-contact.

Creates a new Business-card-contact in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Ali Hassan
email string ali.hassan@devstudio.com
notes string Met at a conference
phone string +966512345678
active boolean 1
company string Dev Studio
website string https://devstudio.com
group_ids array [2]
job_title string Backend Developer

Request Validations Or Notes

Field/Name Examples
group_ids optional, array
group_ids[] required, exists business_card_groups,id
group_id optional, exists business_card_groups,id
name required, string, max 255
job_title required, string, max 255
company required, string, max 255
phone required, string, max 20
email required, valid email, max 255
website optional, valid URL, max 255
front_image optional, image, max 5120 KB (upload)
back_image optional, image, max 5120 KB (upload)
notes optional, string
active optional, true/false
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Ali Hassan",
        "email": "ali.hassan@devstudio.com",
        "notes": "Met at a conference",
        "phone": "+966512345678",
        "active": true,
        "company": "Dev Studio",
        "website": "https:\/\/devstudio.com",
        "group_ids": [
            2
        ],
        "job_title": "Backend Developer",
        "back_image": null,
        "created_at": "2026-10-19",
        "front_image": null
    },
    "message": "Contact created successfully.",
    "success": true
}
GET /api/v1/mobile/my-business-cards

Get My-business-card List

Retrieve a list of My-business-card.

Retrieves a list of My-business-card records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
name string John
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "John Doe",
            "color": "#1A73E8",
            "email": "john.doe@qeei.com",
            "phone": "+966509876543",
            "photo": null,
            "active": true,
            "company": "QEEI",
            "website": "https:\/\/qeei.com",
            "job_title": "Product Manager",
            "created_at": "2026-10-19",
            "field_name": [
                "Extension",
                "Fax"
            ],
            "qr_code_value": "qr_code_value"
        }
    ],
    "message": "Business cards retrieved successfully.",
    "success": true
}
POST /api/v1/mobile/my-business-cards

Create My-business-card

Create a new My-business-card.

Creates a new My-business-card in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string My New Card
color string #E53935
email string cto@qeei.com
phone string +966509990000
active boolean 1
company string QEEI
website string https://qeei.com
job_title string CTO
field_name array ["Extension","Fax","WhatsApp"]
qr_code_value string sample_qr_value
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "My New Card",
        "color": "#E53935",
        "email": "cto@qeei.com",
        "phone": "+966509990000",
        "photo": null,
        "active": true,
        "company": "QEEI",
        "website": "https:\/\/qeei.com",
        "job_title": "CTO",
        "created_at": "2026-10-19",
        "field_name": [
            "Extension",
            "Fax",
            "WhatsApp"
        ],
        "qr_code_value": "sample_qr_value"
    },
    "message": "Business card created successfully.",
    "success": true
}
GET /api/v1/mobile/business-card-groups/2

Get Business-card-group Details

Retrieve Business-card-group details.

Retrieves detailed information about a specific Business-card-group using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Family",
        "active": true,
        "contacts": [
            {
                "id": 2,
                "name": "Ali Hassan",
                "email": "ali.hassan@devstudio.com",
                "notes": "Met at a conference",
                "phone": "+966512345678",
                "active": true,
                "company": "Dev Studio",
                "website": "https:\/\/devstudio.com",
                "group_ids": [
                    2
                ],
                "job_title": "Backend Developer",
                "back_image": null,
                "created_at": "2026-10-19",
                "front_image": null
            }
        ],
        "created_at": "2026-10-19",
        "contacts_count": 1
    },
    "message": "Group retrieved successfully.",
    "success": true
}
POST /api/v1/mobile/business-card-groups/2

Update Business-card-group

Update an existing Business-card-group.

Updates the specified Business-card-group with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Updated Group Name

Request Validations Or Notes

Field/Name Examples
name required, string, max 255
active optional, true/false
contact_ids optional, array
contact_ids[] required, exists business_card_contacts,id
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Updated Group Name",
        "active": true,
        "contacts": [],
        "created_at": "2026-10-19",
        "contacts_count": 1
    },
    "message": "Group updated successfully.",
    "success": true
}
DELETE /api/v1/mobile/business-card-groups/2

Delete Business-card-group

Delete a Business-card-group.

Deletes the specified Business-card-group from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Group deleted successfully.",
    "success": true
}
GET /api/v1/mobile/business-card-contacts/2

Get Business-card-contact Details

Retrieve Business-card-contact details.

Retrieves detailed information about a specific Business-card-contact using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Ali Hassan",
        "email": "ali.hassan@devstudio.com",
        "notes": "Met at a conference",
        "phone": "+966512345678",
        "active": true,
        "company": "Dev Studio",
        "website": "https:\/\/devstudio.com",
        "group_ids": [],
        "job_title": "Backend Developer",
        "back_image": null,
        "created_at": "2026-10-19",
        "front_image": null
    },
    "message": "Contact retrieved successfully.",
    "success": true,
    "summary": {
        "groups": [
            {
                "id": 1,
                "name": "Work Contacts"
            }
        ]
    }
}
PUT /api/v1/mobile/business-card-contacts/2

Update Business-card-contact

Update an existing Business-card-contact.

Updates the specified Business-card-contact with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Ali Updated
email string ali.hassan@devstudio.com
phone string +966512345678
company string Dev Studio
job_title string Senior Dev

Request Validations Or Notes

Field/Name Examples
group_ids optional, array
group_ids[] required, exists business_card_groups,id
group_id optional, exists business_card_groups,id
name required, string, max 255
job_title required, string, max 255
company required, string, max 255
phone required, string, max 20
email required, valid email, max 255
website optional, valid URL, max 255
front_image optional, image, max 5120 KB (upload)
back_image optional, image, max 5120 KB (upload)
notes optional, string
active optional, true/false
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Ali Updated",
        "email": "ali.hassan@devstudio.com",
        "notes": "Met at a conference",
        "phone": "+966512345678",
        "active": true,
        "company": "Dev Studio",
        "website": "https:\/\/devstudio.com",
        "group_ids": [],
        "job_title": "Senior Dev",
        "back_image": null,
        "created_at": "2026-10-19",
        "front_image": null
    },
    "message": "Contact updated successfully.",
    "success": true
}
POST /api/v1/mobile/business-card-contacts/2/add-to-group

Add Contact to Group

Add contact to a group without removing it from its other groups.

Assign a contact to a specific group.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
group_id integer 1
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Ali Updated",
        "email": "ali.hassan@devstudio.com",
        "notes": "Met at a conference",
        "phone": "+966512345678",
        "active": true,
        "company": "Dev Studio",
        "website": "https:\/\/devstudio.com",
        "group_ids": [
            1
        ],
        "job_title": "Senior Dev",
        "back_image": null,
        "created_at": "2026-10-19",
        "front_image": null
    },
    "message": "Contact added to group successfully.",
    "success": true
}
POST /api/v1/mobile/business-card-contacts/2/remove-from-group

Remove Contact from Group

Remove contact from its groups, keeping the contact itself.

Remove a contact from its groups without deleting the contact.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Ali Updated",
        "email": "ali.hassan@devstudio.com",
        "notes": "Met at a conference",
        "phone": "+966512345678",
        "active": true,
        "company": "Dev Studio",
        "website": "https:\/\/devstudio.com",
        "group_ids": [],
        "job_title": "Senior Dev",
        "back_image": null,
        "created_at": "2026-10-19",
        "front_image": null
    },
    "message": "Contact removed from group successfully.",
    "success": true
}
DELETE /api/v1/mobile/business-card-contacts/2

Delete Business-card-contact

Delete a Business-card-contact.

Deletes the specified Business-card-contact from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Contact deleted successfully.",
    "success": true
}
GET /api/v1/mobile/my-business-cards/2

Get My-business-card Details

Retrieve My-business-card details.

Retrieves detailed information about a specific My-business-card using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "My New Card",
        "color": "#E53935",
        "email": "cto@qeei.com",
        "phone": "+966509990000",
        "photo": null,
        "active": true,
        "company": "QEEI",
        "website": "https:\/\/qeei.com",
        "job_title": "CTO",
        "created_at": "2026-10-19",
        "field_name": [
            "Extension",
            "Fax",
            "WhatsApp"
        ],
        "qr_code_value": "sample_qr_value"
    },
    "message": "Business card retrieved successfully.",
    "success": true
}
PUT /api/v1/mobile/my-business-cards/2

Update My-business-card

Update an existing My-business-card.

Updates the specified My-business-card with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Updated Card Name
color string #43A047
email string cto@qeei.com
phone string +966509990000
company string QEEI
job_title string CTO
field_name array ["Extension","Mobile"]
qr_code_value string sample_qr_value
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Updated Card Name",
        "color": "#43A047",
        "email": "cto@qeei.com",
        "phone": "+966509990000",
        "photo": null,
        "active": true,
        "company": "QEEI",
        "website": "https:\/\/qeei.com",
        "job_title": "CTO",
        "created_at": "2026-10-19",
        "field_name": [
            "Extension",
            "Mobile"
        ],
        "qr_code_value": "sample_qr_value"
    },
    "message": "Business card updated successfully.",
    "success": true
}
DELETE /api/v1/mobile/my-business-cards/2

Delete My-business-card

Delete a My-business-card.

Deletes the specified My-business-card from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Business card deleted successfully.",
    "success": true
}
POST /api/v1/mobile/business-card-groups/1/restore

Restore Business-card-group

Restore deleted Business-card-group.

Restore a previously deleted Business-card-group record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Work Contacts",
        "active": true,
        "contacts": [],
        "created_at": "2026-10-19",
        "contacts_count": 1
    },
    "message": "Group restored successfully.",
    "success": true
}
DELETE /api/v1/mobile/business-card-groups/1/force

Permanently Delete Business-card-group

Force delete Business-card-group.

Permanently remove the Business-card-group record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Group permanently deleted.",
    "success": true
}
POST /api/v1/mobile/business-card-contacts/1/restore

Restore Business-card-contact

Restore deleted Business-card-contact.

Restore a previously deleted Business-card-contact record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Jane Smith",
        "email": "jane.smith@techcorp.com",
        "notes": null,
        "phone": "+966501234567",
        "active": true,
        "company": "Tech Corp",
        "website": "https:\/\/techcorp.com",
        "group_ids": [],
        "job_title": "Software Engineer",
        "back_image": null,
        "created_at": "2026-10-19",
        "front_image": null
    },
    "message": "Contact restored successfully.",
    "success": true
}
DELETE /api/v1/mobile/business-card-contacts/1/force

Permanently Delete Business-card-contact

Force delete Business-card-contact.

Permanently remove the Business-card-contact record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Contact permanently deleted.",
    "success": true
}
POST /api/v1/mobile/my-business-cards/1/restore

Restore My-business-card

Restore deleted My-business-card.

Restore a previously deleted My-business-card record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "John Doe",
        "color": "#1A73E8",
        "email": "john.doe@qeei.com",
        "phone": "+966509876543",
        "photo": null,
        "active": true,
        "company": "QEEI",
        "website": "https:\/\/qeei.com",
        "job_title": "Product Manager",
        "created_at": "2026-10-19",
        "field_name": [
            "Extension",
            "Fax"
        ],
        "qr_code_value": "qr_code_value"
    },
    "message": "Business card restored successfully.",
    "success": true
}
DELETE /api/v1/mobile/my-business-cards/1/force

Permanently Delete My-business-card

Force delete My-business-card.

Permanently remove the My-business-card record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Business card permanently deleted.",
    "success": true
}

Money Circles

GET /api/v1/mobile/money-circles/statuses

Get Circle Statuses

List circle statuses

Retrieve all available circle statuses with translated labels.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "key": "active",
            "value": "Active"
        },
        {
            "key": "completed",
            "value": "Completed"
        },
        {
            "key": "frozen",
            "value": "Frozen"
        },
        {
            "key": "published",
            "value": "Published"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/types

Get Circle Types

List circle types

Retrieve all available circle types with translated labels.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "key": "public",
            "value": "Public"
        },
        {
            "key": "private",
            "value": "Private"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/request-types

Get Request Types

List request types

Retrieve all available circle request types with translated labels.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "key": "join",
            "value": "Join"
        },
        {
            "key": "swap",
            "value": "Swap"
        },
        {
            "key": "extra_turn",
            "value": "Extra Turn"
        },
        {
            "key": "create_group",
            "value": "Create Group"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/request-statuses

Get Request Statuses

List request statuses

Retrieve all available circle request statuses with translated labels.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "key": "pending",
            "value": "Pending"
        },
        {
            "key": "approved",
            "value": "Approved"
        },
        {
            "key": "declined",
            "value": "Declined"
        },
        {
            "key": "cancelled",
            "value": "Cancelled"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/invitation-statuses

Get Invitation Statuses

List invitation statuses

Retrieve all available invitation statuses with translated labels.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "key": "pending",
            "value": "Pending"
        },
        {
            "key": "accepted",
            "value": "Accepted"
        },
        {
            "key": "declined",
            "value": "Declined"
        },
        {
            "key": "expired",
            "value": "Expired"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles

Create Circle

Create a circle

Create a new money circle. payment_duration and receive_duration accept an array of day-of-month integers (e.g. [15, 20]). The creator becomes a member and empty seats are generated; the response includes thisMonthReceiver (the current cycle receiver, or null if none is assigned yet).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Monthly Savings
privacy string public
currency string SAR
end_date string 2027-04-21
start_date string 2026-10-21
allow_swaps boolean 1
names_hidden boolean
total_amount integer 12000
payout_method string central_pot
collector_type string creator
monthly_amount integer 1000
duration_months integer 6
late_fee_per_day integer 0
payment_duration array [15,20]
receive_duration array [10,25]
commission_percent integer 0

Request Validations Or Notes

Field/Name Examples
name required, string, max 100
circle_code optional, string, max 20, unique circles,circle_code
creator_id optional, integer, exists users,id, Closure
total_amount required, number, min 0
monthly_amount optional, number, min 0
currency optional, string, max 3
duration_months required, integer, min 1
start_date required, date (YYYY-MM-DD), on or after today
end_date required, date (YYYY-MM-DD)
privacy optional, allowed: public, private
names_hidden optional, true/false
payout_method optional, allowed: p2p_direct, central_pot
collector_type required if payout_method = central_pot, optional, allowed: creator, assigned_later
allow_swaps optional, true/false
late_fee_per_day optional, number, min 0
commission_percent optional, number, min 0
notes optional, string
payment_duration optional, array
payment_duration[] required, integer, min 0
receive_duration optional, array
receive_duration[] required, integer, min 0
Success (200 OK)
{
    "data": {
        "id": 7,
        "name": "Monthly Savings",
        "notes": null,
        "myRole": "manager",
        "status": "published",
        "privacy": "public",
        "currency": "SAR",
        "end_date": "2027-04-21T00:00:00.000000Z",
        "collected": 0,
        "createdBy": {
            "id": 5,
            "name": "Circle Owner"
        },
        "managedBy": {
            "name": "Circle Owner",
            "user_id": 5,
            "member_id": 11,
            "is_manager": true
        },
        "remaining": 12000,
        "creator_id": 5,
        "start_date": "2026-10-21T00:00:00.000000Z",
        "allow_swaps": true,
        "circle_code": "n0EQcvenQM",
        "taken_turns": 1,
        "total_turns": 6,
        "contributors": 1,
        "names_hidden": false,
        "total_amount": "12000.00",
        "current_cycle": null,
        "payout_method": "central_pot",
        "collector_type": "creator",
        "monthly_amount": "2000.00",
        "duration_months": 6,
        "late_fee_per_day": "0.00",
        "payment_duration": [
            15,
            20
        ],
        "receive_duration": [
            10,
            25
        ],
        "thisMonthReceiver": null,
        "commission_percent": "0.00",
        "collector_member_id": null
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles

Get Circle List

List circles

Retrieve the circles the authenticated user belongs to.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Documentation Circle",
            "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-18T00:00:00.000000Z",
            "collected": "2000.00",
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 1,
                "is_manager": true
            },
            "remaining": 10000,
            "creator_id": 5,
            "start_date": "2026-10-18T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DOC9SVTY",
            "taken_turns": 4,
            "total_turns": 7,
            "contributors": 4,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                1,
                10,
                20
            ],
            "receive_duration": [
                25
            ],
            "thisMonthReceiver": {
                "name": "Circle Owner",
                "member_id": 1,
                "profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            "commission_percent": "0.00",
            "collector_member_id": 1
        },
        {
            "id": 2,
            "name": "Disposable Circle hn9g",
            "notes": null,
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 5,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DSPXOHDC",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 3,
            "name": "Invite Circle",
            "notes": null,
            "myRole": "member",
            "status": "active",
            "privacy": "private",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "INVVWANR",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 4,
            "name": "Start Circle Demo",
            "notes": null,
            "myRole": "manager",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 7,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "SRTHAJHV",
            "taken_turns": 1,
            "total_turns": 1,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 5,
            "name": "Kick Member Circle Demo",
            "notes": null,
            "myRole": "manager",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 8,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "KCK4OANO",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 2,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 6,
            "name": "Published Documentation Circle",
            "notes": null,
            "myRole": "admin",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 10,
                "is_manager": true
            },
            "remaining": 12000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "PUBOKOSB",
            "taken_turns": 0,
            "total_turns": 6,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 7,
            "name": "Monthly Savings",
            "notes": null,
            "myRole": "manager",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-21T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 11,
                "is_manager": true
            },
            "remaining": 12000,
            "creator_id": 5,
            "start_date": "2026-10-21T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "n0EQcvenQM",
            "taken_turns": 1,
            "total_turns": 6,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "2000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                15,
                20
            ],
            "receive_duration": [
                10,
                25
            ],
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 7,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/mobile/money-circles/join

Join Circle

Join via code

Join a circle using its unique circle code.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
circle_code string DOC9SVTY

Request Validations Or Notes

Field/Name Examples
circle_code required, string, exists circles,circle_code
Success (200 OK)
{
    "data": {
        "id": 13,
        "type": "join",
        "user": {
            "id": 8,
            "name": "Circle Joiner",
            "email": "circle.joiner@demo.com",
            "avatar": null
        },
        "status": "pending",
        "user_id": 8,
        "circle_id": 1,
        "created_at": "2026-10-19T07:15:04.000000Z"
    },
    "message": "Join request sent successfully. Please wait for admin approval.",
    "success": true
}
GET /api/v1/mobile/money-circles/invitations

Get Invitations

List invitations

List the authenticated user's pending invitations. Each invitation includes the circle details (id, name, circle_code, contributors, total_amount, circle_duration, monthly_payment, start_date), the invited user, and the inviter with their role in the circle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "note": null,
            "user": {
                "id": 6,
                "name": "Circle Invitee",
                "email": "circle.invitee@demo.com",
                "avatar": null,
                "avatar_url": null
            },
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "currency": "SAR",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "circle_code": "DOC9SVTY",
                "contributors": 4,
                "total_amount": "12000.00",
                "circle_duration": 6,
                "monthly_payment": "1000.00"
            },
            "status": "pending",
            "inviter": {
                "id": 5,
                "name": "Circle Owner",
                "role": "creator",
                "email": "circle.owner@demo.com",
                "avatar": "media\/avatars\/circle-owner.jpg",
                "avatar_url": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            "circle_id": 1,
            "is_active": true,
            "expires_at": null,
            "invited_at": "2026-10-19T07:14:22.000000Z",
            "responded_at": null,
            "invited_by_id": 5,
            "invited_user_id": 6
        }
    ],
    "message": "Invitations retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/members

Get Member List

List members

List the members of a circle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "groups": [
            {
                "name": "Family Circle",
                "status": "approved",
                "members": [
                    {
                        "id": 1,
                        "name": "Circle Owner",
                        "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                        "is_leader": true
                    },
                    {
                        "id": 2,
                        "name": "Circle Member",
                        "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                        "is_leader": false
                    }
                ],
                "circle_id": 1,
                "created_at": "2026-10-19T07:15:43.000000Z",
                "description": "Grouping close relatives into a private sub-circle.",
                "requester_member_id": 1
            }
        ],
        "members": [
            {
                "id": 1,
                "turns": [
                    {
                        "id": 1,
                        "status": "upcoming",
                        "month_year": "2026-10-19",
                        "turn_number": 1,
                        "payout_amount": "12000.00"
                    }
                ],
                "monthly": 1000,
                "user_id": 5,
                "is_admin": false,
                "circle_id": 1,
                "is_frozen": false,
                "joined_at": "2026-10-19T07:15:41.000000Z",
                "is_manager": true,
                "member_name": "Circle Owner",
                "is_collector": true,
                "next_payment": "2026-11-01",
                "payment_method": null,
                "agreed_to_rules": false,
                "assigned_to_turn": true,
                "agreed_to_privacy": false,
                "member_phone_number": "999500000001",
                "member_profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            {
                "id": 2,
                "turns": [
                    {
                        "id": 2,
                        "status": "upcoming",
                        "month_year": "2026-11-19",
                        "turn_number": 2,
                        "payout_amount": "12000.00"
                    }
                ],
                "monthly": 1000,
                "user_id": 11,
                "is_admin": false,
                "circle_id": 1,
                "is_frozen": false,
                "joined_at": "2026-10-19T07:14:19.000000Z",
                "is_manager": false,
                "member_name": "Circle Member",
                "is_collector": false,
                "next_payment": "2026-10-01",
                "payment_method": null,
                "agreed_to_rules": false,
                "assigned_to_turn": true,
                "agreed_to_privacy": false,
                "member_phone_number": "999500000007",
                "member_profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg"
            },
            {
                "id": 4,
                "turns": [
                    {
                        "id": 3,
                        "status": "upcoming",
                        "month_year": "2026-12-19",
                        "turn_number": 3,
                        "payout_amount": "12000.00"
                    }
                ],
                "monthly": 1000,
                "user_id": 12,
                "is_admin": false,
                "circle_id": 1,
                "is_frozen": false,
                "joined_at": "2026-10-19T07:14:21.000000Z",
                "is_manager": false,
                "member_name": "Circle Payer",
                "is_collector": false,
                "next_payment": "2026-10-01",
                "payment_method": null,
                "agreed_to_rules": false,
                "assigned_to_turn": true,
                "agreed_to_privacy": false,
                "member_phone_number": "999500000008",
                "member_profile_image": null
            },
            {
                "id": 3,
                "turns": [
                    {
                        "id": 4,
                        "status": "upcoming",
                        "month_year": "2027-01-19",
                        "turn_number": 4,
                        "payout_amount": "12000.00"
                    }
                ],
                "monthly": 1000,
                "user_id": 14,
                "is_admin": false,
                "circle_id": 1,
                "is_frozen": false,
                "joined_at": "2026-10-19T07:14:21.000000Z",
                "is_manager": false,
                "member_name": "Mona Manager",
                "is_collector": false,
                "next_payment": "2026-10-01",
                "payment_method": null,
                "agreed_to_rules": false,
                "assigned_to_turn": true,
                "agreed_to_privacy": false,
                "member_phone_number": "999500000020",
                "member_profile_image": null
            }
        ]
    },
    "message": "Members retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/members/2

Get Member Details

Member details

Retrieve the details of a single circle member (member_id, member_role, member_profile_image, member_phone_number, member_join_date, plus existing member info). Circle members only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "turns": [
            {
                "id": 2,
                "status": "upcoming",
                "month_year": "2026-11-19",
                "turn_number": 2,
                "payout_amount": "12000.00"
            }
        ],
        "monthly": 1000,
        "user_id": 11,
        "is_admin": false,
        "circle_id": 1,
        "is_frozen": false,
        "joined_at": "2026-10-19T07:14:19.000000Z",
        "is_manager": false,
        "member_name": "Circle Member",
        "is_collector": false,
        "next_payment": "2026-10-01",
        "payment_method": null,
        "agreed_to_rules": false,
        "assigned_to_turn": true,
        "agreed_to_privacy": false,
        "member_phone_number": "999500000007",
        "member_profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg"
    },
    "message": "Member details retrieved successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/members

Add Member

Add member

Add a user to the circle by user ID. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
user_id integer 9
is_manager boolean

Request Validations Or Notes

Field/Name Examples
user_id required, integer, exists users,id
notes optional, string
is_manager optional, true/false
profile_settings required, array
profile_settings.payment_method required, string, allowed: visa, cash
profile_settings.agreed_to_rules required, true/false
profile_settings.agreed_to_privacy required, true/false
Success (200 OK)
{
    "data": {
        "id": 14,
        "turns": [
            {
                "id": 5,
                "status": "upcoming",
                "month_year": "2027-02-19",
                "turn_number": 5,
                "payout_amount": "12000.00"
            }
        ],
        "monthly": 1000,
        "user_id": 9,
        "is_admin": null,
        "circle_id": 1,
        "is_frozen": null,
        "joined_at": "2026-10-19T07:15:44.000000Z",
        "is_manager": false,
        "member_name": "Add Target",
        "is_collector": null,
        "next_payment": "2026-10-01",
        "payment_method": "cash",
        "agreed_to_rules": true,
        "assigned_to_turn": true,
        "agreed_to_privacy": true,
        "member_phone_number": "999500000005",
        "member_profile_image": null
    },
    "message": "Member added successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/groups

Get Group List (Approved)

List approved groups

List all approved groups of a circle. Each group includes its members with user_id, name, avatar, email, and an is_leader flag marking the group creator as leader. Circle members only. Path parameters: {circle_id} the money circle ID.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 19,
            "name": "Family Circle",
            "status": "approved",
            "members": [
                {
                    "name": "Circle Owner",
                    "role": "creator",
                    "email": "circle.owner@demo.com",
                    "avatar": "media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "is_leader": true,
                    "joined_at": "2026-10-19 07:15:41",
                    "member_id": 1,
                    "avatar_url": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
                },
                {
                    "name": "Circle Member",
                    "role": "member",
                    "email": "circle.member@demo.com",
                    "avatar": "media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "is_leader": false,
                    "joined_at": "2026-10-19 07:14:19",
                    "member_id": 2,
                    "avatar_url": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg"
                }
            ],
            "circle_id": 1,
            "created_at": "2026-10-19T07:15:43.000000Z",
            "created_by": 1,
            "updated_at": "2026-10-19T07:15:43.000000Z",
            "description": "Grouping close relatives into a private sub-circle.",
            "target_turn": 3
        }
    ],
    "message": "Groups retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/groups/19

Get Group Details

Get group details

Retrieve details of a specific approved group by ID. The response includes the group name, target turn, and its members. Circle members only. Path parameters: {circle_id} the money circle ID, {id} the group ID.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 19,
        "name": "Family Circle",
        "status": "approved",
        "members": [
            {
                "name": "Circle Owner",
                "role": "creator",
                "email": "circle.owner@demo.com",
                "avatar": "media\/avatars\/circle-owner.jpg",
                "user_id": 5,
                "is_leader": true,
                "joined_at": "2026-10-19 07:15:41",
                "member_id": 1,
                "avatar_url": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            {
                "name": "Circle Member",
                "role": "member",
                "email": "circle.member@demo.com",
                "avatar": "media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "is_leader": false,
                "joined_at": "2026-10-19 07:14:19",
                "member_id": 2,
                "avatar_url": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg"
            }
        ],
        "circle_id": 1,
        "created_at": "2026-10-19T07:15:43.000000Z",
        "created_by": 1,
        "updated_at": "2026-10-19T07:15:43.000000Z",
        "description": "Grouping close relatives into a private sub-circle.",
        "target_turn": 3
    },
    "message": "Group retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/payments/current-receiver

Current Receiver

Current receiver

Get the member who receives contributions this cycle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "turn_id": 1,
        "month_year": "2026-10-19T00:00:00.000000Z",
        "turn_number": 1,
        "payout_amount": "12000.00",
        "payout_method": "central_pot",
        "receiver_user_id": 5,
        "receiver_member_id": 1
    },
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/payments/history

Payment History

Payment history

List confirmed (paid) payments for the circle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "amount": "1000.00",
            "status": "pending",
            "details": null,
            "paid_at": null,
            "turn_id": 1,
            "due_date": "2026-10-26T00:00:00.000000Z",
            "circle_id": 1,
            "payer_name": "Circle Member",
            "description": "Monthly contribution for cycle 1.",
            "confirmed_by": null,
            "payer_member_id": 2,
            "proof_image_url": null,
            "is_group_payment": false,
            "late_fee_applied": "0.00"
        },
        {
            "id": 2,
            "amount": "1000.00",
            "status": "pending",
            "details": null,
            "paid_at": null,
            "turn_id": 1,
            "due_date": "2026-11-02T00:00:00.000000Z",
            "circle_id": 1,
            "payer_name": "Circle Member",
            "description": "Contribution flagged for review.",
            "confirmed_by": null,
            "payer_member_id": 2,
            "proof_image_url": null,
            "is_group_payment": false,
            "late_fee_applied": "0.00"
        }
    ],
    "message": "Payment history retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/money-circles/1/payments/history/2

Payment History (by Member)

Member payment history

List payment history filtered for a specific circle member.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "amount": "1000.00",
            "status": "pending",
            "details": null,
            "paid_at": null,
            "turn_id": 1,
            "due_date": "2026-10-26T00:00:00.000000Z",
            "circle_id": 1,
            "payer_name": "Circle Member",
            "description": "Monthly contribution for cycle 1.",
            "confirmed_by": null,
            "payer_member_id": 2,
            "proof_image_url": null,
            "is_group_payment": false,
            "late_fee_applied": "0.00"
        },
        {
            "id": 2,
            "amount": "1000.00",
            "status": "pending",
            "details": null,
            "paid_at": null,
            "turn_id": 1,
            "due_date": "2026-11-02T00:00:00.000000Z",
            "circle_id": 1,
            "payer_name": "Circle Member",
            "description": "Contribution flagged for review.",
            "confirmed_by": null,
            "payer_member_id": 2,
            "proof_image_url": null,
            "is_group_payment": false,
            "late_fee_applied": "0.00"
        }
    ],
    "message": "Payment history retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/money-circles/1/payments/1/rounds

Get Payment Rounds

Payment rounds

Retrieve payment rounds for a specific turn. Returns one record per base member (first member assigned to each turn) for the given turn/cycle, including payment status, amounts, payer details, and due dates. The returned turn payload includes a 'receiver' object (the ultimate recipient based on payout method) and a 'turn_holder' object (the member who owns the turn, with an 'is_group' flag if they are a group leader). Circle members only. Path parameters: {circle_id} the money circle ID, {turn_id} the turn ID. Requires an existing turn ID from the circle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "turn": {
            "id": 1,
            "status": "upcoming",
            "month_year": "2026-10-19",
            "turn_holder": {
                "name": "Circle Owner",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "user_id": 5,
                "is_group": false,
                "member_id": 1
            },
            "turn_number": 1
        },
        "members": [
            {
                "name": "Circle Owner",
                "amount": null,
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "paid_at": null,
                "turn_id": 1,
                "user_id": 5,
                "due_date": null,
                "group_id": null,
                "member_id": 1,
                "group_name": null,
                "payment_id": null,
                "turn_number": 1,
                "is_collector": true,
                "payment_status": "overdue",
                "is_group_leader": false,
                "proof_image_url": null,
                "group_members_count": null
            },
            {
                "name": "Circle Member",
                "amount": 1000,
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "paid_at": null,
                "turn_id": 2,
                "user_id": 11,
                "due_date": "2026-10-26",
                "group_id": null,
                "member_id": 2,
                "group_name": null,
                "payment_id": 1,
                "turn_number": 2,
                "is_collector": false,
                "payment_status": "pending",
                "is_group_leader": false,
                "proof_image_url": null,
                "group_members_count": null
            },
            {
                "name": "Circle Payer",
                "amount": null,
                "avatar": null,
                "paid_at": null,
                "turn_id": 3,
                "user_id": 12,
                "due_date": null,
                "group_id": null,
                "member_id": 4,
                "group_name": null,
                "payment_id": null,
                "turn_number": 3,
                "is_collector": false,
                "payment_status": "overdue",
                "is_group_leader": false,
                "proof_image_url": null,
                "group_members_count": null
            },
            {
                "name": "Mona Manager",
                "amount": null,
                "avatar": null,
                "paid_at": null,
                "turn_id": 4,
                "user_id": 14,
                "due_date": null,
                "group_id": null,
                "member_id": 3,
                "group_name": null,
                "payment_id": null,
                "turn_number": 4,
                "is_collector": false,
                "payment_status": "overdue",
                "is_group_leader": false,
                "proof_image_url": null,
                "group_members_count": null
            }
        ]
    },
    "message": "Turn payments retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/payments/3/rounds/31

Get Payment Rounds Per Group

Payment rounds per group

Retrieve payment rounds for a specific turn filtered by group. Returns one record per group member (including the leader) for the given turn/group combination, including payment status, amounts, and payer details for group sub-payments (is_group_payment=true). Circle members only. Path parameters: {circle_id} the money circle ID, {turn_id} the turn the group pays into, {group_id} the approved group ID. Requires an approved create_group request ID and its target turn ID.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "turn": {
            "id": 3,
            "status": "upcoming",
            "month_year": "2026-12-19",
            "turn_number": 3
        },
        "members": [
            {
                "name": "Circle Owner",
                "amount": null,
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "details": null,
                "paid_at": null,
                "user_id": 5,
                "due_date": null,
                "is_leader": true,
                "member_id": 1,
                "payment_id": null,
                "payment_status": "unpaid",
                "proof_image_url": null
            },
            {
                "name": "Circle Member",
                "amount": null,
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "details": null,
                "paid_at": null,
                "user_id": 11,
                "due_date": null,
                "is_leader": false,
                "member_id": 2,
                "payment_id": null,
                "payment_status": "unpaid",
                "proof_image_url": null
            }
        ],
        "group_details": {
            "name": "Family Circle",
            "status": "approved",
            "total_amount": 0,
            "members_count": 2
        }
    },
    "message": "Turn payments for circle group retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/requests

Get Requests List

List requests

List all circle action requests (swap / extra_turn / create_group / join); each carries a details object describing the request. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 13,
            "type": "join",
            "user": {
                "id": 8,
                "name": "Circle Joiner",
                "email": "circle.joiner@demo.com",
                "avatar": null
            },
            "status": "pending",
            "user_id": 8,
            "circle_id": 1,
            "created_at": "2026-10-19T07:15:04.000000Z"
        },
        {
            "id": 32,
            "type": "swap",
            "status": "pending",
            "details": {
                "reason": "Travel commitments — need a later payout month.",
                "to_turn": 5,
                "from_turn": 3
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 5,
                "month_year": "2027-02-19T00:00:00.000000Z",
                "turn_number": 5,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "upcoming",
                "turn_id": 3,
                "month_year": "2026-12-19T00:00:00.000000Z",
                "turn_number": 3,
                "payout_amount": "12000.00"
            },
            "requester_details": {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            }
        },
        {
            "id": 33,
            "type": "swap",
            "status": "pending",
            "details": {
                "reason": "Swap no longer needed — declining this one.",
                "to_turn": 4,
                "from_turn": 2
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 4,
                "month_year": "2027-01-19T00:00:00.000000Z",
                "turn_number": 4,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "upcoming",
                "turn_id": 2,
                "month_year": "2026-11-19T00:00:00.000000Z",
                "turn_number": 2,
                "payout_amount": "12000.00"
            },
            "requester_details": {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            }
        },
        {
            "id": 34,
            "type": "swap",
            "status": "pending",
            "details": {
                "reason": "Changed my mind — removing this one.",
                "to_turn": 6,
                "from_turn": 4
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 6,
                "month_year": "2027-03-19T00:00:00.000000Z",
                "turn_number": 6,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "upcoming",
                "turn_id": 4,
                "month_year": "2027-01-19T00:00:00.000000Z",
                "turn_number": 4,
                "payout_amount": "12000.00"
            },
            "requester_details": {
                "name": "Circle Owner",
                "email": "circle.owner@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "user_id": 5,
                "member_id": 1
            }
        },
        {
            "id": 35,
            "type": "extra_turn",
            "status": "pending",
            "details": {
                "message": "Wedding expenses — requesting an additional payout turn.",
                "to_turns": [
                    2
                ],
                "current_turn": 1
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "requester_details": {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            },
            "current_turn_details": {
                "status": "completed",
                "turn_id": 1,
                "month_year": "2026-10-19T00:00:00.000000Z",
                "turn_number": 1,
                "payout_amount": "12000.00"
            },
            "target_turns_details": [
                {
                    "status": "upcoming",
                    "turn_id": 2,
                    "month_year": "2026-11-19T00:00:00.000000Z",
                    "turn_number": 2,
                    "payout_amount": "12000.00"
                }
            ]
        },
        {
            "id": 36,
            "type": "create_group",
            "status": "pending",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1,
                    2
                ],
                "target_turn": 2
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                },
                {
                    "name": "Circle Member",
                    "email": "circle.member@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "member_id": 2
                }
            ],
            "requester_details": {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            },
            "target_turn_details": {
                "turn_number": 2
            }
        },
        {
            "id": 37,
            "type": "create_group",
            "status": "approved",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1,
                    2
                ],
                "target_turn": 3
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                },
                {
                    "name": "Circle Member",
                    "email": "circle.member@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "member_id": 2
                }
            ],
            "requester_details": {
                "name": "Circle Owner",
                "email": "circle.owner@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "user_id": 5,
                "member_id": 1
            },
            "target_turn_details": {
                "turn_number": 3
            }
        }
    ],
    "message": "Requests retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 7,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/money-circles/1/requests

Get Requests (Type: Swap Seat)

Filter requests by type

Filter by type=swap. Swap Seat: a member requests to exchange their assigned seat with another member. details: {current_seat, requested_seat, reason}.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
type string swap
Success (200 OK)
{
    "data": [
        {
            "id": 32,
            "type": "swap",
            "status": "pending",
            "details": {
                "reason": "Travel commitments — need a later payout month.",
                "to_turn": 5,
                "from_turn": 3
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 5,
                "month_year": "2027-02-19T00:00:00.000000Z",
                "turn_number": 5,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "upcoming",
                "turn_id": 3,
                "month_year": "2026-12-19T00:00:00.000000Z",
                "turn_number": 3,
                "payout_amount": "12000.00"
            },
            "requester_details": {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            }
        },
        {
            "id": 33,
            "type": "swap",
            "status": "pending",
            "details": {
                "reason": "Swap no longer needed — declining this one.",
                "to_turn": 4,
                "from_turn": 2
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 4,
                "month_year": "2027-01-19T00:00:00.000000Z",
                "turn_number": 4,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "upcoming",
                "turn_id": 2,
                "month_year": "2026-11-19T00:00:00.000000Z",
                "turn_number": 2,
                "payout_amount": "12000.00"
            },
            "requester_details": {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            }
        },
        {
            "id": 34,
            "type": "swap",
            "status": "pending",
            "details": {
                "reason": "Changed my mind — removing this one.",
                "to_turn": 6,
                "from_turn": 4
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 6,
                "month_year": "2027-03-19T00:00:00.000000Z",
                "turn_number": 6,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "upcoming",
                "turn_id": 4,
                "month_year": "2027-01-19T00:00:00.000000Z",
                "turn_number": 4,
                "payout_amount": "12000.00"
            },
            "requester_details": {
                "name": "Circle Owner",
                "email": "circle.owner@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "user_id": 5,
                "member_id": 1
            }
        }
    ],
    "message": "Requests retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 3,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/money-circles/1/requests

Get Requests (Type: Extra Turn)

Filter requests by type

Filter by type=extra_turn. Extra Turn: a member requests an additional payout turn. details: {requested_month, reason}.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
type string extra_turn
Success (200 OK)
{
    "data": [
        {
            "id": 35,
            "type": "extra_turn",
            "status": "pending",
            "details": {
                "message": "Wedding expenses — requesting an additional payout turn.",
                "to_turns": [
                    2
                ],
                "current_turn": 1
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "requester_details": {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            },
            "current_turn_details": {
                "status": "completed",
                "turn_id": 1,
                "month_year": "2026-10-19T00:00:00.000000Z",
                "turn_number": 1,
                "payout_amount": "12000.00"
            },
            "target_turns_details": [
                {
                    "status": "upcoming",
                    "turn_id": 2,
                    "month_year": "2026-11-19T00:00:00.000000Z",
                    "turn_number": 2,
                    "payout_amount": "12000.00"
                }
            ]
        }
    ],
    "message": "Requests retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 1,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/money-circles/1/requests

Get Requests (Type: Create Group)

Filter requests by type

Filter by type=create_group. Create Group: a member requests to create a private sub-circle. details: {group_name, member_ids, reason}.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
type string create_group
Success (200 OK)
{
    "data": [
        {
            "id": 36,
            "type": "create_group",
            "status": "pending",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1,
                    2
                ],
                "target_turn": 2
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                },
                {
                    "name": "Circle Member",
                    "email": "circle.member@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "member_id": 2
                }
            ],
            "requester_details": {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            },
            "target_turn_details": {
                "turn_number": 2
            }
        },
        {
            "id": 37,
            "type": "create_group",
            "status": "approved",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1,
                    2
                ],
                "target_turn": 3
            },
            "user_id": null,
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                },
                {
                    "name": "Circle Member",
                    "email": "circle.member@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "member_id": 2
                }
            ],
            "requester_details": {
                "name": "Circle Owner",
                "email": "circle.owner@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "user_id": 5,
                "member_id": 1
            },
            "target_turn_details": {
                "turn_number": 3
            }
        }
    ],
    "message": "Requests retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/mobile/money-circles/1/requests

Create Request (Swap)

Create swap request

Submit a swap request. details requires from_turn (the member's current turn) and to_turn (the target turn to swap into). The from_turn must be occupied by the requesting member.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
type string swap
details array {"reason":"Travel commitments \u2014 need a later payout month.","to_turn":3,"from_turn":1}

Request Validations Or Notes

Field/Name Examples
type bail, required, allowed: join, swap, extra_turn, create_group
details bail, required, array
details.reason optional, string, max 1000
details.from_turn required if type = swap, integer, Exists
details.to_turn required if type = swap, integer, Exists
details.message optional, string, max 1000
details.current_turn required if type = extra_turn, integer, Exists
details.to_turns required if type = extra_turn, array, min 1
details.to_turns[] required, integer, Exists
details.group_name required if type = create_group, string, max 255
details.target_turn bail, required if type = create_group, integer, Exists
details.add_members optional, array
details.add_members[] required, bail, integer, Exists
Success (200 OK)
{
    "data": {
        "id": 38,
        "type": "swap",
        "status": "pending",
        "details": {
            "reason": "Travel commitments — need a later payout month.",
            "to_turn": 3,
            "from_turn": 1
        },
        "user_id": 5,
        "circle_id": 1,
        "created_at": "2026-10-19T07:17:45.000000Z",
        "to_turn_details": {
            "status": "upcoming",
            "turn_id": 3,
            "month_year": "2026-12-19T00:00:00.000000Z",
            "turn_number": 3,
            "payout_amount": "12000.00"
        },
        "from_turn_details": {
            "status": "completed",
            "turn_id": 1,
            "month_year": "2026-10-19T00:00:00.000000Z",
            "turn_number": 1,
            "payout_amount": "12000.00"
        },
        "requester_details": {
            "name": "Circle Owner",
            "email": "circle.owner@demo.com",
            "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
            "user_id": 5,
            "member_id": 1
        }
    },
    "message": "Swap request created successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/requests

Create Request (Extra Turn)

Create extra turn request

Submit an extra turn request. details requires current_turn (the member's current turn) and to_turns (array of target turn IDs the member wants for the additional turns).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
type string extra_turn
details array {"message":"Wedding expenses \u2014 requesting an additional payout turn.","to_turns":[5],"current_turn":1}

Request Validations Or Notes

Field/Name Examples
type bail, required, allowed: join, swap, extra_turn, create_group
details bail, required, array
details.reason optional, string, max 1000
details.from_turn required if type = swap, integer, Exists
details.to_turn required if type = swap, integer, Exists
details.message optional, string, max 1000
details.current_turn required if type = extra_turn, integer, Exists
details.to_turns required if type = extra_turn, array, min 1
details.to_turns[] required, integer, Exists
details.group_name required if type = create_group, string, max 255
details.target_turn bail, required if type = create_group, integer, Exists
details.add_members optional, array
details.add_members[] required, bail, integer, Exists
Success (200 OK)
{
    "data": {
        "id": 39,
        "type": "extra_turn",
        "status": "pending",
        "details": {
            "message": "Wedding expenses — requesting an additional payout turn.",
            "to_turns": [
                5
            ],
            "current_turn": 1
        },
        "user_id": 5,
        "circle_id": 1,
        "created_at": "2026-10-19T07:17:46.000000Z",
        "requester_details": {
            "name": "Circle Owner",
            "email": "circle.owner@demo.com",
            "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
            "user_id": 5,
            "member_id": 1
        },
        "current_turn_details": {
            "status": "completed",
            "turn_id": 1,
            "month_year": "2026-10-19T00:00:00.000000Z",
            "turn_number": 1,
            "payout_amount": "12000.00"
        },
        "target_turns_details": [
            {
                "status": "upcoming",
                "turn_id": 5,
                "month_year": "2027-02-19T00:00:00.000000Z",
                "turn_number": 5,
                "payout_amount": "12000.00"
            }
        ]
    },
    "message": "Extra Turn request created successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/requests

Create Request (Create Group)

Create group request

Submit a create group request. details requires group_name and target_turn. Optionally include add_members (array of member IDs) to pre-add members to the group.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
type string create_group
details array {"message":"Grouping close relatives into a private sub-circle.","group_name":"Family Circle","add_members":[1,2],"target_turn":6}

Request Validations Or Notes

Field/Name Examples
type bail, required, allowed: join, swap, extra_turn, create_group
details bail, required, array
details.reason optional, string, max 1000
details.from_turn required if type = swap, integer, Exists
details.to_turn required if type = swap, integer, Exists
details.message optional, string, max 1000
details.current_turn required if type = extra_turn, integer, Exists
details.to_turns required if type = extra_turn, array, min 1
details.to_turns[] required, integer, Exists
details.group_name required if type = create_group, string, max 255
details.target_turn bail, required if type = create_group, integer, Exists
details.add_members optional, array
details.add_members[] required, bail, integer, Exists
Success (200 OK)
{
    "data": {
        "id": 41,
        "type": "create_group",
        "status": "approved",
        "details": {
            "message": "Grouping close relatives into a private sub-circle.",
            "group_name": "Family Circle",
            "add_members": [
                1,
                2
            ],
            "target_turn": 6
        },
        "user_id": 5,
        "circle_id": 1,
        "created_at": "2026-10-19T07:17:46.000000Z",
        "group_name": "Family Circle",
        "resolved_at": "2026-10-19T07:17:46.000000Z",
        "group_members": [
            {
                "name": "Circle Owner",
                "email": "circle.owner@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "user_id": 5,
                "member_id": 1
            },
            {
                "name": "Circle Member",
                "email": "circle.member@demo.com",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "user_id": 11,
                "member_id": 2
            }
        ],
        "requester_details": {
            "name": "Circle Owner",
            "email": "circle.owner@demo.com",
            "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
            "user_id": 5,
            "member_id": 1
        },
        "target_turn_details": {
            "turn_number": 6
        }
    },
    "message": "Create Group request created successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/my-requests

Get My Requests

My requests

List the requests you submitted in this circle (join, swap, extra_turn, or create_group).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 39,
            "type": "extra_turn",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00"
            },
            "status": "pending",
            "details": {
                "message": "Wedding expenses — requesting an additional payout turn.",
                "to_turns": [
                    5
                ],
                "current_turn": 1
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:46.000000Z",
            "current_turn_details": {
                "status": "completed",
                "turn_id": 1,
                "month_year": "2026-10-19T00:00:00.000000Z",
                "turn_number": 1,
                "payout_amount": "12000.00"
            },
            "target_turns_details": [
                {
                    "status": "upcoming",
                    "turn_id": 5,
                    "month_year": "2027-02-19T00:00:00.000000Z",
                    "turn_number": 5,
                    "payout_amount": "12000.00"
                }
            ]
        },
        {
            "id": 40,
            "type": "create_group",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00"
            },
            "status": "approved",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1
                ],
                "target_turn": 5
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:46.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                }
            ],
            "target_turn_details": {
                "turn_number": 5
            }
        },
        {
            "id": 41,
            "type": "create_group",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00"
            },
            "status": "approved",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1,
                    2
                ],
                "target_turn": 6
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:46.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                },
                {
                    "name": "Circle Member",
                    "email": "circle.member@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "member_id": 2
                }
            ],
            "target_turn_details": {
                "turn_number": 6
            }
        },
        {
            "id": 38,
            "type": "swap",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00"
            },
            "status": "pending",
            "details": {
                "reason": "Travel commitments — need a later payout month.",
                "to_turn": 3,
                "from_turn": 1
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:45.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 3,
                "month_year": "2026-12-19T00:00:00.000000Z",
                "turn_number": 3,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "completed",
                "turn_id": 1,
                "month_year": "2026-10-19T00:00:00.000000Z",
                "turn_number": 1,
                "payout_amount": "12000.00"
            }
        },
        {
            "id": 34,
            "type": "swap",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00"
            },
            "status": "pending",
            "details": {
                "reason": "Changed my mind — removing this one.",
                "to_turn": 6,
                "from_turn": 4
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 6,
                "month_year": "2027-03-19T00:00:00.000000Z",
                "turn_number": 6,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "upcoming",
                "turn_id": 4,
                "month_year": "2027-01-19T00:00:00.000000Z",
                "turn_number": 4,
                "payout_amount": "12000.00"
            }
        },
        {
            "id": 37,
            "type": "create_group",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00"
            },
            "status": "approved",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1,
                    2
                ],
                "target_turn": 3
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                },
                {
                    "name": "Circle Member",
                    "email": "circle.member@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "member_id": 2
                }
            ],
            "target_turn_details": {
                "turn_number": 3
            }
        }
    ],
    "message": "My requests retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 6,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/money-circles/my-requests

Get All My Requests

All my requests

List all the authenticated user's requests across every circle they belong to. Supports optional type and status query filters. Valid types: join, swap, extra_turn, create_group. Valid statuses: pending, approved, declined, cancelled. Example: type=swap, status=pending.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 39,
            "type": "extra_turn",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "circle_code": "DOC9SVTY",
                "taken_turns": 6,
                "total_turns": 7,
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00",
                "duration_months": 6
            },
            "status": "pending",
            "details": {
                "message": "Wedding expenses — requesting an additional payout turn.",
                "to_turns": [
                    5
                ],
                "current_turn": 1
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:46.000000Z",
            "current_turn_details": {
                "status": "completed",
                "turn_id": 1,
                "month_year": "2026-10-19T00:00:00.000000Z",
                "turn_number": 1,
                "payout_amount": "12000.00"
            },
            "target_turns_details": [
                {
                    "status": "upcoming",
                    "turn_id": 5,
                    "month_year": "2027-02-19T00:00:00.000000Z",
                    "turn_number": 5,
                    "payout_amount": "12000.00"
                }
            ]
        },
        {
            "id": 40,
            "type": "create_group",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "circle_code": "DOC9SVTY",
                "taken_turns": 6,
                "total_turns": 7,
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00",
                "duration_months": 6
            },
            "status": "approved",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1
                ],
                "target_turn": 5
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:46.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                }
            ],
            "target_turn_details": {
                "turn_number": 5
            }
        },
        {
            "id": 41,
            "type": "create_group",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "circle_code": "DOC9SVTY",
                "taken_turns": 6,
                "total_turns": 7,
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00",
                "duration_months": 6
            },
            "status": "approved",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1,
                    2
                ],
                "target_turn": 6
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:46.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                },
                {
                    "name": "Circle Member",
                    "email": "circle.member@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "member_id": 2
                }
            ],
            "target_turn_details": {
                "turn_number": 6
            }
        },
        {
            "id": 38,
            "type": "swap",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "circle_code": "DOC9SVTY",
                "taken_turns": 6,
                "total_turns": 7,
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00",
                "duration_months": 6
            },
            "status": "pending",
            "details": {
                "reason": "Travel commitments — need a later payout month.",
                "to_turn": 3,
                "from_turn": 1
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:45.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 3,
                "month_year": "2026-12-19T00:00:00.000000Z",
                "turn_number": 3,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "completed",
                "turn_id": 1,
                "month_year": "2026-10-19T00:00:00.000000Z",
                "turn_number": 1,
                "payout_amount": "12000.00"
            }
        },
        {
            "id": 34,
            "type": "swap",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "circle_code": "DOC9SVTY",
                "taken_turns": 6,
                "total_turns": 7,
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00",
                "duration_months": 6
            },
            "status": "pending",
            "details": {
                "reason": "Changed my mind — removing this one.",
                "to_turn": 6,
                "from_turn": 4
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "to_turn_details": {
                "status": "upcoming",
                "turn_id": 6,
                "month_year": "2027-03-19T00:00:00.000000Z",
                "turn_number": 6,
                "payout_amount": "12000.00"
            },
            "from_turn_details": {
                "status": "upcoming",
                "turn_id": 4,
                "month_year": "2027-01-19T00:00:00.000000Z",
                "turn_number": 4,
                "payout_amount": "12000.00"
            }
        },
        {
            "id": 37,
            "type": "create_group",
            "circle": {
                "id": 1,
                "name": "Documentation Circle",
                "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
                "status": "active",
                "currency": "SAR",
                "end_date": "2027-04-18T00:00:00.000000Z",
                "start_date": "2026-10-18T00:00:00.000000Z",
                "circle_code": "DOC9SVTY",
                "taken_turns": 6,
                "total_turns": 7,
                "total_amount": "12000.00",
                "members_count": 4,
                "monthly_amount": "1000.00",
                "duration_months": 6
            },
            "status": "approved",
            "details": {
                "message": "Grouping close relatives into a private sub-circle.",
                "group_name": "Family Circle",
                "add_members": [
                    1,
                    2
                ],
                "target_turn": 3
            },
            "circle_id": 1,
            "created_at": "2026-10-19T07:17:43.000000Z",
            "group_name": "Family Circle",
            "group_members": [
                {
                    "name": "Circle Owner",
                    "email": "circle.owner@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                    "user_id": 5,
                    "member_id": 1
                },
                {
                    "name": "Circle Member",
                    "email": "circle.member@demo.com",
                    "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                    "user_id": 11,
                    "member_id": 2
                }
            ],
            "target_turn_details": {
                "turn_number": 3
            }
        }
    ],
    "message": "My requests retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 6,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/money-circles/search

Search Circles

Search circles

Search within the circles the authenticated user belongs to. Uses a single "query" parameter that searches in both circle name (partial match) and circle code (partial match). Returns circle_id, circle_name, invite_code, total_members, monthly_amount, created_by, status, start_date, end_date.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
query string Documentation

Request Validations Or Notes

Field/Name Examples
query optional, string, max 100
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Documentation Circle",
            "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-18T00:00:00.000000Z",
            "collected": "2000.00",
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 1,
                "is_manager": true
            },
            "remaining": 10000,
            "creator_id": 5,
            "start_date": "2026-10-18T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DOC9SVTY",
            "taken_turns": 6,
            "total_turns": 9,
            "contributors": 4,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                1,
                10,
                20
            ],
            "receive_duration": [
                25
            ],
            "thisMonthReceiver": {
                "name": "Circle Owner",
                "member_id": 1,
                "profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            "commission_percent": "0.00",
            "collector_member_id": 1
        },
        {
            "id": 6,
            "name": "Published Documentation Circle",
            "notes": null,
            "myRole": "admin",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 10,
                "is_manager": true
            },
            "remaining": 12000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "PUBOKOSB",
            "taken_turns": 0,
            "total_turns": 6,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        }
    ],
    "message": "Search results retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/search

Search Circles (by code)

Search circles

Search by circle code (partial match). The "query" parameter searches in both name and code, so this will find circles matching the code.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
query string DOC9SVTY

Request Validations Or Notes

Field/Name Examples
query optional, string, max 100
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Documentation Circle",
            "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-18T00:00:00.000000Z",
            "collected": "2000.00",
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 1,
                "is_manager": true
            },
            "remaining": 10000,
            "creator_id": 5,
            "start_date": "2026-10-18T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DOC9SVTY",
            "taken_turns": 6,
            "total_turns": 9,
            "contributors": 4,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                1,
                10,
                20
            ],
            "receive_duration": [
                25
            ],
            "thisMonthReceiver": {
                "name": "Circle Owner",
                "member_id": 1,
                "profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            "commission_percent": "0.00",
            "collector_member_id": 1
        }
    ],
    "message": "Search results retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/search

Search Circles (by name)

Search circles

Search by circle name (partial match). The "query" parameter searches in both name and code.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
query string Doc

Request Validations Or Notes

Field/Name Examples
query optional, string, max 100
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Documentation Circle",
            "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-18T00:00:00.000000Z",
            "collected": "2000.00",
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 1,
                "is_manager": true
            },
            "remaining": 10000,
            "creator_id": 5,
            "start_date": "2026-10-18T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DOC9SVTY",
            "taken_turns": 6,
            "total_turns": 9,
            "contributors": 4,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                1,
                10,
                20
            ],
            "receive_duration": [
                25
            ],
            "thisMonthReceiver": {
                "name": "Circle Owner",
                "member_id": 1,
                "profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            "commission_percent": "0.00",
            "collector_member_id": 1
        },
        {
            "id": 6,
            "name": "Published Documentation Circle",
            "notes": null,
            "myRole": "admin",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 10,
                "is_manager": true
            },
            "remaining": 12000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "PUBOKOSB",
            "taken_turns": 0,
            "total_turns": 6,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        }
    ],
    "message": "Search results retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/announcements

Get Circle Announcements

List announcements

List a circle's announcements (id, title, description, created_at), newest first. Returns an empty array when there are none. Circle members only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 16,
            "title": "New member joined the circle",
            "created_at": "2026-10-19T07:19:06.000000Z",
            "description": "Selim has joined the circle. Welcome aboard!"
        },
        {
            "id": 15,
            "title": "Cycle 1 payout scheduled",
            "created_at": "2026-10-17T07:19:06.000000Z",
            "description": "The first payout will be transferred on the 25th. Please submit your contribution before the 20th."
        }
    ],
    "message": "Announcements retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/turns

Get Turn List

List turns

List all turns in the circle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "group": null,
            "member": {
                "id": 1,
                "name": "Circle Owner",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "is_manager": true
            },
            "status": "completed",
            "is_empty": false,
            "is_group": false,
            "is_my_turn": true,
            "month_year": "2026-10-19T00:00:00.000000Z",
            "turn_number": 1,
            "payout_amount": "12000.00"
        },
        {
            "id": 2,
            "group": null,
            "member": {
                "id": 2,
                "name": "Circle Member",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                "is_manager": false
            },
            "status": "upcoming",
            "is_empty": false,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2026-11-19T00:00:00.000000Z",
            "turn_number": 2,
            "payout_amount": "12000.00"
        },
        {
            "id": 3,
            "group": null,
            "member": {
                "id": 4,
                "name": "Circle Payer",
                "avatar": null,
                "is_manager": false
            },
            "status": "upcoming",
            "is_empty": false,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2026-12-19T00:00:00.000000Z",
            "turn_number": 3,
            "payout_amount": "12000.00"
        },
        {
            "id": 4,
            "group": null,
            "member": {
                "id": 3,
                "name": "Mona Manager",
                "avatar": null,
                "is_manager": false
            },
            "status": "upcoming",
            "is_empty": false,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2027-01-19T00:00:00.000000Z",
            "turn_number": 4,
            "payout_amount": "12000.00"
        },
        {
            "id": 5,
            "group": null,
            "member": {
                "id": 1,
                "name": "Circle Owner",
                "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                "is_manager": true
            },
            "status": "upcoming",
            "is_empty": false,
            "is_group": false,
            "is_my_turn": true,
            "month_year": "2027-02-19T00:00:00.000000Z",
            "turn_number": 5,
            "payout_amount": "12000.00"
        },
        {
            "id": 6,
            "group": {
                "name": null,
                "status": "approved",
                "members": [
                    {
                        "id": 1,
                        "name": "Circle Owner",
                        "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
                        "is_leader": true
                    },
                    {
                        "id": 2,
                        "name": "Circle Member",
                        "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
                        "is_leader": false
                    }
                ],
                "circle_id": 1,
                "created_at": null,
                "description": null,
                "requester_member_id": null
            },
            "member": null,
            "status": "upcoming",
            "is_empty": false,
            "is_group": true,
            "is_my_turn": true,
            "month_year": "2027-03-19T00:00:00.000000Z",
            "turn_number": 6,
            "payout_amount": "12000.00"
        },
        {
            "id": 7,
            "group": null,
            "member": null,
            "status": "upcoming",
            "is_empty": true,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2027-04-19T00:00:00.000000Z",
            "turn_number": 7,
            "payout_amount": "12000.00"
        },
        {
            "id": 21,
            "group": null,
            "member": null,
            "status": "upcoming",
            "is_empty": true,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2027-05-19T00:00:00.000000Z",
            "turn_number": 8,
            "payout_amount": "12000.00"
        },
        {
            "id": 22,
            "group": null,
            "member": null,
            "status": "upcoming",
            "is_empty": true,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2027-06-19T00:00:00.000000Z",
            "turn_number": 9,
            "payout_amount": "12000.00"
        }
    ]
}
GET /api/v1/mobile/money-circles/1/turns/available

Get Available Turns

Available turns

List turns that have no member assigned yet. Circle members only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 7,
            "group": null,
            "member": null,
            "status": "upcoming",
            "is_empty": true,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2027-04-19T00:00:00.000000Z",
            "turn_number": 7,
            "payout_amount": "12000.00"
        },
        {
            "id": 21,
            "group": null,
            "member": null,
            "status": "upcoming",
            "is_empty": true,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2027-05-19T00:00:00.000000Z",
            "turn_number": 8,
            "payout_amount": "12000.00"
        },
        {
            "id": 22,
            "group": null,
            "member": null,
            "status": "upcoming",
            "is_empty": true,
            "is_group": false,
            "is_my_turn": false,
            "month_year": "2027-06-19T00:00:00.000000Z",
            "turn_number": 9,
            "payout_amount": "12000.00"
        }
    ],
    "message": "Available turns retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1

Get Circle Details

Circle details

Retrieve the details of a specific money circle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Documentation Circle",
        "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
        "myRole": "manager",
        "status": "active",
        "privacy": "public",
        "currency": "SAR",
        "end_date": "2027-04-18T00:00:00.000000Z",
        "collected": "2000.00",
        "createdBy": {
            "id": 5,
            "name": "Circle Owner"
        },
        "managedBy": {
            "name": "Circle Owner",
            "user_id": 5,
            "member_id": 1,
            "is_manager": true
        },
        "remaining": 10000,
        "creator_id": 5,
        "start_date": "2026-10-18T00:00:00.000000Z",
        "allow_swaps": true,
        "circle_code": "DOC9SVTY",
        "taken_turns": 6,
        "total_turns": 9,
        "contributors": 4,
        "names_hidden": false,
        "total_amount": "12000.00",
        "current_cycle": "Oct, 2026",
        "payout_method": "central_pot",
        "collector_type": "creator",
        "monthly_amount": "1000.00",
        "duration_months": 6,
        "late_fee_per_day": "0.00",
        "payment_duration": [
            1,
            10,
            20
        ],
        "receive_duration": [
            25
        ],
        "thisMonthReceiver": {
            "name": "Circle Owner",
            "member_id": 1,
            "profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
        },
        "commission_percent": "0.00",
        "collector_member_id": 1
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/mobile/money-circles/4

Update Circle

Update circle

Update circle details. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Updated Documentation Circle
privacy string private

Request Validations Or Notes

Field/Name Examples
name optional, string, max 100
circle_code optional, string, max 20, Unique
creator_id optional, integer, exists users,id
total_amount optional, number, min 0
monthly_amount optional, number, min 0
currency optional, string, max 3
duration_months optional, integer, min 1
start_date optional, date (YYYY-MM-DD)
end_date optional, date (YYYY-MM-DD), on or after start_date
status optional, allowed: active, completed, frozen, published
privacy optional, allowed: public, private
names_hidden optional, true/false
payout_method optional, allowed: p2p_direct, central_pot
collector_type required if payout_method = central_pot, optional, allowed: creator, assigned_later
allow_swaps optional, true/false
late_fee_per_day optional, number, min 0
commission_percent optional, number, min 0
notes optional, string
payment_duration optional, array
payment_duration[] required, integer, min 0
receive_duration optional, array
receive_duration[] required, integer, min 0
collector_member_id required if payout_method = central_pot, optional, integer, Exists
Success (200 OK)
{
    "data": {
        "id": 4,
        "name": "Updated Documentation Circle",
        "notes": null,
        "myRole": "manager",
        "status": "published",
        "privacy": "private",
        "currency": "SAR",
        "end_date": "2027-04-19T00:00:00.000000Z",
        "collected": 0,
        "createdBy": {
            "id": 5,
            "name": "Circle Owner"
        },
        "managedBy": {
            "name": "Circle Owner",
            "user_id": 5,
            "member_id": 7,
            "is_manager": true
        },
        "remaining": 6000,
        "creator_id": 5,
        "start_date": "2026-10-20T00:00:00.000000Z",
        "allow_swaps": true,
        "circle_code": "SRTHAJHV",
        "taken_turns": 1,
        "total_turns": 1,
        "contributors": 1,
        "names_hidden": false,
        "total_amount": "6000.00",
        "current_cycle": null,
        "payout_method": "central_pot",
        "collector_type": "creator",
        "monthly_amount": "1000.00",
        "duration_months": 6,
        "late_fee_per_day": "0.00",
        "payment_duration": null,
        "receive_duration": null,
        "thisMonthReceiver": null,
        "commission_percent": "0.00",
        "collector_member_id": null
    },
    "message": "Data updated successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/4/start

Start Circle

Start circle

Activate the circle. Owner/Manager/Admin only. Requires all members to have a turn assigned.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 4,
        "name": "Updated Documentation Circle",
        "notes": null,
        "myRole": "manager",
        "status": "active",
        "privacy": "private",
        "currency": "SAR",
        "end_date": "2027-04-19T00:00:00.000000Z",
        "collected": 0,
        "createdBy": {
            "id": 5,
            "name": "Circle Owner"
        },
        "managedBy": {
            "name": "Circle Owner",
            "user_id": 5,
            "member_id": 7,
            "is_manager": true
        },
        "remaining": 6000,
        "creator_id": 5,
        "start_date": "2026-10-20T00:00:00.000000Z",
        "allow_swaps": true,
        "circle_code": "SRTHAJHV",
        "taken_turns": 1,
        "total_turns": 1,
        "contributors": 1,
        "names_hidden": false,
        "total_amount": "6000.00",
        "current_cycle": "Oct, 2026",
        "payout_method": "central_pot",
        "collector_type": "creator",
        "monthly_amount": "1000.00",
        "duration_months": 6,
        "late_fee_per_day": "0.00",
        "payment_duration": null,
        "receive_duration": null,
        "thisMonthReceiver": null,
        "commission_percent": "0.00",
        "collector_member_id": null
    },
    "message": "Circle started successfully.",
    "success": true
}
DELETE /api/v1/mobile/money-circles/16

Delete Circle

Delete circle

Soft-delete a money circle. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/3/invite

Invite Member

Invite to circle

Invite a user to the circle by user id.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
note string Please join my circle.
phone string 500000006

Request Validations Or Notes

Field/Name Examples
phone required, string, exists users,phone
note optional, string
Success (200 OK)
{
    "data": {
        "id": 3,
        "note": "Please join my circle.",
        "user": {
            "id": 10,
            "name": "Invite Target",
            "email": "circle.invitetarget@demo.com",
            "avatar": null,
            "avatar_url": null
        },
        "circle": {
            "id": 3,
            "name": "Invite Circle",
            "currency": "SAR",
            "start_date": "2026-10-20T00:00:00.000000Z",
            "circle_code": "INVVWANR",
            "contributors": 0,
            "total_amount": "6000.00",
            "circle_duration": 6,
            "monthly_payment": "1000.00"
        },
        "status": "pending",
        "inviter": {
            "id": 5,
            "name": "Circle Owner",
            "role": null,
            "email": "circle.owner@demo.com",
            "avatar": "media\/avatars\/circle-owner.jpg",
            "avatar_url": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
        },
        "circle_id": 3,
        "is_active": true,
        "expires_at": null,
        "invited_at": "2026-10-19T07:27:22.000000Z",
        "responded_at": null,
        "invited_by_id": 5,
        "invited_user_id": 10
    },
    "message": "Invitation sent successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/invitations/1/accept

Accept Invitation

Accept invitation

Accept a pending invitation (invited user only).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "note": null,
        "email": null,
        "phone": null,
        "status": "accepted",
        "circle_id": 1,
        "is_active": true,
        "created_at": "2026-10-19T07:14:22.000000Z",
        "deleted_at": null,
        "expires_at": null,
        "invited_at": "2026-10-19T07:14:22.000000Z",
        "updated_at": "2026-10-19T07:27:22.000000Z",
        "responded_at": "2026-10-19T07:27:22.000000Z",
        "invited_by_id": 5,
        "invited_user_id": 6
    },
    "message": "Invitation accepted successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/invitations/2/decline

Decline Invitation

Decline invitation

Decline a pending invitation (invited user only).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Invitation declined successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/my-circle-profile

Get My Circle Profile

My circle profile

Retrieve the authenticated user's circle-specific profile details (member name, avatar, payment method, agreements, and phone number). Circle members only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "phone": "500000001",
        "phone_code": "999",
        "member_name": "Circle Owner",
        "country_code": "TC",
        "member_avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
        "payment_method": "cash",
        "agreed_to_rules": true,
        "agreed_to_privacy": true
    },
    "message": "Member details retrieved successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/profile

Update Member Profile

Update profile

Update the authenticated member's profile settings in the circle. Optionally accepts member_avatar as a file upload.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
member_name string Updated Name
profile_settings array {"payment_method":"cash","agreed_to_rules":true,"agreed_to_privacy":true}

Request Validations Or Notes

Field/Name Examples
member_name required, string, max 100
member_avatar optional, image, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
profile_settings required, array
profile_settings.payment_method required, allowed: visa, cash
profile_settings.agreed_to_rules required, accepted
profile_settings.agreed_to_privacy required, accepted
Success (200 OK)
{
    "data": {
        "phone": "500000001",
        "phone_code": "999",
        "member_name": "Updated Name",
        "country_code": "TC",
        "member_avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
        "payment_method": "cash",
        "agreed_to_rules": true,
        "agreed_to_privacy": true
    },
    "message": "Your profile in the circle has been updated successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/members/2/freeze

Freeze Member

Freeze member

Freeze a member. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "turns": [
            {
                "id": 2,
                "status": "frozen",
                "month_year": "2026-11-19",
                "turn_number": 2,
                "payout_amount": "12000.00"
            },
            {
                "id": 6,
                "status": "frozen",
                "month_year": "2027-03-19",
                "turn_number": 6,
                "payout_amount": "12000.00"
            }
        ],
        "monthly": 1000,
        "user_id": 11,
        "is_admin": false,
        "circle_id": 1,
        "is_frozen": true,
        "joined_at": "2026-10-19T07:14:19.000000Z",
        "is_manager": false,
        "member_name": "Circle Member",
        "is_collector": false,
        "next_payment": "2026-10-01",
        "payment_method": null,
        "agreed_to_rules": false,
        "assigned_to_turn": true,
        "agreed_to_privacy": false,
        "member_phone_number": "999500000007",
        "member_profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg"
    },
    "message": "Member frozen successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/members/2/unfreeze

Unfreeze Member

Unfreeze member

Unfreeze a member. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "turns": [
            {
                "id": 2,
                "status": "upcoming",
                "month_year": "2026-11-19",
                "turn_number": 2,
                "payout_amount": "12000.00"
            },
            {
                "id": 6,
                "status": "upcoming",
                "month_year": "2027-03-19",
                "turn_number": 6,
                "payout_amount": "12000.00"
            }
        ],
        "monthly": 1000,
        "user_id": 11,
        "is_admin": false,
        "circle_id": 1,
        "is_frozen": false,
        "joined_at": "2026-10-19T07:14:19.000000Z",
        "is_manager": false,
        "member_name": "Circle Member",
        "is_collector": false,
        "next_payment": "2026-10-01",
        "payment_method": null,
        "agreed_to_rules": false,
        "assigned_to_turn": true,
        "agreed_to_privacy": false,
        "member_phone_number": "999500000007",
        "member_profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg"
    },
    "message": "Member unfrozen successfully.",
    "success": true
}
DELETE /api/v1/mobile/money-circles/5/members/9/kick

Kick Member

Kick member

Remove an unassigned, non-manager and non-collector member from an editable (published) circle. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Member kicked successfully.",
    "success": true
}
PUT /api/v1/mobile/money-circles/1/members/4/role

Change Member Role

Change role

Change a member's role. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
role string manager

Request Validations Or Notes

Field/Name Examples
role required, allowed: manager
Success (200 OK)
{
    "data": {
        "id": 4,
        "turns": [
            {
                "id": 3,
                "status": "upcoming",
                "month_year": "2026-12-19",
                "turn_number": 3,
                "payout_amount": "12000.00"
            }
        ],
        "monthly": 1000,
        "user_id": 12,
        "is_admin": false,
        "circle_id": 1,
        "is_frozen": false,
        "joined_at": "2026-10-19T07:14:21.000000Z",
        "is_manager": true,
        "member_name": "Circle Payer",
        "is_collector": false,
        "next_payment": "2026-10-01",
        "payment_method": null,
        "agreed_to_rules": false,
        "assigned_to_turn": true,
        "agreed_to_privacy": false,
        "member_phone_number": "999500000008",
        "member_profile_image": null
    },
    "message": "Member role updated successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/payments/pay

Pay Contribution

Submit payment

Submit a contribution for the current cycle. The submitted amount must equal the circle monthly contribution; the seat and receiver are resolved by the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
amount integer 1000
description string Contribution for this cycle

Request Validations Or Notes

Field/Name Examples
amount required, number, min 0
description optional, string, max 500
proof_image_url optional, image, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "id": 3,
        "amount": "1000.00",
        "status": "pending",
        "details": null,
        "paid_at": null,
        "turn_id": 1,
        "due_date": "2026-10-19T00:00:00.000000Z",
        "circle_id": 1,
        "payer_name": "Circle Payer",
        "description": "Contribution for this cycle",
        "confirmed_by": null,
        "payer_member_id": 4,
        "proof_image_url": null,
        "is_group_payment": false,
        "late_fee_applied": "0.00"
    },
    "message": "Payment submitted successfully. Awaiting confirmation.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/payments/pay-group-share

Pay Group Share

Pay group share

Submit a group sub-payment for the current cycle. The authenticated member must belong to the approved group (group_id) and cannot be the group leader. The amount is sent in the body, must be greater than zero, and cannot exceed the circle monthly amount. Optionally accepts proof_image_url as an image file and description. Path parameters: {circle_id} the money circle ID. Body parameters: group_id (required) the approved group ID, amount (required) the sub-payment amount.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
amount integer 500
group_id integer 83
description string Sub-payment for this cycle

Request Validations Or Notes

Field/Name Examples
details optional, array
group_id required, integer, Closure
amount required, number, GroupMemberShareAmount
description optional, string, max 500
proof_image_url optional, image, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "id": 4,
        "amount": "500.00",
        "status": "pending",
        "details": {
            "group_id": 83,
            "group_request_id": 83
        },
        "paid_at": null,
        "turn_id": 1,
        "due_date": "2026-10-19T00:00:00.000000Z",
        "circle_id": 1,
        "payer_name": "Circle Member",
        "description": "Sub-payment for this cycle",
        "confirmed_by": null,
        "payer_member_id": 2,
        "proof_image_url": null,
        "is_group_payment": true,
        "late_fee_applied": "0.00"
    },
    "message": "Payment has been submitted to group successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/payments/1/confirm

Confirm Payment

Confirm payment

Confirm a pending payment. Requires Circle Collector permissions for regular payments, or Group Leader permissions for group sub-payments.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "amount": "1000.00",
        "status": "paid",
        "details": null,
        "paid_at": "2026-10-19T07:28:44.000000Z",
        "turn_id": 1,
        "due_date": "2026-10-26T00:00:00.000000Z",
        "circle_id": 1,
        "payer_name": "Circle Member",
        "description": "Monthly contribution for cycle 1.",
        "confirmed_by": 5,
        "payer_member_id": 2,
        "proof_image_url": null,
        "is_group_payment": false,
        "late_fee_applied": "0.00"
    },
    "message": "Payment confirmed successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/payments/2/reject

Reject Payment

Reject payment

Reject a pending payment. Requires Circle Collector permissions for regular payments, or Group Leader permissions for group sub-payments.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "amount": "1000.00",
        "status": "rejected",
        "details": null,
        "paid_at": null,
        "turn_id": 1,
        "due_date": "2026-11-02T00:00:00.000000Z",
        "circle_id": 1,
        "payer_name": "Circle Member",
        "description": "Contribution flagged for review.",
        "confirmed_by": null,
        "payer_member_id": 2,
        "proof_image_url": null,
        "is_group_payment": false,
        "late_fee_applied": "0.00"
    },
    "message": "Payment rejected.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/payments/1

Get Payment Details

Get payment details

Retrieve details of a specific payment. Circle members only. Path parameters: {circle_id} the money circle ID, {id} the payment ID.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "amount": "1000.00",
        "status": "paid",
        "details": null,
        "paid_at": "2026-10-19T07:28:44.000000Z",
        "turn_id": 1,
        "due_date": "2026-10-26T00:00:00.000000Z",
        "circle_id": 1,
        "payer_name": "Circle Member",
        "description": "Monthly contribution for cycle 1.",
        "confirmed_by": 5,
        "payer_member_id": 2,
        "proof_image_url": null,
        "is_group_payment": false,
        "late_fee_applied": "0.00"
    },
    "message": "Payment details retrieved successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/1/requests/84

Get Request Details

Get request details

Retrieve full details of a specific circle request, including type-specific data (turn details, group members, etc.).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 84,
        "type": "swap",
        "status": "pending",
        "details": {
            "reason": "Travel commitments — need a later payout month.",
            "to_turn": 5,
            "from_turn": 3
        },
        "user_id": null,
        "circle_id": 1,
        "created_at": "2026-10-19T07:29:23.000000Z",
        "to_turn_details": {
            "status": "upcoming",
            "turn_id": 5,
            "month_year": "2027-02-19T00:00:00.000000Z",
            "turn_number": 5,
            "payout_amount": "12000.00"
        },
        "from_turn_details": {
            "status": "upcoming",
            "turn_id": 3,
            "month_year": "2026-12-19T00:00:00.000000Z",
            "turn_number": 3,
            "payout_amount": "12000.00"
        },
        "requester_details": {
            "name": "Circle Member",
            "email": "circle.member@demo.com",
            "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
            "user_id": 11,
            "member_id": 2
        }
    },
    "message": "Request retrieved successfully.",
    "success": true
}
PUT /api/v1/mobile/money-circles/1/requests/84/approve

Approve Request

Approve request

Approve a request. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
message string Approved.
Success (200 OK)
{
    "data": {
        "id": 84,
        "type": "swap",
        "status": "approved",
        "details": {
            "reason": "Travel commitments — need a later payout month.",
            "to_turn": 5,
            "from_turn": 3
        },
        "user_id": null,
        "circle_id": 1,
        "created_at": "2026-10-19T07:29:23.000000Z",
        "resolved_at": "2026-10-19T07:29:24.000000Z",
        "to_turn_details": {
            "status": "upcoming",
            "turn_id": 5,
            "month_year": "2027-02-19T00:00:00.000000Z",
            "turn_number": 5,
            "payout_amount": "12000.00"
        },
        "from_turn_details": {
            "status": "upcoming",
            "turn_id": 3,
            "month_year": "2026-12-19T00:00:00.000000Z",
            "turn_number": 3,
            "payout_amount": "12000.00"
        },
        "requester_details": {
            "name": "Circle Member",
            "email": "circle.member@demo.com",
            "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
            "user_id": 11,
            "member_id": 2
        },
        "admin_response_message": "Approved."
    },
    "message": "Request approved successfully.",
    "success": true
}
PUT /api/v1/mobile/money-circles/1/requests/85/decline

Decline Request

Decline request

Decline a request. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
message string Declined.
Success (200 OK)
{
    "data": {
        "id": 85,
        "type": "swap",
        "status": "declined",
        "details": {
            "reason": "Swap no longer needed — declining this one.",
            "to_turn": 4,
            "from_turn": 2
        },
        "user_id": null,
        "circle_id": 1,
        "created_at": "2026-10-19T07:29:23.000000Z",
        "resolved_at": "2026-10-19T07:29:25.000000Z",
        "to_turn_details": {
            "status": "upcoming",
            "turn_id": 4,
            "month_year": "2027-01-19T00:00:00.000000Z",
            "turn_number": 4,
            "payout_amount": "12000.00"
        },
        "from_turn_details": {
            "status": "upcoming",
            "turn_id": 2,
            "month_year": "2026-11-19T00:00:00.000000Z",
            "turn_number": 2,
            "payout_amount": "12000.00"
        },
        "requester_details": {
            "name": "Circle Member",
            "email": "circle.member@demo.com",
            "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/member-selim.jpg",
            "user_id": 11,
            "member_id": 2
        },
        "admin_response_message": "Declined."
    },
    "message": "Request declined successfully.",
    "success": true
}
DELETE /api/v1/mobile/money-circles/1/requests/86

Cancel Request

Cancel request

Cancel a request.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 86,
        "type": "swap",
        "status": "cancelled",
        "details": {
            "reason": "Changed my mind — removing this one.",
            "to_turn": 6,
            "from_turn": 4
        },
        "user_id": null,
        "circle_id": 1,
        "created_at": "2026-10-19T07:29:23.000000Z",
        "resolved_at": "2026-10-19T07:29:25.000000Z",
        "to_turn_details": {
            "status": "upcoming",
            "turn_id": 6,
            "month_year": "2027-03-19T00:00:00.000000Z",
            "turn_number": 6,
            "payout_amount": "12000.00"
        },
        "from_turn_details": {
            "status": "upcoming",
            "turn_id": 4,
            "month_year": "2027-01-19T00:00:00.000000Z",
            "turn_number": 4,
            "payout_amount": "12000.00"
        },
        "requester_details": {
            "name": "Circle Owner",
            "email": "circle.owner@demo.com",
            "avatar": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg",
            "user_id": 5,
            "member_id": 1
        }
    },
    "message": "Request cancelled successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/turns/assign

Assign Turn

Assign turns

Assign members to turns. Each assignment group contains member_ids (array of circle member IDs) and turn_ids (array of free turn IDs). All selected turns must be unassigned. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
assignments array [{"turn_ids":[21],"member_ids":[2]}]

Request Validations Or Notes

Field/Name Examples
assignments required, array, min 1
assignments[].member_ids required, array, min 1
assignments[].member_ids.* required, integer, exists circle_members,id
assignments[].turn_ids optional, array
assignments[].turn_ids.* required, integer, exists turns,id
assignments[].turns_to_remove optional, array
assignments[].turns_to_remove.* required, integer, exists turns,id
Success (200 OK)
{
    "data": [],
    "message": "Turns assigned successfully.",
    "success": true
}
POST /api/v1/mobile/money-circles/1/turns/assign

Assign Turn With Removal

Assign turn with removal

Assign members to turns while removing them from specified turns first. Use turns_to_remove (array of turn IDs) to free turns occupied by the same members before assigning. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
assignments array [{"turn_ids":[22],"member_ids":[2],"turns_to_remove":[]}]

Request Validations Or Notes

Field/Name Examples
assignments required, array, min 1
assignments[].member_ids required, array, min 1
assignments[].member_ids.* required, integer, exists circle_members,id
assignments[].turn_ids optional, array
assignments[].turn_ids.* required, integer, exists turns,id
assignments[].turns_to_remove optional, array
assignments[].turns_to_remove.* required, integer, exists turns,id
Success (200 OK)
{
    "data": [],
    "message": "Turns assigned successfully.",
    "success": true
}
PUT /api/v1/mobile/money-circles/6/turns/reorder

Reorder Turns

Reorder turns

Reorder the turns of a circle. Owner/Manager/Admin only.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
turns array [9,10,11,12,13,14]

Request Validations Or Notes

Field/Name Examples
turns required, array, min 1
turns[] required, integer
Success (200 OK)
{
    "data": [],
    "message": "Turns reordered successfully.",
    "success": true
}
GET /api/v1/mobile/money-circles/trash

Get Deleted Circles

Trashed circles

List soft-deleted circles.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Documentation Circle",
            "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-18T00:00:00.000000Z",
            "collected": "2500.00",
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 1,
                "is_manager": true
            },
            "remaining": 9500,
            "creator_id": 5,
            "start_date": "2026-10-18T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DOC9SVTY",
            "taken_turns": 9,
            "total_turns": 12,
            "contributors": 5,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                1,
                10,
                20
            ],
            "receive_duration": [
                25
            ],
            "thisMonthReceiver": {
                "name": "Circle Owner",
                "member_id": 1,
                "profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            "commission_percent": "0.00",
            "collector_member_id": 1
        },
        {
            "id": 2,
            "name": "Disposable Circle hn9g",
            "notes": null,
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 5,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DSPXOHDC",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 3,
            "name": "Invite Circle",
            "notes": null,
            "myRole": "member",
            "status": "active",
            "privacy": "private",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "INVVWANR",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 4,
            "name": "Updated Documentation Circle",
            "notes": null,
            "myRole": "manager",
            "status": "active",
            "privacy": "private",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 7,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "SRTHAJHV",
            "taken_turns": 1,
            "total_turns": 1,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 5,
            "name": "Kick Member Circle Demo",
            "notes": null,
            "myRole": "manager",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 8,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "KCK4OANO",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 2,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 6,
            "name": "Published Documentation Circle",
            "notes": null,
            "myRole": "admin",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 10,
                "is_manager": true
            },
            "remaining": 12000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "PUBOKOSB",
            "taken_turns": 0,
            "total_turns": 6,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 7,
            "name": "Monthly Savings",
            "notes": null,
            "myRole": "manager",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-21T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 11,
                "is_manager": true
            },
            "remaining": 12000,
            "creator_id": 5,
            "start_date": "2026-10-21T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "n0EQcvenQM",
            "taken_turns": 1,
            "total_turns": 6,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "2000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                15,
                20
            ],
            "receive_duration": [
                10,
                25
            ],
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 8,
            "name": "Disposable Circle tQTU",
            "notes": null,
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 12,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DSPACY6X",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 9,
            "name": "Disposable Circle C7R1",
            "notes": null,
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 13,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DSPQNXWP",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 10,
            "name": "Disposable Circle QETb",
            "notes": null,
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 15,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DSP98F7M",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        }
    ],
    "message": "Trashed data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 23,
        "per_page": 10,
        "last_page": 3,
        "current_page": 1
    }
}
PATCH /api/v1/mobile/money-circles/23/restore

Restore Circle

Restore circle

Restore a soft-deleted circle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 23,
        "name": "Disposable Circle fYbn",
        "notes": null,
        "myRole": "manager",
        "status": "active",
        "privacy": "public",
        "currency": "SAR",
        "end_date": "2027-04-19T00:00:00.000000Z",
        "collected": 0,
        "createdBy": {
            "id": 5,
            "name": "Circle Owner"
        },
        "managedBy": {
            "name": "Circle Owner",
            "user_id": 5,
            "member_id": 31,
            "is_manager": true
        },
        "remaining": 6000,
        "creator_id": 5,
        "start_date": "2026-10-20T00:00:00.000000Z",
        "allow_swaps": true,
        "circle_code": "DSPXPBAL",
        "taken_turns": 0,
        "total_turns": 0,
        "contributors": 1,
        "names_hidden": false,
        "total_amount": "6000.00",
        "current_cycle": "Oct, 2026",
        "payout_method": "p2p_direct",
        "collector_type": "creator",
        "monthly_amount": "1000.00",
        "duration_months": 6,
        "late_fee_per_day": "0.00",
        "payment_duration": null,
        "receive_duration": null,
        "thisMonthReceiver": null,
        "commission_percent": "0.00",
        "collector_member_id": null
    },
    "message": "Data restored successfully.",
    "success": true
}
DELETE /api/v1/mobile/money-circles/23/force

Permanently Delete Circle

Force delete circle

Permanently delete a circle.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data permanently deleted successfully.",
    "success": true
}

My Circles

GET /api/v1/mobile/my-circles

Get My Circles

My circles

List the circles the authenticated user is a member of (paginated, supports search/sort).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Documentation Circle",
            "notes": "Family savings circle: 6 members contribute 1,000 monthly and take turns receiving the pooled amount.",
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-18T00:00:00.000000Z",
            "collected": "2000.00",
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 1,
                "is_manager": true
            },
            "remaining": 10000,
            "creator_id": 5,
            "start_date": "2026-10-18T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DOC9SVTY",
            "taken_turns": 4,
            "total_turns": 7,
            "contributors": 4,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                1,
                10,
                20
            ],
            "receive_duration": [
                25
            ],
            "thisMonthReceiver": {
                "name": "Circle Owner",
                "member_id": 1,
                "profile_image": "http:\/\/qeei_backend_admin.test\/storage\/media\/avatars\/circle-owner.jpg"
            },
            "commission_percent": "0.00",
            "collector_member_id": 1
        },
        {
            "id": 2,
            "name": "Disposable Circle hn9g",
            "notes": null,
            "myRole": "manager",
            "status": "active",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 5,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "DSPXOHDC",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 3,
            "name": "Invite Circle",
            "notes": null,
            "myRole": "member",
            "status": "active",
            "privacy": "private",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "INVVWANR",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": "Oct, 2026",
            "payout_method": "p2p_direct",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 4,
            "name": "Start Circle Demo",
            "notes": null,
            "myRole": "manager",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 7,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "SRTHAJHV",
            "taken_turns": 1,
            "total_turns": 1,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 5,
            "name": "Kick Member Circle Demo",
            "notes": null,
            "myRole": "manager",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 8,
                "is_manager": true
            },
            "remaining": 6000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "KCK4OANO",
            "taken_turns": 0,
            "total_turns": 0,
            "contributors": 2,
            "names_hidden": false,
            "total_amount": "6000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 6,
            "name": "Published Documentation Circle",
            "notes": null,
            "myRole": "admin",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-19T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 10,
                "is_manager": true
            },
            "remaining": 12000,
            "creator_id": 5,
            "start_date": "2026-10-20T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "PUBOKOSB",
            "taken_turns": 0,
            "total_turns": 6,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "1000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": null,
            "receive_duration": null,
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        },
        {
            "id": 7,
            "name": "Monthly Savings",
            "notes": null,
            "myRole": "manager",
            "status": "published",
            "privacy": "public",
            "currency": "SAR",
            "end_date": "2027-04-21T00:00:00.000000Z",
            "collected": 0,
            "createdBy": {
                "id": 5,
                "name": "Circle Owner"
            },
            "managedBy": {
                "name": "Circle Owner",
                "user_id": 5,
                "member_id": 11,
                "is_manager": true
            },
            "remaining": 12000,
            "creator_id": 5,
            "start_date": "2026-10-21T00:00:00.000000Z",
            "allow_swaps": true,
            "circle_code": "n0EQcvenQM",
            "taken_turns": 1,
            "total_turns": 6,
            "contributors": 1,
            "names_hidden": false,
            "total_amount": "12000.00",
            "current_cycle": null,
            "payout_method": "central_pot",
            "collector_type": "creator",
            "monthly_amount": "2000.00",
            "duration_months": 6,
            "late_fee_per_day": "0.00",
            "payment_duration": [
                15,
                20
            ],
            "receive_duration": [
                10,
                25
            ],
            "thisMonthReceiver": null,
            "commission_percent": "0.00",
            "collector_member_id": null
        }
    ],
    "message": "My circles retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 7,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}

Valuers

GET /api/v1/mobile/valuers

List Valuers

Browse the valuer catalogue.

The valuer catalogue a mobile user browses: only switched on valuers answer, each with its logo, cover, the categories it is registered for, its country, its city, whether it is an individual or a company, and its rating and reviews count. Paginated, and can be narrowed by category, country, city and business type.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 7,
            "img": "http:\/\/qeei_backend_admin.test\/storage\/valuers\/al-nada-valuation.png",
            "name": "Nada Valuation House",
            "cover": null,
            "rating": 4.8,
            "city_id": 4,
            "category": [],
            "location": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "country_id": 2,
            "company_name": "Al Nada Valuation",
            "business_type": "corporate",
            "reviews_count": 342,
            "individual_name": null
        },
        {
            "id": 6,
            "img": null,
            "name": "Documentation Workspace Valuation House",
            "cover": null,
            "rating": 4.5,
            "city_id": 4,
            "category": [],
            "location": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "country_id": 2,
            "company_name": "Documentation Workspace Valuation",
            "business_type": "corporate",
            "reviews_count": 120,
            "individual_name": null
        },
        {
            "id": 4,
            "img": "http:\/\/qeei_backend_admin.test\/storage\/https:\/\/example.com\/xtenant-logo.png",
            "name": "X-Tenant Doc Co",
            "cover": null,
            "rating": 0,
            "city_id": 1,
            "category": [],
            "location": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "country_id": 1,
            "company_name": "Review Co (Updated)",
            "business_type": "corporate",
            "reviews_count": 0,
            "individual_name": null
        },
        {
            "id": 3,
            "img": null,
            "name": "Portal Co",
            "cover": null,
            "rating": 0,
            "city_id": 1,
            "category": [],
            "location": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "country_id": 1,
            "company_name": "Portal Co",
            "business_type": "corporate",
            "reviews_count": 0,
            "individual_name": null
        },
        {
            "id": 2,
            "img": "http:\/\/qeei_backend_admin.test\/storage\/valuers\/profile-co.png",
            "name": "Profile Co",
            "cover": "valuers\/profile-co-cover.png",
            "rating": 4.7,
            "city_id": 4,
            "category": [
                {
                    "id": 4,
                    "icon": "real_estate",
                    "name": "Real Estate Appraisal",
                    "status": true,
                    "valuers": 0,
                    "translate": {
                        "name": {
                            "ar": "تقييم عقاري",
                            "en": "Real Estate Appraisal"
                        },
                        "description": {
                            "ar": "تقييم عقاري",
                            "en": "Real Estate Appraisal"
                        }
                    },
                    "created_at": "2026-10-19",
                    "service_no": 1,
                    "description": "Real Estate Appraisal"
                },
                {
                    "id": 5,
                    "icon": "profile-co-icon.png",
                    "name": "Property",
                    "status": true,
                    "valuers": 1,
                    "translate": {
                        "name": {
                            "ar": "عقارات",
                            "en": "Property"
                        },
                        "description": {
                            "ar": "عقارات",
                            "en": "Property"
                        }
                    },
                    "created_at": "2026-10-19",
                    "service_no": 1,
                    "description": "Property"
                }
            ],
            "location": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "country_id": 2,
            "company_name": "Profile Co",
            "business_type": "corporate",
            "reviews_count": 215,
            "individual_name": null
        },
        {
            "id": 1,
            "img": null,
            "name": "Approve Co",
            "cover": null,
            "rating": 0,
            "city_id": 1,
            "category": [],
            "location": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "country_id": 1,
            "company_name": "Approve Co",
            "business_type": "corporate",
            "reviews_count": 0,
            "individual_name": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 6,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/valuers

List Valuers Filtered By Category

Browse the valuers of one category.

The same catalogue narrowed to the valuers registered for one category, so a category screen can offer the valuers that cover it.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
category_id integer 4
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "img": "http:\/\/qeei_backend_admin.test\/storage\/valuers\/profile-co.png",
            "name": "Profile Co",
            "cover": "valuers\/profile-co-cover.png",
            "rating": 4.7,
            "city_id": 4,
            "category": [
                {
                    "id": 4,
                    "icon": "real_estate",
                    "name": "Real Estate Appraisal",
                    "status": true,
                    "valuers": 0,
                    "translate": {
                        "name": {
                            "ar": "تقييم عقاري",
                            "en": "Real Estate Appraisal"
                        },
                        "description": {
                            "ar": "تقييم عقاري",
                            "en": "Real Estate Appraisal"
                        }
                    },
                    "created_at": "2026-10-19",
                    "service_no": 1,
                    "description": "Real Estate Appraisal"
                },
                {
                    "id": 5,
                    "icon": "profile-co-icon.png",
                    "name": "Property",
                    "status": true,
                    "valuers": 1,
                    "translate": {
                        "name": {
                            "ar": "عقارات",
                            "en": "Property"
                        },
                        "description": {
                            "ar": "عقارات",
                            "en": "Property"
                        }
                    },
                    "created_at": "2026-10-19",
                    "service_no": 1,
                    "description": "Property"
                }
            ],
            "location": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "country_id": 2,
            "company_name": "Profile Co",
            "business_type": "corporate",
            "reviews_count": 215,
            "individual_name": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 1,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/valuers/2/profile

Get Valuer Public Profile

Open a valuer public profile.

The profile a mobile user sees for a valuer: name, logo, cover, rating, reviews count, location, the about-us section as rich text, and the services the valuer offers. Only active valuers are reachable this way.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "logo": "valuers\/profile-co.png",
        "name": "Profile Co",
        "about": "

About Profile Co<\/h2>

Profile Co has been helping families and businesses in the region understand their property value since 2012.<\/p>

  • Licensed by the Real Estate Authority<\/li>
  • More than 2,000 completed reports<\/li>
  • Arabic and English reports<\/li><\/ul>", "cover": "valuers\/profile-co-cover.png", "rating": 4.7, "location": { "city": "Test City", "country": "Documentation country" }, "services": [ { "id": 1, "form": { "id": 1, "name": "Profile Valuation Form", "status": "published", "currency": "SAR", "translate": { "name": { "ar": "نموذج تقييم الملف الشخصي", "en": "Profile Valuation Form" }, "description": { "ar": "نموذج تقييم الملف الشخصي", "en": "Profile Valuation Form" } }, "base_price": 0, "created_at": "2026-10-19", "category_id": 5, "description": "Profile Valuation Form" }, "name": "Documentation Profile Valuation", "tags": [], "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/documentation-profile-valuation.png", "rating": 4.5, "form_id": 1, "benefits": [], "category": { "id": 5, "icon": "profile-co-icon.png", "name": "Property", "status": true, "valuers": 1, "translate": { "name": { "ar": "عقارات", "en": "Property" }, "description": { "ar": "عقارات", "en": "Property" } }, "created_at": "2026-10-19", "service_no": 1, "description": "Property" }, "currency": "SAR", "duration": 48, "features": [ "Licensed valuers", "Report within 48 hours" ], "overview": "A certified property value from Profile Co, delivered in both languages.", "is_active": true, "price_end": 1200, "translate": { "name": { "ar": "توثيق تقييم الملف الشخصي", "en": "Documentation Profile Valuation" }, "overview": { "ar": "قيمة عقارية معتمدة من Profile Co، تُسلّم باللغتين.", "en": "A certified property value from Profile Co, delivered in both languages." }, "description": { "ar": null, "en": null } }, "valuer_id": 2, "created_at": "2026-10-19", "category_id": 5, "description": null, "price_start": 400, "reviews_count": 96 } ], "company_name": "Profile Co", "reviews_count": 215, "individual_name": null }, "message": "Data retrieved successfully.", "success": true }

GET /api/v1/mobile/valuers/2/profile

Get Valuer Public Profile Services Filtered By Category

Open a valuer profile filtered by category.

The same profile answering only the services of the given category, so the profile screen can filter its services without a second call.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
category_id integer 5
Success (200 OK)
{
    "data": {
        "id": 2,
        "logo": "valuers\/profile-co.png",
        "name": "Profile Co",
        "about": "

About Profile Co<\/h2>

Profile Co has been helping families and businesses in the region understand their property value since 2012.<\/p>

  • Licensed by the Real Estate Authority<\/li>
  • More than 2,000 completed reports<\/li>
  • Arabic and English reports<\/li><\/ul>", "cover": "valuers\/profile-co-cover.png", "rating": 4.7, "location": { "city": "Test City", "country": "Documentation country" }, "services": [ { "id": 1, "form": { "id": 1, "name": "Profile Valuation Form", "status": "published", "currency": "SAR", "translate": { "name": { "ar": "نموذج تقييم الملف الشخصي", "en": "Profile Valuation Form" }, "description": { "ar": "نموذج تقييم الملف الشخصي", "en": "Profile Valuation Form" } }, "base_price": 0, "created_at": "2026-10-19", "category_id": 5, "description": "Profile Valuation Form" }, "name": "Documentation Profile Valuation", "tags": [], "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/documentation-profile-valuation.png", "rating": 4.5, "form_id": 1, "benefits": [], "category": { "id": 5, "icon": "profile-co-icon.png", "name": "Property", "status": true, "valuers": 1, "translate": { "name": { "ar": "عقارات", "en": "Property" }, "description": { "ar": "عقارات", "en": "Property" } }, "created_at": "2026-10-19", "service_no": 1, "description": "Property" }, "currency": "SAR", "duration": 48, "features": [ "Licensed valuers", "Report within 48 hours" ], "overview": "A certified property value from Profile Co, delivered in both languages.", "is_active": true, "price_end": 1200, "translate": { "name": { "ar": "توثيق تقييم الملف الشخصي", "en": "Documentation Profile Valuation" }, "overview": { "ar": "قيمة عقارية معتمدة من Profile Co، تُسلّم باللغتين.", "en": "A certified property value from Profile Co, delivered in both languages." }, "description": { "ar": null, "en": null } }, "valuer_id": 2, "created_at": "2026-10-19", "category_id": 5, "description": null, "price_start": 400, "reviews_count": 96 } ], "company_name": "Profile Co", "reviews_count": 215, "individual_name": null }, "message": "Data retrieved successfully.", "success": true }

Valuation Services

GET /api/v1/mobile/valuation-services

Get Valuation Services List

Browse the valuation services catalogue.

Paginated list of the valuation services a mobile user can order. Only services that are switched on and whose form is published are returned. The cards are in data and the page they belong to is in pagination, which carries per_page, current_page, total and last_page. Every card carries the service id with its category id, valuer id and form id, its title, overview and description, the same three fields translated into Arabic and English under translate, its price range with the currency, its expected duration, image, features, rating, reviews count, whether it is switched on, the day it was created, and the nested category, form, benefits, tags and valuer company behind it.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Validations Or Notes

Field/Name Examples
category_id optional, integer, exists categories,id
valuer_id optional, integer, exists valuers,id
per_page optional, integer, min 1, max 100
page optional, integer, min 1
Success (200 OK)
{
    "data": [
        {
            "id": 7,
            "form": {
                "id": 11,
                "name": "Documentation Vehicle Form B",
                "status": "published",
                "currency": "SAR",
                "translate": {
                    "name": {
                        "ar": "Documentation Vehicle Form B",
                        "en": "Documentation Vehicle Form B"
                    },
                    "description": {
                        "ar": "Documentation Vehicle Form B",
                        "en": "Documentation Vehicle Form B"
                    }
                },
                "base_price": 0,
                "created_at": "2026-10-19",
                "category_id": 7,
                "description": "Documentation Vehicle Form B"
            },
            "name": "Documentation Vehicle Valuation Plus",
            "tags": [],
            "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/images\/documentation-vehicle-valuation-plus.png",
            "rating": 4.1,
            "valuer": {
                "id": 7,
                "logo": "valuers\/al-nada-valuation.png",
                "name": "Nada Valuation House",
                "rating": 4.8,
                "location": {
                    "city": "Test City",
                    "country": "Documentation country"
                },
                "company_name": "Al Nada Valuation",
                "reviews_count": 342,
                "individual_name": null
            },
            "form_id": 11,
            "benefits": [],
            "category": {
                "id": 7,
                "icon": "mobile-vehicle-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "duration": 48,
            "features": [
                "Physical site visit"
            ],
            "overview": "Vehicle inspection with a physical site visit.",
            "is_active": true,
            "price_end": 900,
            "translate": {
                "name": {
                    "ar": "توثيق تقييم مركبة بلس",
                    "en": "Documentation Vehicle Valuation Plus"
                },
                "overview": {
                    "ar": "فحص مركبة مع زيارة ميدانية.",
                    "en": "Vehicle inspection with a physical site visit."
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 7,
            "created_at": "2026-10-19",
            "category_id": 7,
            "description": null,
            "price_start": 400,
            "reviews_count": 21
        },
        {
            "id": 6,
            "form": {
                "id": 10,
                "name": "Documentation Vehicle Form A",
                "status": "published",
                "currency": "SAR",
                "translate": {
                    "name": {
                        "ar": "Documentation Vehicle Form A",
                        "en": "Documentation Vehicle Form A"
                    },
                    "description": {
                        "ar": "Documentation Vehicle Form A",
                        "en": "Documentation Vehicle Form A"
                    }
                },
                "base_price": 0,
                "created_at": "2026-10-19",
                "category_id": 7,
                "description": "Documentation Vehicle Form A"
            },
            "name": "Documentation Vehicle Valuation",
            "tags": [],
            "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/images\/documentation-vehicle-valuation.png",
            "rating": 4.3,
            "valuer": {
                "id": 7,
                "logo": "valuers\/al-nada-valuation.png",
                "name": "Nada Valuation House",
                "rating": 4.8,
                "location": {
                    "city": "Test City",
                    "country": "Documentation country"
                },
                "company_name": "Al Nada Valuation",
                "reviews_count": 342,
                "individual_name": null
            },
            "form_id": 10,
            "benefits": [
                {
                    "id": 32,
                    "icon": "shield",
                    "name": "Accredited report",
                    "service_id": 6,
                    "sort_order": 0
                }
            ],
            "category": {
                "id": 7,
                "icon": "mobile-vehicle-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "duration": 24,
            "features": [
                "Same day report"
            ],
            "overview": "Accredited resale value for cars and light commercial vehicles.",
            "is_active": true,
            "price_end": 600,
            "translate": {
                "name": {
                    "ar": "توثيق تقييم مركبة",
                    "en": "Documentation Vehicle Valuation"
                },
                "overview": {
                    "ar": "قيمة إعادة بيع معتمدة للسيارات والمركبات الخفيفة.",
                    "en": "Accredited resale value for cars and light commercial vehicles."
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 7,
            "created_at": "2026-10-19",
            "category_id": 7,
            "description": null,
            "price_start": 250,
            "reviews_count": 64
        },
        {
            "id": 5,
            "form": {
                "id": 9,
                "name": "Documentation Property Form",
                "status": "published",
                "currency": "SAR",
                "translate": {
                    "name": {
                        "ar": "Documentation Property Form",
                        "en": "Documentation Property Form"
                    },
                    "description": {
                        "ar": "Documentation Property Form",
                        "en": "Documentation Property Form"
                    }
                },
                "base_price": 0,
                "created_at": "2026-10-19",
                "category_id": 6,
                "description": "Documentation Property Form"
            },
            "name": "Documentation Property Valuation",
            "tags": [
                {
                    "id": 4,
                    "color": "#0000FF",
                    "status": true,
                    "category": {
                        "id": 6,
                        "icon": "mobile-property-icon.png",
                        "name": "Property",
                        "status": true,
                        "valuers": 1,
                        "translate": {
                            "name": {
                                "ar": "عقارات",
                                "en": "Property"
                            },
                            "description": {
                                "ar": "عقارات",
                                "en": "Property"
                            }
                        },
                        "created_at": "2026-10-19",
                        "service_no": 1,
                        "description": "Property"
                    },
                    "tag_name": "Fast turnaround",
                    "translate": {
                        "tag_name": {
                            "ar": "تسليم سريع",
                            "en": "Fast turnaround"
                        }
                    },
                    "created_at": "2026-10-19"
                }
            ],
            "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/images\/documentation-property-valuation.png",
            "rating": 4.6,
            "valuer": {
                "id": 7,
                "logo": "valuers\/al-nada-valuation.png",
                "name": "Nada Valuation House",
                "rating": 4.8,
                "location": {
                    "city": "Test City",
                    "country": "Documentation country"
                },
                "company_name": "Al Nada Valuation",
                "reviews_count": 342,
                "individual_name": null
            },
            "form_id": 9,
            "benefits": [
                {
                    "id": 30,
                    "icon": "shield",
                    "name": "Accredited report",
                    "service_id": 5,
                    "sort_order": 0
                },
                {
                    "id": 31,
                    "icon": "headset",
                    "name": "Expert support",
                    "service_id": 5,
                    "sort_order": 1
                }
            ],
            "category": {
                "id": 6,
                "icon": "mobile-property-icon.png",
                "name": "Property",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "عقارات",
                        "en": "Property"
                    },
                    "description": {
                        "ar": "عقارات",
                        "en": "Property"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Property"
            },
            "currency": "SAR",
            "duration": 72,
            "features": [
                "Licensed valuers",
                "Report within 48 hours"
            ],
            "overview": "A certified market value for your residential property, delivered by a licensed valuer.",
            "is_active": true,
            "price_end": 1500,
            "translate": {
                "name": {
                    "ar": "توثيق تقييم عقاري",
                    "en": "Documentation Property Valuation"
                },
                "overview": {
                    "ar": "قيمة سوقية معتمدة لعقارك السكني، يقدمها خبير تقييم مرخص.",
                    "en": "A certified market value for your residential property, delivered by a licensed valuer."
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 7,
            "created_at": "2026-10-19",
            "category_id": 6,
            "description": null,
            "price_start": 500,
            "reviews_count": 128
        },
        {
            "id": 1,
            "form": {
                "id": 1,
                "name": "Profile Valuation Form",
                "status": "published",
                "currency": "SAR",
                "translate": {
                    "name": {
                        "ar": "نموذج تقييم الملف الشخصي",
                        "en": "Profile Valuation Form"
                    },
                    "description": {
                        "ar": "نموذج تقييم الملف الشخصي",
                        "en": "Profile Valuation Form"
                    }
                },
                "base_price": 0,
                "created_at": "2026-10-19",
                "category_id": 5,
                "description": "Profile Valuation Form"
            },
            "name": "Documentation Profile Valuation",
            "tags": [],
            "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/documentation-profile-valuation.png",
            "rating": 4.5,
            "valuer": {
                "id": 2,
                "logo": "valuers\/profile-co.png",
                "name": "Profile Co",
                "rating": 4.7,
                "location": {
                    "city": "Test City",
                    "country": "Documentation country"
                },
                "company_name": "Profile Co",
                "reviews_count": 215,
                "individual_name": null
            },
            "form_id": 1,
            "benefits": [],
            "category": {
                "id": 5,
                "icon": "profile-co-icon.png",
                "name": "Property",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "عقارات",
                        "en": "Property"
                    },
                    "description": {
                        "ar": "عقارات",
                        "en": "Property"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Property"
            },
            "currency": "SAR",
            "duration": 48,
            "features": [
                "Licensed valuers",
                "Report within 48 hours"
            ],
            "overview": "A certified property value from Profile Co, delivered in both languages.",
            "is_active": true,
            "price_end": 1200,
            "translate": {
                "name": {
                    "ar": "توثيق تقييم الملف الشخصي",
                    "en": "Documentation Profile Valuation"
                },
                "overview": {
                    "ar": "قيمة عقارية معتمدة من Profile Co، تُسلّم باللغتين.",
                    "en": "A certified property value from Profile Co, delivered in both languages."
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 2,
            "created_at": "2026-10-19",
            "category_id": 5,
            "description": null,
            "price_start": 400,
            "reviews_count": 96
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 4,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/valuation-services

List and filter valuation services

Filter the services list by category.

Returns a paginated list of valuation services for mobile users, with optional filters to narrow the results by service category (category_id) and valuation company (valuer_id). Mobile users can retrieve all available services or filter the list to find services offered by a specific category or valuation company. Use per_page and page to navigate through the results.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
valuer_id integer 7
category_id integer 7

Request Validations Or Notes

Field/Name Examples
category_id optional, integer, exists categories,id
valuer_id optional, integer, exists valuers,id
per_page optional, integer, min 1, max 100
page optional, integer, min 1
Success (200 OK)
{
    "data": [
        {
            "id": 7,
            "form": {
                "id": 11,
                "name": "Documentation Vehicle Form B",
                "status": "published",
                "currency": "SAR",
                "translate": {
                    "name": {
                        "ar": "Documentation Vehicle Form B",
                        "en": "Documentation Vehicle Form B"
                    },
                    "description": {
                        "ar": "Documentation Vehicle Form B",
                        "en": "Documentation Vehicle Form B"
                    }
                },
                "base_price": 0,
                "created_at": "2026-10-19",
                "category_id": 7,
                "description": "Documentation Vehicle Form B"
            },
            "name": "Documentation Vehicle Valuation Plus",
            "tags": [],
            "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/images\/documentation-vehicle-valuation-plus.png",
            "rating": 4.1,
            "valuer": {
                "id": 7,
                "logo": "valuers\/al-nada-valuation.png",
                "name": "Nada Valuation House",
                "rating": 4.8,
                "location": {
                    "city": "Test City",
                    "country": "Documentation country"
                },
                "company_name": "Al Nada Valuation",
                "reviews_count": 342,
                "individual_name": null
            },
            "form_id": 11,
            "benefits": [],
            "category": {
                "id": 7,
                "icon": "mobile-vehicle-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "duration": 48,
            "features": [
                "Physical site visit"
            ],
            "overview": "Vehicle inspection with a physical site visit.",
            "is_active": true,
            "price_end": 900,
            "translate": {
                "name": {
                    "ar": "توثيق تقييم مركبة بلس",
                    "en": "Documentation Vehicle Valuation Plus"
                },
                "overview": {
                    "ar": "فحص مركبة مع زيارة ميدانية.",
                    "en": "Vehicle inspection with a physical site visit."
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 7,
            "created_at": "2026-10-19",
            "category_id": 7,
            "description": null,
            "price_start": 400,
            "reviews_count": 21
        },
        {
            "id": 6,
            "form": {
                "id": 10,
                "name": "Documentation Vehicle Form A",
                "status": "published",
                "currency": "SAR",
                "translate": {
                    "name": {
                        "ar": "Documentation Vehicle Form A",
                        "en": "Documentation Vehicle Form A"
                    },
                    "description": {
                        "ar": "Documentation Vehicle Form A",
                        "en": "Documentation Vehicle Form A"
                    }
                },
                "base_price": 0,
                "created_at": "2026-10-19",
                "category_id": 7,
                "description": "Documentation Vehicle Form A"
            },
            "name": "Documentation Vehicle Valuation",
            "tags": [],
            "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/images\/documentation-vehicle-valuation.png",
            "rating": 4.3,
            "valuer": {
                "id": 7,
                "logo": "valuers\/al-nada-valuation.png",
                "name": "Nada Valuation House",
                "rating": 4.8,
                "location": {
                    "city": "Test City",
                    "country": "Documentation country"
                },
                "company_name": "Al Nada Valuation",
                "reviews_count": 342,
                "individual_name": null
            },
            "form_id": 10,
            "benefits": [
                {
                    "id": 32,
                    "icon": "shield",
                    "name": "Accredited report",
                    "service_id": 6,
                    "sort_order": 0
                }
            ],
            "category": {
                "id": 7,
                "icon": "mobile-vehicle-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "duration": 24,
            "features": [
                "Same day report"
            ],
            "overview": "Accredited resale value for cars and light commercial vehicles.",
            "is_active": true,
            "price_end": 600,
            "translate": {
                "name": {
                    "ar": "توثيق تقييم مركبة",
                    "en": "Documentation Vehicle Valuation"
                },
                "overview": {
                    "ar": "قيمة إعادة بيع معتمدة للسيارات والمركبات الخفيفة.",
                    "en": "Accredited resale value for cars and light commercial vehicles."
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 7,
            "created_at": "2026-10-19",
            "category_id": 7,
            "description": null,
            "price_start": 250,
            "reviews_count": 64
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/valuation-services

Paginate Valuation Services

Page through the services list.

Walks the filtered services list page by page. per_page accepts 1 to 100 items and defaults to 15, and the pagination block reports the per_page, the current_page, the total number of services and the last_page.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
page integer 2
per_page integer 1
category_id integer 7

Request Validations Or Notes

Field/Name Examples
category_id optional, integer, exists categories,id
valuer_id optional, integer, exists valuers,id
per_page optional, integer, min 1, max 100
page optional, integer, min 1
Success (200 OK)
{
    "data": [
        {
            "id": 6,
            "form": {
                "id": 10,
                "name": "Documentation Vehicle Form A",
                "status": "published",
                "currency": "SAR",
                "translate": {
                    "name": {
                        "ar": "Documentation Vehicle Form A",
                        "en": "Documentation Vehicle Form A"
                    },
                    "description": {
                        "ar": "Documentation Vehicle Form A",
                        "en": "Documentation Vehicle Form A"
                    }
                },
                "base_price": 0,
                "created_at": "2026-10-19",
                "category_id": 7,
                "description": "Documentation Vehicle Form A"
            },
            "name": "Documentation Vehicle Valuation",
            "tags": [],
            "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/images\/documentation-vehicle-valuation.png",
            "rating": 4.3,
            "valuer": {
                "id": 7,
                "logo": "valuers\/al-nada-valuation.png",
                "name": "Nada Valuation House",
                "rating": 4.8,
                "location": {
                    "city": "Test City",
                    "country": "Documentation country"
                },
                "company_name": "Al Nada Valuation",
                "reviews_count": 342,
                "individual_name": null
            },
            "form_id": 10,
            "benefits": [
                {
                    "id": 32,
                    "icon": "shield",
                    "name": "Accredited report",
                    "service_id": 6,
                    "sort_order": 0
                }
            ],
            "category": {
                "id": 7,
                "icon": "mobile-vehicle-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "duration": 24,
            "features": [
                "Same day report"
            ],
            "overview": "Accredited resale value for cars and light commercial vehicles.",
            "is_active": true,
            "price_end": 600,
            "translate": {
                "name": {
                    "ar": "توثيق تقييم مركبة",
                    "en": "Documentation Vehicle Valuation"
                },
                "overview": {
                    "ar": "قيمة إعادة بيع معتمدة للسيارات والمركبات الخفيفة.",
                    "en": "Accredited resale value for cars and light commercial vehicles."
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 7,
            "created_at": "2026-10-19",
            "category_id": 7,
            "description": null,
            "price_start": 250,
            "reviews_count": 64
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 1,
        "last_page": 2,
        "current_page": 2
    }
}
GET /api/v1/mobile/valuation-services

Get Valuation Services Empty Result

Handle an empty services list.

Returns an empty data array and a pagination block whose total is 0 when the requested category has no published service yet. The success flag stays true, so an empty catalogue is a valid answer and not an error.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
category_id integer 9
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 0,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/mobile/valuation-services/5

Get Valuer Service Details

View the details of a valuation service and its form.

One valuation service under data, with the same fields as a catalogue card: the service id with its category id, valuer id and form id, its title, overview and description, the same three fields translated into Arabic and English under translate, its price range with the currency, its expected duration, image, features, rating, reviews count, whether it is switched on, the day it was created, and the nested category, benefits, tags and valuer company with its logo, company name, rating, reviews count and location. The form linked to the service is returned with its whole questionnaire, so the app can run the valuation request flow without extra calls: the form id with its category id, valuer id, title, description, translate, status, base price, currency, the day it was created, its nested category, its total number of steps and total number of questions, and every step in order with its step number and its questions in order. A question carries its label, description, placeholder, field type, whether it is required, its sort order, the tag it was linked to, its pricing configuration, and its options with their stored value, label, price adjustment, sort order and whether the option is the default one. A service that is switched off, removed, or whose form is not published answers with 404.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "form": {
            "id": 9,
            "name": "Documentation Property Form",
            "steps": [
                {
                    "id": 5,
                    "title": "Property Details",
                    "form_id": 9,
                    "questions": [
                        {
                            "id": 4,
                            "tag": {
                                "id": 4,
                                "color": "#0000FF",
                                "status": true,
                                "category": {
                                    "id": 6,
                                    "icon": "mobile-property-icon.png",
                                    "name": "Property",
                                    "status": true,
                                    "valuers": 1,
                                    "translate": {
                                        "name": {
                                            "ar": "[MaxDepthReached]",
                                            "en": "[MaxDepthReached]"
                                        },
                                        "description": {
                                            "ar": "[MaxDepthReached]",
                                            "en": "[MaxDepthReached]"
                                        }
                                    },
                                    "created_at": "2026-10-19",
                                    "service_no": 1,
                                    "description": "Property"
                                },
                                "tag_name": "Fast turnaround",
                                "translate": {
                                    "tag_name": {
                                        "ar": "تسليم سريع",
                                        "en": "Fast turnaround"
                                    }
                                },
                                "created_at": "2026-10-19"
                            },
                            "label": "Property type",
                            "tag_id": 4,
                            "options": [
                                {
                                    "id": 3,
                                    "is_default": true,
                                    "sort_order": 1,
                                    "question_id": 4,
                                    "option_label": "Villa",
                                    "option_value": "villa",
                                    "price_adjustment_type": "fixed",
                                    "price_adjustment_value": 0
                                },
                                {
                                    "id": 4,
                                    "is_default": false,
                                    "sort_order": 2,
                                    "question_id": 4,
                                    "option_label": "Apartment",
                                    "option_value": "apartment",
                                    "price_adjustment_type": "percentage",
                                    "price_adjustment_value": 5
                                }
                            ],
                            "step_id": 5,
                            "field_type": "radio",
                            "sort_order": 1,
                            "description": "Choose the kind of property being valued.",
                            "is_required": true,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        },
                        {
                            "id": 5,
                            "tag": null,
                            "label": "Built area",
                            "tag_id": null,
                            "options": [],
                            "step_id": 5,
                            "field_type": "number",
                            "sort_order": 2,
                            "description": null,
                            "is_required": false,
                            "placeholder": "m2",
                            "pricing_type": "per_unit",
                            "pricing_unit": "m2",
                            "pricing_value": 5
                        }
                    ],
                    "step_number": 1
                },
                {
                    "id": 6,
                    "title": "Documents",
                    "form_id": 9,
                    "questions": [
                        {
                            "id": 6,
                            "tag": null,
                            "label": "Attach documents",
                            "tag_id": null,
                            "options": [],
                            "step_id": 6,
                            "field_type": "file",
                            "sort_order": 1,
                            "description": null,
                            "is_required": true,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        }
                    ],
                    "step_number": 2
                }
            ],
            "status": "published",
            "category": {
                "id": 6,
                "icon": "mobile-property-icon.png",
                "name": "Property",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "عقارات",
                        "en": "Property"
                    },
                    "description": {
                        "ar": "عقارات",
                        "en": "Property"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Property"
            },
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "Documentation Property Form",
                    "en": "Documentation Property Form"
                },
                "description": {
                    "ar": "Documentation Property Form",
                    "en": "Documentation Property Form"
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": 6,
            "description": "Documentation Property Form",
            "steps_count": 2,
            "questions_count": 3
        },
        "name": "Documentation Property Valuation",
        "tags": [
            {
                "id": 4,
                "color": "#0000FF",
                "status": true,
                "category": {
                    "id": 6,
                    "icon": "mobile-property-icon.png",
                    "name": "Property",
                    "status": true,
                    "valuers": 1,
                    "translate": {
                        "name": {
                            "ar": "عقارات",
                            "en": "Property"
                        },
                        "description": {
                            "ar": "عقارات",
                            "en": "Property"
                        }
                    },
                    "created_at": "2026-10-19",
                    "service_no": 1,
                    "description": "Property"
                },
                "tag_name": "Fast turnaround",
                "translate": {
                    "tag_name": {
                        "ar": "تسليم سريع",
                        "en": "Fast turnaround"
                    }
                },
                "created_at": "2026-10-19"
            }
        ],
        "image": "http:\/\/qeei_backend_admin.test\/storage\/services\/images\/documentation-property-valuation.png",
        "rating": 4.6,
        "valuer": {
            "id": 7,
            "logo": "valuers\/al-nada-valuation.png",
            "name": "Nada Valuation House",
            "rating": 4.8,
            "location": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "company_name": "Al Nada Valuation",
            "reviews_count": 342,
            "individual_name": null
        },
        "form_id": 9,
        "benefits": [
            {
                "id": 33,
                "icon": "shield",
                "name": "Accredited report",
                "service_id": 5,
                "sort_order": 0
            },
            {
                "id": 34,
                "icon": "headset",
                "name": "Expert support",
                "service_id": 5,
                "sort_order": 1
            }
        ],
        "category": {
            "id": 6,
            "icon": "mobile-property-icon.png",
            "name": "Property",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "عقارات",
                    "en": "Property"
                },
                "description": {
                    "ar": "عقارات",
                    "en": "Property"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Property"
        },
        "currency": "SAR",
        "duration": 72,
        "features": [
            "Licensed valuers",
            "Report within 48 hours"
        ],
        "overview": "A certified market value for your residential property, delivered by a licensed valuer.",
        "is_active": true,
        "price_end": 1500,
        "translate": {
            "name": {
                "ar": "توثيق تقييم عقاري",
                "en": "Documentation Property Valuation"
            },
            "overview": {
                "ar": "قيمة سوقية معتمدة لعقارك السكني، يقدمها خبير تقييم مرخص.",
                "en": "A certified market value for your residential property, delivered by a licensed valuer."
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "valuer_id": 7,
        "created_at": "2026-10-19",
        "category_id": 6,
        "description": null,
        "price_start": 500,
        "reviews_count": 128
    },
    "message": "Data retrieved successfully.",
    "success": true
}

Users

POST /api/v1/mobile/users/register

User Register

Registers a new mobile user and triggers an OTP verification.

Initiates registration. User data is temporarily cached until verification.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
name string New User
email string user@example.com
phone string 01011112222
password string P@ssw0rd123
country_code string 20
password_confirmation string P@ssw0rd123

Request Validations Or Notes

Field/Name Examples
name required, string, min 2, max 100, regex
country_code required, string, Closure
country_id required, exists settings,id
phone required, regex, max 20, unique users,phone, Closure
full_phone optional, string, unique users,phone
email optional, valid email, unique users,email
password required, must match its *_confirmation field, StrongPassword
Success (200 OK)
{
    "data": {
        "otp": 1234
    },
    "message": "Registration OTP sent.",
    "success": true
}
POST /api/v1/mobile/users/login

User Login

Initializes login for a mobile user by verifying credentials.

Validates phone and password. Returns a Bearer token upon success.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
phone string 01011112222
password string P@ssw0rd123
country_code string 20

Request Validations Or Notes

Field/Name Examples
country_code required, string, Closure
phone required, regex, max 20, exists users,phone, Closure
password required, string
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "New User",
        "email": "user@example.com",
        "phone": "01011112222",
        "token": "10|vr2HcutEhjjjZgbhvOit8y348y2L8YtWELWB9Xwp82ff2c57",
        "avatar": null,
        "is_active": true,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "postal_code": null,
        "country_code": "20",
        "main_address": null,
        "last_login_at": "2026-10-19 07:10:44"
    },
    "message": "welcome New User",
    "success": true
}
POST /api/v1/mobile/users/verify

User Verify OTP

Completes the registration or login flow for mobile users by verifying the OTP.

Validates the 6-digit OTP code. For registration, this step persists the user record to the database.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
otp string 1234
phone string 01011112222
country_code string 20

Request Validations Or Notes

Field/Name Examples
country_code required, string, Closure
phone required, regex, max 20, Closure
full_phone optional, string
otp required, 4 digits
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "New User",
        "email": "user@example.com",
        "phone": "01011112222",
        "token": "9|XlOD47QGXA0q0qEvv7CrrI7YkRGe5kh7n8vTJZE4cd0b4929",
        "avatar": null,
        "is_active": true,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "postal_code": null,
        "country_code": "20",
        "main_address": null,
        "last_login_at": null
    },
    "message": "Account verified and created successfully.",
    "success": true
}
POST /api/v1/mobile/users/forget-password

User Forget Password

Sends an OTP to the mobile user phone for password recovery.

Step 1 of password reset: Request an OTP for a registered phone number.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
phone string 01011112222
country_code string 20

Request Validations Or Notes

Field/Name Examples
country_code required, string, Closure
phone required, regex, max 20, Closure
Success (200 OK)
{
    "data": {
        "otp": "1234",
        "token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "OTP for password reset sent.",
    "success": true
}
POST /api/v1/mobile/users/verify-forget-password

User Verify Forgot Password OTP

Verifies the OTP and token for mobile user password recovery.

Step 2 of password reset: Verify the OTP received via SMS along with the temporary token.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
otp string 1234
phone string 01011112222
country_code string 20
change_password_token string SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw

Request Validations Or Notes

Field/Name Examples
country_code required, string, Closure
phone required, regex, max 20, Closure
otp required, 4 digits
full_phone optional, string
change_password_token required, string, Closure
Success (200 OK)
{
    "data": {
        "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "Your Otp Verified successfully.",
    "success": true
}
POST /api/v1/mobile/users/reset-password

User Reset Password

Updates the mobile user password using the provided token.

Step 3 of password reset: Finalize the password reset by providing the new password and the validated token.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
phone string 01011112222
password string NewP@ssw0rd123
country_code string 20
change_password_token string SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw
password_confirmation string NewP@ssw0rd123

Request Validations Or Notes

Field/Name Examples
country_code required, string, Closure
phone required, regex, max 20, Closure
password required, must match its *_confirmation field, StrongPassword, Closure
change_password_token required, string, Closure
Success (200 OK)
{
    "data": [],
    "message": "Password reset successfully.",
    "success": true
}
POST /api/v1/mobile/users/resend-otp

User Resend OTP

Resends a new OTP to the mobile user phone.

Requests a fresh OTP code. Checks both registration cache and database state.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
phone string 01011112222
country_code string 20

Request Validations Or Notes

Field/Name Examples
country_code required, string, Closure
phone required, regex, max 20, Closure
Success (200 OK)
{
    "data": {
        "otp": 1234
    },
    "message": "OTP resent successfully.",
    "success": true
}
GET /api/v1/mobile/users/profile

User Profile

Retrieves the authenticated mobile user profile.

Retrieves the authenticated mobile user profile.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Demo User 2",
        "email": "user2@example.com",
        "phone": "01011113333",
        "token": null,
        "avatar": null,
        "is_active": true,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "postal_code": null,
        "country_code": null,
        "main_address": null,
        "last_login_at": null
    },
    "message": "Profile retrieved successfully.",
    "success": true
}
POST /api/v1/mobile/users/change-password

User Change Password

Updates the password for the authenticated mobile user.

Requires the current (old) password for verification before updating to the new password.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
new_password string NewP@ssw0rd123
old_password string P@ssw0rd123
new_password_confirmation string NewP@ssw0rd123

Request Validations Or Notes

Field/Name Examples
old_password required
new_password required, different, StrongPassword
new_password_confirmation required, same
Success (200 OK)
{
    "data": [],
    "message": "Password changed successfully.",
    "success": true
}
POST /api/v1/mobile/users/profile

User Update Profile

Updates the authenticated mobile user profile with an optional avatar image.

Updates the user's profile details including name, email, phone, and avatar. Avatar must be a valid image.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Updated User Name
email string updated_email@example.com

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
email optional, valid email, unique users,email,1
country_code optional, string, Closure
country_id optional, exists settings,id
phone optional, regex, max 20, unique users,phone,1, Closure
avatar optional, image, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
delete_avatar optional, true/false
postal_code optional, string, max 20
main_address optional, string
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Updated User Name",
        "email": "updated_email@example.com",
        "phone": "01011113333",
        "token": null,
        "avatar": null,
        "is_active": true,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "postal_code": null,
        "country_code": null,
        "main_address": null,
        "last_login_at": null
    },
    "message": "Profile updated successfully.",
    "success": true
}
POST /api/v1/mobile/users/refresh-token

User Refresh Token

Issues a new session token for the authenticated mobile user.

Issues a new session token for the authenticated mobile user.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "user": {
            "id": 1,
            "name": "Updated User Name",
            "email": "updated_email@example.com",
            "phone": "01011113333",
            "token": null,
            "avatar": null,
            "is_active": true,
            "country_id": null,
            "created_at": "2026-10-19T07:10:16.000000Z",
            "expires_in": null,
            "token_type": "Bearer",
            "postal_code": null,
            "main_address": null,
            "last_login_at": null
        },
        "token": "11|pScY1k5l3e2FwTTD0EfsDU4sxJHcwqrrVFaBzIs3f07deb7a",
        "expires_in": null,
        "token_type": "Bearer"
    },
    "message": "New Token",
    "success": true
}
POST /api/v1/mobile/users/logout

User Logout

Logs out the authenticated mobile user and revokes the token.

Logs out the authenticated mobile user and revokes the token.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Good by.",
    "success": true
}
DELETE /api/v1/mobile/users/profile

User Delete Account

Deletes the account of the authenticated mobile user.

Removes the account of the currently authenticated user. The account is soft deleted and every issued access token is revoked, so the user is no longer treated as an active user and cannot sign in again. A Super Admin can still restore it from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Your account has been deleted successfully.",
    "success": true
}

Dashboard API

Authentication

POST /api/v1/login

Admin Login

Authenticates an administrator and returns an access token.

Authenticates an administrator and returns an access token.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
step integer 1
email string admin@base.com
password string P@ssw0rd

Request Validations Or Notes

Field/Name Examples
step required, integer, allowed: 1, 2
email required, valid email, exists admins,email
password required if step = 1, StrongPassword
otp required if step = 2, 4 digits
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Admin",
        "email": "admin@base.com",
        "phone": "000000000000",
        "roles": [
            {
                "id": 1,
                "name": "Default Role"
            },
            {
                "id": 2,
                "name": "Super Admin Role "
            }
        ],
        "token": "8|ueXke3BmVZg6Y0x4vyK03fndrNYej1ZnRwnAqVrue22790b9",
        "avatar": "",
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "permissions": [
            "users-fetch",
            "users-create",
            "users-read",
            "users-update",
            "users-delete",
            "valuers-fetch",
            "valuers-create",
            "valuers-read",
            "valuers-update",
            "valuers-delete",
            "requests-fetch",
            "requests-create",
            "requests-read",
            "requests-update",
            "requests-delete",
            "reports-fetch",
            "reports-create",
            "reports-read",
            "reports-update",
            "reports-delete",
            "team_management-fetch",
            "team_management-create",
            "team_management-read",
            "team_management-update",
            "team_management-delete",
            "finance-fetch",
            "finance-create",
            "finance-read",
            "finance-update",
            "finance-delete",
            "reviews-fetch",
            "reviews-create",
            "reviews-read",
            "reviews-update",
            "reviews-delete",
            "users-fetch",
            "users-create",
            "users-read",
            "users-update",
            "users-delete",
            "valuers-fetch",
            "valuers-create",
            "valuers-read",
            "valuers-update",
            "valuers-delete",
            "requests-fetch",
            "requests-create",
            "requests-read",
            "requests-update",
            "requests-delete",
            "reports-fetch",
            "reports-create",
            "reports-read",
            "reports-update",
            "reports-delete",
            "team_management-fetch",
            "team_management-create",
            "team_management-read",
            "team_management-update",
            "team_management-delete",
            "finance-fetch",
            "finance-create",
            "finance-read",
            "finance-update",
            "finance-delete",
            "reviews-fetch",
            "reviews-create",
            "reviews-read",
            "reviews-update",
            "reviews-delete"
        ]
    },
    "message": "welcome Admin",
    "success": true
}
POST /api/v1/reset-password

Reset Password

Complete password reset.

Reset the account password by providing the OTP received and the new password.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
email string doc-admin@base.com
password string NewP@ssw0rd123
change_password_token string SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw
new_password_confirmation string NewP@ssw0rd123
Success (200 OK)
{
    "data": [],
    "message": "Password reset successfully.",
    "success": true
}
POST /api/v1/login

Login

Standard mobile login.

Authenticate using phone number and password. Returns a Bearer token upon success.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
step integer 1
email string doc-admin@base.com
password string P@ssw0rd123
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Documentation Admin",
        "email": "doc-admin@base.com",
        "phone": "01699614601",
        "roles": [],
        "token": "13|oAsg1ZEjAREIULGSUsnTkpVtdWdRYnoRtMA1pV93a3c7640c",
        "avatar": null,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "permissions": []
    },
    "message": "welcome Documentation Admin",
    "success": true
}
POST /api/v1/forget-password

Forget Password

Request reset OTP.

Request a password reset OTP by providing the registered phone number.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
email string doc-admin@base.com
Success (200 OK)
{
    "data": {
        "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "Please check your email",
    "success": true
}
POST /api/v1/verify-forget-password-otp

Verify Forget Password OTP

Verify reset OTP.

Verify the OTP received for password reset.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
otp string 1234
email string doc-admin@base.com
change_password_token string SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw
Success (200 OK)
{
    "data": {
        "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "Your Otp Verified successfully.",
    "success": true
}
POST /api/v1/resend-otp

Resend OTP

Resend verification code.

Request a new OTP code if the previous one expired or was not received. Works for both pending registrations and existing users.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
email string doc-admin@base.com
Success (200 OK)
{
    "data": {
        "otp": 1234
    },
    "message": "OTP resent successfully.",
    "success": true
}
POST /api/v1/logout

Logout

Admin logout.

Log out the currently authenticated admin and invalidate the token.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Good by.",
    "success": true
}
POST /api/v1/forget-password

Forget Password Request

Sends an OTP to the user email for password recovery.

Sends an OTP to the user email for password recovery.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
email string admin@base.com

Request Validations Or Notes

Field/Name Examples
email required, valid email, exists admins,email
Success (200 OK)
{
    "data": {
        "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "Please check your email",
    "success": true
}
POST /api/v1/verify-forget-password-otp

Verify OTP

Verifies the OTP sent to the user email for password recovery.

Verifies the OTP sent to the user email for password recovery.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
otp string 1234
email string admin@base.com
change_password_token string SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw

Request Validations Or Notes

Field/Name Examples
country_code required, string, Closure
phone required, regex, max 20, Closure
otp required, 4 digits
full_phone optional, string
change_password_token required, string, Closure
Success (200 OK)
{
    "data": {
        "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "Your Otp Verified successfully.",
    "success": true
}
POST /api/v1/logout

Admin Logout

Revokes the current access token and logs the user out.

Revokes the current access token and logs the user out.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Good by.",
    "success": true
}

Resend Forgot Password Otp

POST /api/v1/resend-forgot-password-otp

Resend Forgot Password OTP

Resend reset code.

Request a new reset OTP if the previous one expired or was not received. Works exactly like the forget-password endpoint (same validation), regenerates the OTP and returns a fresh change-password token.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
email string doc-admin@base.com
Success (200 OK)
{
    "data": {
        "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "Please check your email",
    "success": true
}

Administration

POST /api/v1/dashboard/admins

Create Admin

Create a new Admin.

Creates a new Admin in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Admin LHATIS
email string admin+lHaTIS@gmail.com
phone string 01115534901
roles array [{"role_id":1},{"role_id":2}]
avatar NULL
password string P@ss0rd
job_title string Administrator
description array {"ar":"\u0648\u0635\u0641 \u0627\u0644\u0645\u0633\u0624\u0648\u0644","en":"Admin description"}
contract_type string full_time
password_confirmation string P@ss0rd

Request Validations Or Notes

Field/Name Examples
name required, string, min 2, max 100, regex
email required, valid email, regex, unique admins,email
phone required, regex, min 9, max 20, unique admins,phone
password required, must match its *_confirmation field, StrongPassword
password_confirmation required, same
avatar optional, image, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
is_active optional, true/false
roles required, array, min 1
roles[].role_id required, integer, exists roles,id
job_title required, string, min 2, max 100
contract_type required, string, min 2, max 100, allowed: full_time, part_time
Success (200 OK)
{
    "data": {
        "id": 4,
        "name": "Admin LHATIS",
        "email": "admin+lHaTIS@gmail.com",
        "phone": "01115534901",
        "roles": [
            {
                "id": 1,
                "name": "Default Role",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Default Role"
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Default Role Description",
                "permissions": [
                    {
                        "id": 1,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 2,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 3,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 4,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 5,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 6,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 7,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 8,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 9,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 10,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 11,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 12,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 13,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 14,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 15,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 16,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 17,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 18,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 19,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 20,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 21,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 22,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 23,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 24,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 25,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 26,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 27,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 28,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 29,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 30,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 31,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 32,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 33,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 34,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 35,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            },
            {
                "id": 2,
                "name": "Super Admin Role ",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Super Admin Role "
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Super Admin Role Description",
                "permissions": [
                    {
                        "id": 36,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 37,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 38,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 39,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 40,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 41,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 42,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 43,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 44,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 45,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 46,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 47,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 48,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 49,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 50,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 51,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 52,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 53,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 54,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 55,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 56,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 57,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 58,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 59,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 60,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 61,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 62,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 63,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 64,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 65,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 66,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 67,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 68,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 69,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 70,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            }
        ],
        "avatar": null,
        "is_active": false,
        "job_title": "Administrator",
        "created_at": "2026-10-19",
        "contract_type": "full_time",
        "last_login_at": null
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/dashboard/admins

Get Admin List

Retrieve a list of Admin.

Retrieves a list of Admin records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Admin",
            "email": "admin@base.com",
            "phone": "000000000000",
            "roles": [
                {
                    "id": 1,
                    "name": "Default Role",
                    "is_active": true,
                    "translate": {
                        "name": {
                            "ar": "دور تقليدى",
                            "en": "Default Role"
                        },
                        "description": {
                            "ar": "وصف الدور التقليدى",
                            "en": "Default Role Description"
                        }
                    },
                    "created_at": "2026-10-19",
                    "description": "Default Role Description",
                    "permissions": [
                        {
                            "id": 1,
                            "name": "users-fetch",
                            "title": "Fetch Data",
                            "model_id": 1,
                            "permission_id": 1
                        },
                        {
                            "id": 2,
                            "name": "users-create",
                            "title": "Create Data",
                            "model_id": 1,
                            "permission_id": 2
                        },
                        {
                            "id": 3,
                            "name": "users-read",
                            "title": "Read Data",
                            "model_id": 1,
                            "permission_id": 3
                        },
                        {
                            "id": 4,
                            "name": "users-update",
                            "title": "Update Data",
                            "model_id": 1,
                            "permission_id": 4
                        },
                        {
                            "id": 5,
                            "name": "users-delete",
                            "title": "Delete Data",
                            "model_id": 1,
                            "permission_id": 5
                        },
                        {
                            "id": 6,
                            "name": "valuers-fetch",
                            "title": "Fetch Data",
                            "model_id": 2,
                            "permission_id": 1
                        },
                        {
                            "id": 7,
                            "name": "valuers-create",
                            "title": "Create Data",
                            "model_id": 2,
                            "permission_id": 2
                        },
                        {
                            "id": 8,
                            "name": "valuers-read",
                            "title": "Read Data",
                            "model_id": 2,
                            "permission_id": 3
                        },
                        {
                            "id": 9,
                            "name": "valuers-update",
                            "title": "Update Data",
                            "model_id": 2,
                            "permission_id": 4
                        },
                        {
                            "id": 10,
                            "name": "valuers-delete",
                            "title": "Delete Data",
                            "model_id": 2,
                            "permission_id": 5
                        },
                        {
                            "id": 11,
                            "name": "requests-fetch",
                            "title": "Fetch Data",
                            "model_id": 3,
                            "permission_id": 1
                        },
                        {
                            "id": 12,
                            "name": "requests-create",
                            "title": "Create Data",
                            "model_id": 3,
                            "permission_id": 2
                        },
                        {
                            "id": 13,
                            "name": "requests-read",
                            "title": "Read Data",
                            "model_id": 3,
                            "permission_id": 3
                        },
                        {
                            "id": 14,
                            "name": "requests-update",
                            "title": "Update Data",
                            "model_id": 3,
                            "permission_id": 4
                        },
                        {
                            "id": 15,
                            "name": "requests-delete",
                            "title": "Delete Data",
                            "model_id": 3,
                            "permission_id": 5
                        },
                        {
                            "id": 16,
                            "name": "reports-fetch",
                            "title": "Fetch Data",
                            "model_id": 4,
                            "permission_id": 1
                        },
                        {
                            "id": 17,
                            "name": "reports-create",
                            "title": "Create Data",
                            "model_id": 4,
                            "permission_id": 2
                        },
                        {
                            "id": 18,
                            "name": "reports-read",
                            "title": "Read Data",
                            "model_id": 4,
                            "permission_id": 3
                        },
                        {
                            "id": 19,
                            "name": "reports-update",
                            "title": "Update Data",
                            "model_id": 4,
                            "permission_id": 4
                        },
                        {
                            "id": 20,
                            "name": "reports-delete",
                            "title": "Delete Data",
                            "model_id": 4,
                            "permission_id": 5
                        },
                        {
                            "id": 21,
                            "name": "team_management-fetch",
                            "title": "Fetch Data",
                            "model_id": 5,
                            "permission_id": 1
                        },
                        {
                            "id": 22,
                            "name": "team_management-create",
                            "title": "Create Data",
                            "model_id": 5,
                            "permission_id": 2
                        },
                        {
                            "id": 23,
                            "name": "team_management-read",
                            "title": "Read Data",
                            "model_id": 5,
                            "permission_id": 3
                        },
                        {
                            "id": 24,
                            "name": "team_management-update",
                            "title": "Update Data",
                            "model_id": 5,
                            "permission_id": 4
                        },
                        {
                            "id": 25,
                            "name": "team_management-delete",
                            "title": "Delete Data",
                            "model_id": 5,
                            "permission_id": 5
                        },
                        {
                            "id": 26,
                            "name": "finance-fetch",
                            "title": "Fetch Data",
                            "model_id": 6,
                            "permission_id": 1
                        },
                        {
                            "id": 27,
                            "name": "finance-create",
                            "title": "Create Data",
                            "model_id": 6,
                            "permission_id": 2
                        },
                        {
                            "id": 28,
                            "name": "finance-read",
                            "title": "Read Data",
                            "model_id": 6,
                            "permission_id": 3
                        },
                        {
                            "id": 29,
                            "name": "finance-update",
                            "title": "Update Data",
                            "model_id": 6,
                            "permission_id": 4
                        },
                        {
                            "id": 30,
                            "name": "finance-delete",
                            "title": "Delete Data",
                            "model_id": 6,
                            "permission_id": 5
                        },
                        {
                            "id": 31,
                            "name": "reviews-fetch",
                            "title": "Fetch Data",
                            "model_id": 7,
                            "permission_id": 1
                        },
                        {
                            "id": 32,
                            "name": "reviews-create",
                            "title": "Create Data",
                            "model_id": 7,
                            "permission_id": 2
                        },
                        {
                            "id": 33,
                            "name": "reviews-read",
                            "title": "Read Data",
                            "model_id": 7,
                            "permission_id": 3
                        },
                        {
                            "id": 34,
                            "name": "reviews-update",
                            "title": "Update Data",
                            "model_id": 7,
                            "permission_id": 4
                        },
                        {
                            "id": 35,
                            "name": "reviews-delete",
                            "title": "Delete Data",
                            "model_id": 7,
                            "permission_id": 5
                        }
                    ],
                    "admins_count": 2,
                    "permissions_count": 35
                },
                {
                    "id": 2,
                    "name": "Super Admin Role ",
                    "is_active": true,
                    "translate": {
                        "name": {
                            "ar": "دور تقليدى",
                            "en": "Super Admin Role "
                        },
                        "description": {
                            "ar": "وصف الدور التقليدى",
                            "en": "Default Role Description"
                        }
                    },
                    "created_at": "2026-10-19",
                    "description": "Super Admin Role Description",
                    "permissions": [
                        {
                            "id": 36,
                            "name": "users-fetch",
                            "title": "Fetch Data",
                            "model_id": 1,
                            "permission_id": 1
                        },
                        {
                            "id": 37,
                            "name": "users-create",
                            "title": "Create Data",
                            "model_id": 1,
                            "permission_id": 2
                        },
                        {
                            "id": 38,
                            "name": "users-read",
                            "title": "Read Data",
                            "model_id": 1,
                            "permission_id": 3
                        },
                        {
                            "id": 39,
                            "name": "users-update",
                            "title": "Update Data",
                            "model_id": 1,
                            "permission_id": 4
                        },
                        {
                            "id": 40,
                            "name": "users-delete",
                            "title": "Delete Data",
                            "model_id": 1,
                            "permission_id": 5
                        },
                        {
                            "id": 41,
                            "name": "valuers-fetch",
                            "title": "Fetch Data",
                            "model_id": 2,
                            "permission_id": 1
                        },
                        {
                            "id": 42,
                            "name": "valuers-create",
                            "title": "Create Data",
                            "model_id": 2,
                            "permission_id": 2
                        },
                        {
                            "id": 43,
                            "name": "valuers-read",
                            "title": "Read Data",
                            "model_id": 2,
                            "permission_id": 3
                        },
                        {
                            "id": 44,
                            "name": "valuers-update",
                            "title": "Update Data",
                            "model_id": 2,
                            "permission_id": 4
                        },
                        {
                            "id": 45,
                            "name": "valuers-delete",
                            "title": "Delete Data",
                            "model_id": 2,
                            "permission_id": 5
                        },
                        {
                            "id": 46,
                            "name": "requests-fetch",
                            "title": "Fetch Data",
                            "model_id": 3,
                            "permission_id": 1
                        },
                        {
                            "id": 47,
                            "name": "requests-create",
                            "title": "Create Data",
                            "model_id": 3,
                            "permission_id": 2
                        },
                        {
                            "id": 48,
                            "name": "requests-read",
                            "title": "Read Data",
                            "model_id": 3,
                            "permission_id": 3
                        },
                        {
                            "id": 49,
                            "name": "requests-update",
                            "title": "Update Data",
                            "model_id": 3,
                            "permission_id": 4
                        },
                        {
                            "id": 50,
                            "name": "requests-delete",
                            "title": "Delete Data",
                            "model_id": 3,
                            "permission_id": 5
                        },
                        {
                            "id": 51,
                            "name": "reports-fetch",
                            "title": "Fetch Data",
                            "model_id": 4,
                            "permission_id": 1
                        },
                        {
                            "id": 52,
                            "name": "reports-create",
                            "title": "Create Data",
                            "model_id": 4,
                            "permission_id": 2
                        },
                        {
                            "id": 53,
                            "name": "reports-read",
                            "title": "Read Data",
                            "model_id": 4,
                            "permission_id": 3
                        },
                        {
                            "id": 54,
                            "name": "reports-update",
                            "title": "Update Data",
                            "model_id": 4,
                            "permission_id": 4
                        },
                        {
                            "id": 55,
                            "name": "reports-delete",
                            "title": "Delete Data",
                            "model_id": 4,
                            "permission_id": 5
                        },
                        {
                            "id": 56,
                            "name": "team_management-fetch",
                            "title": "Fetch Data",
                            "model_id": 5,
                            "permission_id": 1
                        },
                        {
                            "id": 57,
                            "name": "team_management-create",
                            "title": "Create Data",
                            "model_id": 5,
                            "permission_id": 2
                        },
                        {
                            "id": 58,
                            "name": "team_management-read",
                            "title": "Read Data",
                            "model_id": 5,
                            "permission_id": 3
                        },
                        {
                            "id": 59,
                            "name": "team_management-update",
                            "title": "Update Data",
                            "model_id": 5,
                            "permission_id": 4
                        },
                        {
                            "id": 60,
                            "name": "team_management-delete",
                            "title": "Delete Data",
                            "model_id": 5,
                            "permission_id": 5
                        },
                        {
                            "id": 61,
                            "name": "finance-fetch",
                            "title": "Fetch Data",
                            "model_id": 6,
                            "permission_id": 1
                        },
                        {
                            "id": 62,
                            "name": "finance-create",
                            "title": "Create Data",
                            "model_id": 6,
                            "permission_id": 2
                        },
                        {
                            "id": 63,
                            "name": "finance-read",
                            "title": "Read Data",
                            "model_id": 6,
                            "permission_id": 3
                        },
                        {
                            "id": 64,
                            "name": "finance-update",
                            "title": "Update Data",
                            "model_id": 6,
                            "permission_id": 4
                        },
                        {
                            "id": 65,
                            "name": "finance-delete",
                            "title": "Delete Data",
                            "model_id": 6,
                            "permission_id": 5
                        },
                        {
                            "id": 66,
                            "name": "reviews-fetch",
                            "title": "Fetch Data",
                            "model_id": 7,
                            "permission_id": 1
                        },
                        {
                            "id": 67,
                            "name": "reviews-create",
                            "title": "Create Data",
                            "model_id": 7,
                            "permission_id": 2
                        },
                        {
                            "id": 68,
                            "name": "reviews-read",
                            "title": "Read Data",
                            "model_id": 7,
                            "permission_id": 3
                        },
                        {
                            "id": 69,
                            "name": "reviews-update",
                            "title": "Update Data",
                            "model_id": 7,
                            "permission_id": 4
                        },
                        {
                            "id": 70,
                            "name": "reviews-delete",
                            "title": "Delete Data",
                            "model_id": 7,
                            "permission_id": 5
                        }
                    ],
                    "admins_count": 2,
                    "permissions_count": 35
                }
            ],
            "avatar": null,
            "is_active": true,
            "job_title": null,
            "created_at": "2026-10-19",
            "contract_type": null,
            "last_login_at": "2026-10-19 07:11 AM"
        },
        {
            "id": 2,
            "name": "Documentation Target Admin",
            "email": "documentation-target@base.com",
            "phone": "01617664049",
            "roles": [],
            "avatar": null,
            "is_active": true,
            "job_title": "Administrator",
            "created_at": "2026-10-19",
            "contract_type": "full_time",
            "last_login_at": null
        },
        {
            "id": 3,
            "name": "Documentation Admin",
            "email": "doc-admin@base.com",
            "phone": "01692137354",
            "roles": [],
            "avatar": null,
            "is_active": true,
            "job_title": "Administrator",
            "created_at": "2026-10-19",
            "contract_type": "full_time",
            "last_login_at": "2026-10-19 07:11 AM"
        },
        {
            "id": 4,
            "name": "Admin LHATIS",
            "email": "admin+lHaTIS@gmail.com",
            "phone": "01115534901",
            "roles": [
                {
                    "id": 1,
                    "name": "Default Role",
                    "is_active": true,
                    "translate": {
                        "name": {
                            "ar": "دور تقليدى",
                            "en": "Default Role"
                        },
                        "description": {
                            "ar": "وصف الدور التقليدى",
                            "en": "Default Role Description"
                        }
                    },
                    "created_at": "2026-10-19",
                    "description": "Default Role Description",
                    "permissions": [
                        {
                            "id": 1,
                            "name": "users-fetch",
                            "title": "Fetch Data",
                            "model_id": 1,
                            "permission_id": 1
                        },
                        {
                            "id": 2,
                            "name": "users-create",
                            "title": "Create Data",
                            "model_id": 1,
                            "permission_id": 2
                        },
                        {
                            "id": 3,
                            "name": "users-read",
                            "title": "Read Data",
                            "model_id": 1,
                            "permission_id": 3
                        },
                        {
                            "id": 4,
                            "name": "users-update",
                            "title": "Update Data",
                            "model_id": 1,
                            "permission_id": 4
                        },
                        {
                            "id": 5,
                            "name": "users-delete",
                            "title": "Delete Data",
                            "model_id": 1,
                            "permission_id": 5
                        },
                        {
                            "id": 6,
                            "name": "valuers-fetch",
                            "title": "Fetch Data",
                            "model_id": 2,
                            "permission_id": 1
                        },
                        {
                            "id": 7,
                            "name": "valuers-create",
                            "title": "Create Data",
                            "model_id": 2,
                            "permission_id": 2
                        },
                        {
                            "id": 8,
                            "name": "valuers-read",
                            "title": "Read Data",
                            "model_id": 2,
                            "permission_id": 3
                        },
                        {
                            "id": 9,
                            "name": "valuers-update",
                            "title": "Update Data",
                            "model_id": 2,
                            "permission_id": 4
                        },
                        {
                            "id": 10,
                            "name": "valuers-delete",
                            "title": "Delete Data",
                            "model_id": 2,
                            "permission_id": 5
                        },
                        {
                            "id": 11,
                            "name": "requests-fetch",
                            "title": "Fetch Data",
                            "model_id": 3,
                            "permission_id": 1
                        },
                        {
                            "id": 12,
                            "name": "requests-create",
                            "title": "Create Data",
                            "model_id": 3,
                            "permission_id": 2
                        },
                        {
                            "id": 13,
                            "name": "requests-read",
                            "title": "Read Data",
                            "model_id": 3,
                            "permission_id": 3
                        },
                        {
                            "id": 14,
                            "name": "requests-update",
                            "title": "Update Data",
                            "model_id": 3,
                            "permission_id": 4
                        },
                        {
                            "id": 15,
                            "name": "requests-delete",
                            "title": "Delete Data",
                            "model_id": 3,
                            "permission_id": 5
                        },
                        {
                            "id": 16,
                            "name": "reports-fetch",
                            "title": "Fetch Data",
                            "model_id": 4,
                            "permission_id": 1
                        },
                        {
                            "id": 17,
                            "name": "reports-create",
                            "title": "Create Data",
                            "model_id": 4,
                            "permission_id": 2
                        },
                        {
                            "id": 18,
                            "name": "reports-read",
                            "title": "Read Data",
                            "model_id": 4,
                            "permission_id": 3
                        },
                        {
                            "id": 19,
                            "name": "reports-update",
                            "title": "Update Data",
                            "model_id": 4,
                            "permission_id": 4
                        },
                        {
                            "id": 20,
                            "name": "reports-delete",
                            "title": "Delete Data",
                            "model_id": 4,
                            "permission_id": 5
                        },
                        {
                            "id": 21,
                            "name": "team_management-fetch",
                            "title": "Fetch Data",
                            "model_id": 5,
                            "permission_id": 1
                        },
                        {
                            "id": 22,
                            "name": "team_management-create",
                            "title": "Create Data",
                            "model_id": 5,
                            "permission_id": 2
                        },
                        {
                            "id": 23,
                            "name": "team_management-read",
                            "title": "Read Data",
                            "model_id": 5,
                            "permission_id": 3
                        },
                        {
                            "id": 24,
                            "name": "team_management-update",
                            "title": "Update Data",
                            "model_id": 5,
                            "permission_id": 4
                        },
                        {
                            "id": 25,
                            "name": "team_management-delete",
                            "title": "Delete Data",
                            "model_id": 5,
                            "permission_id": 5
                        },
                        {
                            "id": 26,
                            "name": "finance-fetch",
                            "title": "Fetch Data",
                            "model_id": 6,
                            "permission_id": 1
                        },
                        {
                            "id": 27,
                            "name": "finance-create",
                            "title": "Create Data",
                            "model_id": 6,
                            "permission_id": 2
                        },
                        {
                            "id": 28,
                            "name": "finance-read",
                            "title": "Read Data",
                            "model_id": 6,
                            "permission_id": 3
                        },
                        {
                            "id": 29,
                            "name": "finance-update",
                            "title": "Update Data",
                            "model_id": 6,
                            "permission_id": 4
                        },
                        {
                            "id": 30,
                            "name": "finance-delete",
                            "title": "Delete Data",
                            "model_id": 6,
                            "permission_id": 5
                        },
                        {
                            "id": 31,
                            "name": "reviews-fetch",
                            "title": "Fetch Data",
                            "model_id": 7,
                            "permission_id": 1
                        },
                        {
                            "id": 32,
                            "name": "reviews-create",
                            "title": "Create Data",
                            "model_id": 7,
                            "permission_id": 2
                        },
                        {
                            "id": 33,
                            "name": "reviews-read",
                            "title": "Read Data",
                            "model_id": 7,
                            "permission_id": 3
                        },
                        {
                            "id": 34,
                            "name": "reviews-update",
                            "title": "Update Data",
                            "model_id": 7,
                            "permission_id": 4
                        },
                        {
                            "id": 35,
                            "name": "reviews-delete",
                            "title": "Delete Data",
                            "model_id": 7,
                            "permission_id": 5
                        }
                    ],
                    "admins_count": 2,
                    "permissions_count": 35
                },
                {
                    "id": 2,
                    "name": "Super Admin Role ",
                    "is_active": true,
                    "translate": {
                        "name": {
                            "ar": "دور تقليدى",
                            "en": "Super Admin Role "
                        },
                        "description": {
                            "ar": "وصف الدور التقليدى",
                            "en": "Default Role Description"
                        }
                    },
                    "created_at": "2026-10-19",
                    "description": "Super Admin Role Description",
                    "permissions": [
                        {
                            "id": 36,
                            "name": "users-fetch",
                            "title": "Fetch Data",
                            "model_id": 1,
                            "permission_id": 1
                        },
                        {
                            "id": 37,
                            "name": "users-create",
                            "title": "Create Data",
                            "model_id": 1,
                            "permission_id": 2
                        },
                        {
                            "id": 38,
                            "name": "users-read",
                            "title": "Read Data",
                            "model_id": 1,
                            "permission_id": 3
                        },
                        {
                            "id": 39,
                            "name": "users-update",
                            "title": "Update Data",
                            "model_id": 1,
                            "permission_id": 4
                        },
                        {
                            "id": 40,
                            "name": "users-delete",
                            "title": "Delete Data",
                            "model_id": 1,
                            "permission_id": 5
                        },
                        {
                            "id": 41,
                            "name": "valuers-fetch",
                            "title": "Fetch Data",
                            "model_id": 2,
                            "permission_id": 1
                        },
                        {
                            "id": 42,
                            "name": "valuers-create",
                            "title": "Create Data",
                            "model_id": 2,
                            "permission_id": 2
                        },
                        {
                            "id": 43,
                            "name": "valuers-read",
                            "title": "Read Data",
                            "model_id": 2,
                            "permission_id": 3
                        },
                        {
                            "id": 44,
                            "name": "valuers-update",
                            "title": "Update Data",
                            "model_id": 2,
                            "permission_id": 4
                        },
                        {
                            "id": 45,
                            "name": "valuers-delete",
                            "title": "Delete Data",
                            "model_id": 2,
                            "permission_id": 5
                        },
                        {
                            "id": 46,
                            "name": "requests-fetch",
                            "title": "Fetch Data",
                            "model_id": 3,
                            "permission_id": 1
                        },
                        {
                            "id": 47,
                            "name": "requests-create",
                            "title": "Create Data",
                            "model_id": 3,
                            "permission_id": 2
                        },
                        {
                            "id": 48,
                            "name": "requests-read",
                            "title": "Read Data",
                            "model_id": 3,
                            "permission_id": 3
                        },
                        {
                            "id": 49,
                            "name": "requests-update",
                            "title": "Update Data",
                            "model_id": 3,
                            "permission_id": 4
                        },
                        {
                            "id": 50,
                            "name": "requests-delete",
                            "title": "Delete Data",
                            "model_id": 3,
                            "permission_id": 5
                        },
                        {
                            "id": 51,
                            "name": "reports-fetch",
                            "title": "Fetch Data",
                            "model_id": 4,
                            "permission_id": 1
                        },
                        {
                            "id": 52,
                            "name": "reports-create",
                            "title": "Create Data",
                            "model_id": 4,
                            "permission_id": 2
                        },
                        {
                            "id": 53,
                            "name": "reports-read",
                            "title": "Read Data",
                            "model_id": 4,
                            "permission_id": 3
                        },
                        {
                            "id": 54,
                            "name": "reports-update",
                            "title": "Update Data",
                            "model_id": 4,
                            "permission_id": 4
                        },
                        {
                            "id": 55,
                            "name": "reports-delete",
                            "title": "Delete Data",
                            "model_id": 4,
                            "permission_id": 5
                        },
                        {
                            "id": 56,
                            "name": "team_management-fetch",
                            "title": "Fetch Data",
                            "model_id": 5,
                            "permission_id": 1
                        },
                        {
                            "id": 57,
                            "name": "team_management-create",
                            "title": "Create Data",
                            "model_id": 5,
                            "permission_id": 2
                        },
                        {
                            "id": 58,
                            "name": "team_management-read",
                            "title": "Read Data",
                            "model_id": 5,
                            "permission_id": 3
                        },
                        {
                            "id": 59,
                            "name": "team_management-update",
                            "title": "Update Data",
                            "model_id": 5,
                            "permission_id": 4
                        },
                        {
                            "id": 60,
                            "name": "team_management-delete",
                            "title": "Delete Data",
                            "model_id": 5,
                            "permission_id": 5
                        },
                        {
                            "id": 61,
                            "name": "finance-fetch",
                            "title": "Fetch Data",
                            "model_id": 6,
                            "permission_id": 1
                        },
                        {
                            "id": 62,
                            "name": "finance-create",
                            "title": "Create Data",
                            "model_id": 6,
                            "permission_id": 2
                        },
                        {
                            "id": 63,
                            "name": "finance-read",
                            "title": "Read Data",
                            "model_id": 6,
                            "permission_id": 3
                        },
                        {
                            "id": 64,
                            "name": "finance-update",
                            "title": "Update Data",
                            "model_id": 6,
                            "permission_id": 4
                        },
                        {
                            "id": 65,
                            "name": "finance-delete",
                            "title": "Delete Data",
                            "model_id": 6,
                            "permission_id": 5
                        },
                        {
                            "id": 66,
                            "name": "reviews-fetch",
                            "title": "Fetch Data",
                            "model_id": 7,
                            "permission_id": 1
                        },
                        {
                            "id": 67,
                            "name": "reviews-create",
                            "title": "Create Data",
                            "model_id": 7,
                            "permission_id": 2
                        },
                        {
                            "id": 68,
                            "name": "reviews-read",
                            "title": "Read Data",
                            "model_id": 7,
                            "permission_id": 3
                        },
                        {
                            "id": 69,
                            "name": "reviews-update",
                            "title": "Update Data",
                            "model_id": 7,
                            "permission_id": 4
                        },
                        {
                            "id": 70,
                            "name": "reviews-delete",
                            "title": "Delete Data",
                            "model_id": 7,
                            "permission_id": 5
                        }
                    ],
                    "admins_count": 2,
                    "permissions_count": 35
                }
            ],
            "avatar": null,
            "is_active": true,
            "job_title": "Administrator",
            "created_at": "2026-10-19",
            "contract_type": "full_time",
            "last_login_at": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 4,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/dashboard/roles

Create Role

Create a new Role.

Creates a new Role in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name array {"ar":"\u0623\u062e\u062a\u0628\u0627\u0631","en":"Test Role"}
description array {"ar":"\u0648\u0635\u0641 \u0627\u0644\u062f\u0648\u0631","en":"Role description"}
permissions array [{"model_id":1,"permission_id":1}]

Request Validations Or Notes

Field/Name Examples
name required
name.ar required, ArabicLetters
name.en required, EnglishLetters
description optional, array
description.ar optional, string
description.en optional, string
permissions required, array, min 1
permissions[].permission_id required, integer, exists permissions,id
permissions[].model_id required, integer, CheckPermissionInModule
permissions[].name optional, string
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Test Role",
        "is_active": false,
        "translate": {
            "name": {
                "ar": "دور تقليدى",
                "en": "Test Role"
            },
            "description": {
                "ar": "وصف الدور التقليدى",
                "en": "Default Role Description"
            }
        },
        "created_at": "2026-10-19",
        "description": "Role description",
        "permissions": [
            {
                "id": 71,
                "name": "users_fetch",
                "title": "Fetch Data",
                "model_id": 1,
                "permission_id": 1
            }
        ],
        "admins_count": 0,
        "permissions_count": 0
    },
    "message": "Role created successfully.",
    "success": true
}
GET /api/v1/dashboard/roles

Get Role List

Retrieve a list of Role.

Retrieves a list of Role records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Default Role",
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "دور تقليدى",
                    "en": "Default Role"
                },
                "description": {
                    "ar": "وصف الدور التقليدى",
                    "en": "Default Role Description"
                }
            },
            "created_at": "2026-10-19",
            "description": "Default Role Description",
            "permissions": [
                {
                    "id": 1,
                    "name": "users-fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                },
                {
                    "id": 2,
                    "name": "users-create",
                    "title": "Create Data",
                    "model_id": 1,
                    "permission_id": 2
                },
                {
                    "id": 3,
                    "name": "users-read",
                    "title": "Read Data",
                    "model_id": 1,
                    "permission_id": 3
                },
                {
                    "id": 4,
                    "name": "users-update",
                    "title": "Update Data",
                    "model_id": 1,
                    "permission_id": 4
                },
                {
                    "id": 5,
                    "name": "users-delete",
                    "title": "Delete Data",
                    "model_id": 1,
                    "permission_id": 5
                },
                {
                    "id": 6,
                    "name": "valuers-fetch",
                    "title": "Fetch Data",
                    "model_id": 2,
                    "permission_id": 1
                },
                {
                    "id": 7,
                    "name": "valuers-create",
                    "title": "Create Data",
                    "model_id": 2,
                    "permission_id": 2
                },
                {
                    "id": 8,
                    "name": "valuers-read",
                    "title": "Read Data",
                    "model_id": 2,
                    "permission_id": 3
                },
                {
                    "id": 9,
                    "name": "valuers-update",
                    "title": "Update Data",
                    "model_id": 2,
                    "permission_id": 4
                },
                {
                    "id": 10,
                    "name": "valuers-delete",
                    "title": "Delete Data",
                    "model_id": 2,
                    "permission_id": 5
                },
                {
                    "id": 11,
                    "name": "requests-fetch",
                    "title": "Fetch Data",
                    "model_id": 3,
                    "permission_id": 1
                },
                {
                    "id": 12,
                    "name": "requests-create",
                    "title": "Create Data",
                    "model_id": 3,
                    "permission_id": 2
                },
                {
                    "id": 13,
                    "name": "requests-read",
                    "title": "Read Data",
                    "model_id": 3,
                    "permission_id": 3
                },
                {
                    "id": 14,
                    "name": "requests-update",
                    "title": "Update Data",
                    "model_id": 3,
                    "permission_id": 4
                },
                {
                    "id": 15,
                    "name": "requests-delete",
                    "title": "Delete Data",
                    "model_id": 3,
                    "permission_id": 5
                },
                {
                    "id": 16,
                    "name": "reports-fetch",
                    "title": "Fetch Data",
                    "model_id": 4,
                    "permission_id": 1
                },
                {
                    "id": 17,
                    "name": "reports-create",
                    "title": "Create Data",
                    "model_id": 4,
                    "permission_id": 2
                },
                {
                    "id": 18,
                    "name": "reports-read",
                    "title": "Read Data",
                    "model_id": 4,
                    "permission_id": 3
                },
                {
                    "id": 19,
                    "name": "reports-update",
                    "title": "Update Data",
                    "model_id": 4,
                    "permission_id": 4
                },
                {
                    "id": 20,
                    "name": "reports-delete",
                    "title": "Delete Data",
                    "model_id": 4,
                    "permission_id": 5
                },
                {
                    "id": 21,
                    "name": "team_management-fetch",
                    "title": "Fetch Data",
                    "model_id": 5,
                    "permission_id": 1
                },
                {
                    "id": 22,
                    "name": "team_management-create",
                    "title": "Create Data",
                    "model_id": 5,
                    "permission_id": 2
                },
                {
                    "id": 23,
                    "name": "team_management-read",
                    "title": "Read Data",
                    "model_id": 5,
                    "permission_id": 3
                },
                {
                    "id": 24,
                    "name": "team_management-update",
                    "title": "Update Data",
                    "model_id": 5,
                    "permission_id": 4
                },
                {
                    "id": 25,
                    "name": "team_management-delete",
                    "title": "Delete Data",
                    "model_id": 5,
                    "permission_id": 5
                },
                {
                    "id": 26,
                    "name": "finance-fetch",
                    "title": "Fetch Data",
                    "model_id": 6,
                    "permission_id": 1
                },
                {
                    "id": 27,
                    "name": "finance-create",
                    "title": "Create Data",
                    "model_id": 6,
                    "permission_id": 2
                },
                {
                    "id": 28,
                    "name": "finance-read",
                    "title": "Read Data",
                    "model_id": 6,
                    "permission_id": 3
                },
                {
                    "id": 29,
                    "name": "finance-update",
                    "title": "Update Data",
                    "model_id": 6,
                    "permission_id": 4
                },
                {
                    "id": 30,
                    "name": "finance-delete",
                    "title": "Delete Data",
                    "model_id": 6,
                    "permission_id": 5
                },
                {
                    "id": 31,
                    "name": "reviews-fetch",
                    "title": "Fetch Data",
                    "model_id": 7,
                    "permission_id": 1
                },
                {
                    "id": 32,
                    "name": "reviews-create",
                    "title": "Create Data",
                    "model_id": 7,
                    "permission_id": 2
                },
                {
                    "id": 33,
                    "name": "reviews-read",
                    "title": "Read Data",
                    "model_id": 7,
                    "permission_id": 3
                },
                {
                    "id": 34,
                    "name": "reviews-update",
                    "title": "Update Data",
                    "model_id": 7,
                    "permission_id": 4
                },
                {
                    "id": 35,
                    "name": "reviews-delete",
                    "title": "Delete Data",
                    "model_id": 7,
                    "permission_id": 5
                }
            ],
            "admins_count": 2,
            "permissions_count": 35
        },
        {
            "id": 2,
            "name": "Super Admin Role ",
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "دور تقليدى",
                    "en": "Super Admin Role "
                },
                "description": {
                    "ar": "وصف الدور التقليدى",
                    "en": "Default Role Description"
                }
            },
            "created_at": "2026-10-19",
            "description": "Super Admin Role Description",
            "permissions": [
                {
                    "id": 36,
                    "name": "users-fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                },
                {
                    "id": 37,
                    "name": "users-create",
                    "title": "Create Data",
                    "model_id": 1,
                    "permission_id": 2
                },
                {
                    "id": 38,
                    "name": "users-read",
                    "title": "Read Data",
                    "model_id": 1,
                    "permission_id": 3
                },
                {
                    "id": 39,
                    "name": "users-update",
                    "title": "Update Data",
                    "model_id": 1,
                    "permission_id": 4
                },
                {
                    "id": 40,
                    "name": "users-delete",
                    "title": "Delete Data",
                    "model_id": 1,
                    "permission_id": 5
                },
                {
                    "id": 41,
                    "name": "valuers-fetch",
                    "title": "Fetch Data",
                    "model_id": 2,
                    "permission_id": 1
                },
                {
                    "id": 42,
                    "name": "valuers-create",
                    "title": "Create Data",
                    "model_id": 2,
                    "permission_id": 2
                },
                {
                    "id": 43,
                    "name": "valuers-read",
                    "title": "Read Data",
                    "model_id": 2,
                    "permission_id": 3
                },
                {
                    "id": 44,
                    "name": "valuers-update",
                    "title": "Update Data",
                    "model_id": 2,
                    "permission_id": 4
                },
                {
                    "id": 45,
                    "name": "valuers-delete",
                    "title": "Delete Data",
                    "model_id": 2,
                    "permission_id": 5
                },
                {
                    "id": 46,
                    "name": "requests-fetch",
                    "title": "Fetch Data",
                    "model_id": 3,
                    "permission_id": 1
                },
                {
                    "id": 47,
                    "name": "requests-create",
                    "title": "Create Data",
                    "model_id": 3,
                    "permission_id": 2
                },
                {
                    "id": 48,
                    "name": "requests-read",
                    "title": "Read Data",
                    "model_id": 3,
                    "permission_id": 3
                },
                {
                    "id": 49,
                    "name": "requests-update",
                    "title": "Update Data",
                    "model_id": 3,
                    "permission_id": 4
                },
                {
                    "id": 50,
                    "name": "requests-delete",
                    "title": "Delete Data",
                    "model_id": 3,
                    "permission_id": 5
                },
                {
                    "id": 51,
                    "name": "reports-fetch",
                    "title": "Fetch Data",
                    "model_id": 4,
                    "permission_id": 1
                },
                {
                    "id": 52,
                    "name": "reports-create",
                    "title": "Create Data",
                    "model_id": 4,
                    "permission_id": 2
                },
                {
                    "id": 53,
                    "name": "reports-read",
                    "title": "Read Data",
                    "model_id": 4,
                    "permission_id": 3
                },
                {
                    "id": 54,
                    "name": "reports-update",
                    "title": "Update Data",
                    "model_id": 4,
                    "permission_id": 4
                },
                {
                    "id": 55,
                    "name": "reports-delete",
                    "title": "Delete Data",
                    "model_id": 4,
                    "permission_id": 5
                },
                {
                    "id": 56,
                    "name": "team_management-fetch",
                    "title": "Fetch Data",
                    "model_id": 5,
                    "permission_id": 1
                },
                {
                    "id": 57,
                    "name": "team_management-create",
                    "title": "Create Data",
                    "model_id": 5,
                    "permission_id": 2
                },
                {
                    "id": 58,
                    "name": "team_management-read",
                    "title": "Read Data",
                    "model_id": 5,
                    "permission_id": 3
                },
                {
                    "id": 59,
                    "name": "team_management-update",
                    "title": "Update Data",
                    "model_id": 5,
                    "permission_id": 4
                },
                {
                    "id": 60,
                    "name": "team_management-delete",
                    "title": "Delete Data",
                    "model_id": 5,
                    "permission_id": 5
                },
                {
                    "id": 61,
                    "name": "finance-fetch",
                    "title": "Fetch Data",
                    "model_id": 6,
                    "permission_id": 1
                },
                {
                    "id": 62,
                    "name": "finance-create",
                    "title": "Create Data",
                    "model_id": 6,
                    "permission_id": 2
                },
                {
                    "id": 63,
                    "name": "finance-read",
                    "title": "Read Data",
                    "model_id": 6,
                    "permission_id": 3
                },
                {
                    "id": 64,
                    "name": "finance-update",
                    "title": "Update Data",
                    "model_id": 6,
                    "permission_id": 4
                },
                {
                    "id": 65,
                    "name": "finance-delete",
                    "title": "Delete Data",
                    "model_id": 6,
                    "permission_id": 5
                },
                {
                    "id": 66,
                    "name": "reviews-fetch",
                    "title": "Fetch Data",
                    "model_id": 7,
                    "permission_id": 1
                },
                {
                    "id": 67,
                    "name": "reviews-create",
                    "title": "Create Data",
                    "model_id": 7,
                    "permission_id": 2
                },
                {
                    "id": 68,
                    "name": "reviews-read",
                    "title": "Read Data",
                    "model_id": 7,
                    "permission_id": 3
                },
                {
                    "id": 69,
                    "name": "reviews-update",
                    "title": "Update Data",
                    "model_id": 7,
                    "permission_id": 4
                },
                {
                    "id": 70,
                    "name": "reviews-delete",
                    "title": "Delete Data",
                    "model_id": 7,
                    "permission_id": 5
                }
            ],
            "admins_count": 2,
            "permissions_count": 35
        },
        {
            "id": 3,
            "name": "Test Role",
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "دور تقليدى",
                    "en": "Test Role"
                },
                "description": {
                    "ar": "وصف الدور التقليدى",
                    "en": "Default Role Description"
                }
            },
            "created_at": "2026-10-19",
            "description": "Role description",
            "permissions": [
                {
                    "id": 71,
                    "name": "users_fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                }
            ],
            "admins_count": 0,
            "permissions_count": 1
        }
    ],
    "message": "Roles retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 3,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/roles/1/admins

Get Role Admins

List role admins.

Retrieves a paginated list of admins assigned to the specified role.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Admin",
            "email": "admin@base.com",
            "avatar": "",
            "created_at": "2026-10-19"
        },
        {
            "id": 4,
            "name": "Admin LHATIS",
            "email": "admin+lHaTIS@gmail.com",
            "avatar": "",
            "created_at": "2026-10-19"
        }
    ],
    "message": "Role admins retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/dashboard/roles/1/admins

Assign Admins To Role

Assign admins to a role.

Assigns one or more existing admins to the specified role. Accepts an array of admin_ids. Re-assigning an admin already on the role has no effect - duplicates are safely ignored. Returns the updated role (with refreshed admins_count) and the list of assigned admins.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
admin_ids array [3]

Request Validations Or Notes

Field/Name Examples
admin_ids required, array, min 1
admin_ids[] required, integer, distinct, Exists
Success (200 OK)
{
    "data": {
        "role": {
            "id": 1,
            "name": "Default Role",
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "دور تقليدى",
                    "en": "Default Role"
                },
                "description": {
                    "ar": "وصف الدور التقليدى",
                    "en": "Default Role Description"
                }
            },
            "created_at": "2026-10-19",
            "description": "Default Role Description",
            "permissions": [
                {
                    "id": 1,
                    "name": "users-fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                },
                {
                    "id": 2,
                    "name": "users-create",
                    "title": "Create Data",
                    "model_id": 1,
                    "permission_id": 2
                },
                {
                    "id": 3,
                    "name": "users-read",
                    "title": "Read Data",
                    "model_id": 1,
                    "permission_id": 3
                },
                {
                    "id": 4,
                    "name": "users-update",
                    "title": "Update Data",
                    "model_id": 1,
                    "permission_id": 4
                },
                {
                    "id": 5,
                    "name": "users-delete",
                    "title": "Delete Data",
                    "model_id": 1,
                    "permission_id": 5
                },
                {
                    "id": 6,
                    "name": "valuers-fetch",
                    "title": "Fetch Data",
                    "model_id": 2,
                    "permission_id": 1
                },
                {
                    "id": 7,
                    "name": "valuers-create",
                    "title": "Create Data",
                    "model_id": 2,
                    "permission_id": 2
                },
                {
                    "id": 8,
                    "name": "valuers-read",
                    "title": "Read Data",
                    "model_id": 2,
                    "permission_id": 3
                },
                {
                    "id": 9,
                    "name": "valuers-update",
                    "title": "Update Data",
                    "model_id": 2,
                    "permission_id": 4
                },
                {
                    "id": 10,
                    "name": "valuers-delete",
                    "title": "Delete Data",
                    "model_id": 2,
                    "permission_id": 5
                },
                {
                    "id": 11,
                    "name": "requests-fetch",
                    "title": "Fetch Data",
                    "model_id": 3,
                    "permission_id": 1
                },
                {
                    "id": 12,
                    "name": "requests-create",
                    "title": "Create Data",
                    "model_id": 3,
                    "permission_id": 2
                },
                {
                    "id": 13,
                    "name": "requests-read",
                    "title": "Read Data",
                    "model_id": 3,
                    "permission_id": 3
                },
                {
                    "id": 14,
                    "name": "requests-update",
                    "title": "Update Data",
                    "model_id": 3,
                    "permission_id": 4
                },
                {
                    "id": 15,
                    "name": "requests-delete",
                    "title": "Delete Data",
                    "model_id": 3,
                    "permission_id": 5
                },
                {
                    "id": 16,
                    "name": "reports-fetch",
                    "title": "Fetch Data",
                    "model_id": 4,
                    "permission_id": 1
                },
                {
                    "id": 17,
                    "name": "reports-create",
                    "title": "Create Data",
                    "model_id": 4,
                    "permission_id": 2
                },
                {
                    "id": 18,
                    "name": "reports-read",
                    "title": "Read Data",
                    "model_id": 4,
                    "permission_id": 3
                },
                {
                    "id": 19,
                    "name": "reports-update",
                    "title": "Update Data",
                    "model_id": 4,
                    "permission_id": 4
                },
                {
                    "id": 20,
                    "name": "reports-delete",
                    "title": "Delete Data",
                    "model_id": 4,
                    "permission_id": 5
                },
                {
                    "id": 21,
                    "name": "team_management-fetch",
                    "title": "Fetch Data",
                    "model_id": 5,
                    "permission_id": 1
                },
                {
                    "id": 22,
                    "name": "team_management-create",
                    "title": "Create Data",
                    "model_id": 5,
                    "permission_id": 2
                },
                {
                    "id": 23,
                    "name": "team_management-read",
                    "title": "Read Data",
                    "model_id": 5,
                    "permission_id": 3
                },
                {
                    "id": 24,
                    "name": "team_management-update",
                    "title": "Update Data",
                    "model_id": 5,
                    "permission_id": 4
                },
                {
                    "id": 25,
                    "name": "team_management-delete",
                    "title": "Delete Data",
                    "model_id": 5,
                    "permission_id": 5
                },
                {
                    "id": 26,
                    "name": "finance-fetch",
                    "title": "Fetch Data",
                    "model_id": 6,
                    "permission_id": 1
                },
                {
                    "id": 27,
                    "name": "finance-create",
                    "title": "Create Data",
                    "model_id": 6,
                    "permission_id": 2
                },
                {
                    "id": 28,
                    "name": "finance-read",
                    "title": "Read Data",
                    "model_id": 6,
                    "permission_id": 3
                },
                {
                    "id": 29,
                    "name": "finance-update",
                    "title": "Update Data",
                    "model_id": 6,
                    "permission_id": 4
                },
                {
                    "id": 30,
                    "name": "finance-delete",
                    "title": "Delete Data",
                    "model_id": 6,
                    "permission_id": 5
                },
                {
                    "id": 31,
                    "name": "reviews-fetch",
                    "title": "Fetch Data",
                    "model_id": 7,
                    "permission_id": 1
                },
                {
                    "id": 32,
                    "name": "reviews-create",
                    "title": "Create Data",
                    "model_id": 7,
                    "permission_id": 2
                },
                {
                    "id": 33,
                    "name": "reviews-read",
                    "title": "Read Data",
                    "model_id": 7,
                    "permission_id": 3
                },
                {
                    "id": 34,
                    "name": "reviews-update",
                    "title": "Update Data",
                    "model_id": 7,
                    "permission_id": 4
                },
                {
                    "id": 35,
                    "name": "reviews-delete",
                    "title": "Delete Data",
                    "model_id": 7,
                    "permission_id": 5
                }
            ],
            "admins_count": 3,
            "permissions_count": 35
        },
        "admins": [
            {
                "id": 3,
                "name": "Documentation Admin",
                "email": "doc-admin@base.com",
                "avatar": null,
                "created_at": "2026-10-19"
            }
        ]
    },
    "message": "admins::messages.admins_assigned_to_role",
    "success": true
}
GET /api/v1/dashboard/roles/1/available-admins

Get Role Available Admins

List available admins.

Retrieves a list of admins that are not assigned to the specified role.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "name": "Documentation Target Admin",
            "avatar": null,
            "job_title": "Administrator"
        }
    ],
    "message": "Available admins retrieved successfully.",
    "success": true
}
GET /api/v1/dashboard/roles/1/available-admins?search=sarah

Search Available Admins

Search available admins by name.

Retrieves admins not assigned to the specified role, filtered by name. The search parameter is optional and combines with the existing role-exclusion filter.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "name": "Documentation Target Admin",
            "avatar": null,
            "job_title": "Administrator"
        }
    ],
    "message": "Available admins retrieved successfully.",
    "success": true
}
GET /api/v1/dashboard/roles/1/permissions

Get Role Permissions

List role permissions.

Retrieves the permissions assigned to the specified role, categorized by module.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "title": "Users",
            "permissions": [
                {
                    "id": 1,
                    "name": "users-fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                },
                {
                    "id": 2,
                    "name": "users-create",
                    "title": "Create Data",
                    "model_id": 1,
                    "permission_id": 2
                },
                {
                    "id": 3,
                    "name": "users-read",
                    "title": "Read Data",
                    "model_id": 1,
                    "permission_id": 3
                },
                {
                    "id": 4,
                    "name": "users-update",
                    "title": "Update Data",
                    "model_id": 1,
                    "permission_id": 4
                },
                {
                    "id": 5,
                    "name": "users-delete",
                    "title": "Delete Data",
                    "model_id": 1,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 2,
            "title": "Valuers",
            "permissions": [
                {
                    "id": 6,
                    "name": "valuers-fetch",
                    "title": "Fetch Data",
                    "model_id": 2,
                    "permission_id": 1
                },
                {
                    "id": 7,
                    "name": "valuers-create",
                    "title": "Create Data",
                    "model_id": 2,
                    "permission_id": 2
                },
                {
                    "id": 8,
                    "name": "valuers-read",
                    "title": "Read Data",
                    "model_id": 2,
                    "permission_id": 3
                },
                {
                    "id": 9,
                    "name": "valuers-update",
                    "title": "Update Data",
                    "model_id": 2,
                    "permission_id": 4
                },
                {
                    "id": 10,
                    "name": "valuers-delete",
                    "title": "Delete Data",
                    "model_id": 2,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 3,
            "title": "Requests",
            "permissions": [
                {
                    "id": 11,
                    "name": "requests-fetch",
                    "title": "Fetch Data",
                    "model_id": 3,
                    "permission_id": 1
                },
                {
                    "id": 12,
                    "name": "requests-create",
                    "title": "Create Data",
                    "model_id": 3,
                    "permission_id": 2
                },
                {
                    "id": 13,
                    "name": "requests-read",
                    "title": "Read Data",
                    "model_id": 3,
                    "permission_id": 3
                },
                {
                    "id": 14,
                    "name": "requests-update",
                    "title": "Update Data",
                    "model_id": 3,
                    "permission_id": 4
                },
                {
                    "id": 15,
                    "name": "requests-delete",
                    "title": "Delete Data",
                    "model_id": 3,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 4,
            "title": "Reports",
            "permissions": [
                {
                    "id": 16,
                    "name": "reports-fetch",
                    "title": "Fetch Data",
                    "model_id": 4,
                    "permission_id": 1
                },
                {
                    "id": 17,
                    "name": "reports-create",
                    "title": "Create Data",
                    "model_id": 4,
                    "permission_id": 2
                },
                {
                    "id": 18,
                    "name": "reports-read",
                    "title": "Read Data",
                    "model_id": 4,
                    "permission_id": 3
                },
                {
                    "id": 19,
                    "name": "reports-update",
                    "title": "Update Data",
                    "model_id": 4,
                    "permission_id": 4
                },
                {
                    "id": 20,
                    "name": "reports-delete",
                    "title": "Delete Data",
                    "model_id": 4,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 5,
            "title": "Team Management",
            "permissions": [
                {
                    "id": 21,
                    "name": "team_management-fetch",
                    "title": "Fetch Data",
                    "model_id": 5,
                    "permission_id": 1
                },
                {
                    "id": 22,
                    "name": "team_management-create",
                    "title": "Create Data",
                    "model_id": 5,
                    "permission_id": 2
                },
                {
                    "id": 23,
                    "name": "team_management-read",
                    "title": "Read Data",
                    "model_id": 5,
                    "permission_id": 3
                },
                {
                    "id": 24,
                    "name": "team_management-update",
                    "title": "Update Data",
                    "model_id": 5,
                    "permission_id": 4
                },
                {
                    "id": 25,
                    "name": "team_management-delete",
                    "title": "Delete Data",
                    "model_id": 5,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 6,
            "title": "Finance",
            "permissions": [
                {
                    "id": 26,
                    "name": "finance-fetch",
                    "title": "Fetch Data",
                    "model_id": 6,
                    "permission_id": 1
                },
                {
                    "id": 27,
                    "name": "finance-create",
                    "title": "Create Data",
                    "model_id": 6,
                    "permission_id": 2
                },
                {
                    "id": 28,
                    "name": "finance-read",
                    "title": "Read Data",
                    "model_id": 6,
                    "permission_id": 3
                },
                {
                    "id": 29,
                    "name": "finance-update",
                    "title": "Update Data",
                    "model_id": 6,
                    "permission_id": 4
                },
                {
                    "id": 30,
                    "name": "finance-delete",
                    "title": "Delete Data",
                    "model_id": 6,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 7,
            "title": "reviews",
            "permissions": [
                {
                    "id": 31,
                    "name": "reviews-fetch",
                    "title": "Fetch Data",
                    "model_id": 7,
                    "permission_id": 1
                },
                {
                    "id": 32,
                    "name": "reviews-create",
                    "title": "Create Data",
                    "model_id": 7,
                    "permission_id": 2
                },
                {
                    "id": 33,
                    "name": "reviews-read",
                    "title": "Read Data",
                    "model_id": 7,
                    "permission_id": 3
                },
                {
                    "id": 34,
                    "name": "reviews-update",
                    "title": "Update Data",
                    "model_id": 7,
                    "permission_id": 4
                },
                {
                    "id": 35,
                    "name": "reviews-delete",
                    "title": "Delete Data",
                    "model_id": 7,
                    "permission_id": 5
                }
            ]
        }
    ],
    "message": "Role permissions retrieved successfully.",
    "success": true
}
GET /api/v1/dashboard/admins/4

Get Admin Details

Retrieve Admin details.

Retrieves detailed information about a specific Admin using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 4,
        "name": "Admin LHATIS",
        "email": "admin+lHaTIS@gmail.com",
        "phone": "01115534901",
        "roles": [
            {
                "id": 1,
                "name": "Default Role",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Default Role"
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Default Role Description",
                "permissions": [
                    {
                        "id": 1,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 2,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 3,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 4,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 5,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 6,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 7,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 8,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 9,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 10,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 11,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 12,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 13,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 14,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 15,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 16,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 17,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 18,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 19,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 20,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 21,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 22,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 23,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 24,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 25,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 26,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 27,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 28,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 29,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 30,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 31,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 32,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 33,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 34,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 35,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 3,
                "permissions_count": 35
            },
            {
                "id": 2,
                "name": "Super Admin Role ",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Super Admin Role "
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Super Admin Role Description",
                "permissions": [
                    {
                        "id": 36,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 37,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 38,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 39,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 40,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 41,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 42,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 43,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 44,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 45,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 46,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 47,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 48,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 49,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 50,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 51,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 52,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 53,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 54,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 55,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 56,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 57,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 58,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 59,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 60,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 61,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 62,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 63,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 64,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 65,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 66,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 67,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 68,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 69,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 70,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 2,
                "permissions_count": 35
            }
        ],
        "avatar": null,
        "is_active": true,
        "job_title": "Administrator",
        "created_at": "2026-10-19",
        "contract_type": "full_time",
        "last_login_at": null
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/dashboard/admins/4

Update Admin

Update an existing Admin.

Updates the specified Admin with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
id integer 4
name string Admin Updated XRTBKM
email string admin_upd+XRtbkm@gmail.com
phone string 01223378819
roles array [{"role_id":1},{"role_id":2}]
avatar NULL
password string P@ss0rd
job_title string Manager
contract_type string part_time

Request Validations Or Notes

Field/Name Examples
name optional, string, min 2, max 100, regex
email optional, valid email, regex, Unique
phone optional, regex, min 9, max 20, unique admins,phone
password optional, StrongPassword
avatar optional, image, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
is_active optional, true/false
roles optional, array, min 1
roles[].role_id optional, integer, exists roles,id
Success (200 OK)
{
    "data": {
        "id": 4,
        "name": "Admin Updated XRTBKM",
        "email": "admin_upd+XRtbkm@gmail.com",
        "phone": "01223378819",
        "roles": [
            {
                "id": 1,
                "name": "Default Role",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Default Role"
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Default Role Description",
                "permissions": [
                    {
                        "id": 1,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 2,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 3,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 4,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 5,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 6,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 7,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 8,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 9,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 10,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 11,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 12,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 13,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 14,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 15,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 16,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 17,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 18,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 19,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 20,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 21,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 22,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 23,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 24,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 25,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 26,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 27,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 28,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 29,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 30,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 31,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 32,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 33,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 34,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 35,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            },
            {
                "id": 2,
                "name": "Super Admin Role ",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Super Admin Role "
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Super Admin Role Description",
                "permissions": [
                    {
                        "id": 36,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 37,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 38,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 39,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 40,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 41,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 42,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 43,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 44,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 45,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 46,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 47,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 48,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 49,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 50,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 51,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 52,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 53,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 54,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 55,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 56,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 57,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 58,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 59,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 60,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 61,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 62,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 63,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 64,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 65,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 66,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 67,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 68,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 69,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 70,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            }
        ],
        "avatar": null,
        "is_active": true,
        "job_title": "Administrator",
        "created_at": "2026-10-19",
        "contract_type": "full_time",
        "last_login_at": null
    },
    "message": "Data updated successfully.",
    "success": true
}
PATCH /api/v1/dashboard/admins/4/toggle-active

Toggle Admin Status

Switch the Admin status between active and inactive.

Updates the status of the specified Admin by toggling it between active and inactive. This operation allows enabling or disabling the resource without deleting it from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 4,
        "name": "Admin Updated XRTBKM",
        "email": "admin_upd+XRtbkm@gmail.com",
        "phone": "01223378819",
        "roles": [
            {
                "id": 1,
                "name": "Default Role",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Default Role"
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Default Role Description",
                "permissions": [
                    {
                        "id": 1,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 2,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 3,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 4,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 5,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 6,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 7,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 8,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 9,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 10,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 11,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 12,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 13,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 14,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 15,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 16,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 17,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 18,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 19,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 20,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 21,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 22,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 23,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 24,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 25,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 26,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 27,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 28,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 29,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 30,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 31,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 32,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 33,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 34,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 35,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            },
            {
                "id": 2,
                "name": "Super Admin Role ",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Super Admin Role "
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Super Admin Role Description",
                "permissions": [
                    {
                        "id": 36,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 37,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 38,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 39,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 40,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 41,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 42,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 43,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 44,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 45,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 46,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 47,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 48,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 49,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 50,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 51,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 52,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 53,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 54,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 55,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 56,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 57,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 58,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 59,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 60,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 61,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 62,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 63,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 64,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 65,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 66,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 67,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 68,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 69,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 70,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            }
        ],
        "avatar": null,
        "is_active": false,
        "job_title": "Administrator",
        "created_at": "2026-10-19",
        "contract_type": "full_time",
        "last_login_at": null
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/dashboard/admins/4/roles/1

Remove Role From Admin

Remove role from admin.

Removes the specified role from the admin. Returns an error if the admin does not have this role.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Role removed from admin successfully.",
    "success": true
}
DELETE /api/v1/dashboard/admins/4

Delete Admin

Delete a Admin.

Deletes the specified Admin from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/dashboard/roles/3

Get Role Details

Retrieve Role details.

Retrieves detailed information about a specific Role using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Test Role",
        "is_active": true,
        "translate": {
            "name": {
                "ar": "دور تقليدى",
                "en": "Test Role"
            },
            "description": {
                "ar": "وصف الدور التقليدى",
                "en": "Default Role Description"
            }
        },
        "created_at": "2026-10-19",
        "description": "Role description",
        "permissions": [
            {
                "id": 71,
                "name": "users_fetch",
                "title": "Fetch Data",
                "model_id": 1,
                "permission_id": 1
            }
        ],
        "admins_count": 0,
        "permissions_count": 1
    },
    "message": "Role retrieved successfully.",
    "success": true
}
PUT /api/v1/dashboard/roles/3

Update Role

Update an existing Role.

Updates the specified Role with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
id integer 3
name array {"ar":"\u0623\u062e\u062a\u0628\u0627\u0631","en":"Test Role"}
permissions array [{"model_id":1,"permission_id":1}]

Request Validations Or Notes

Field/Name Examples
name sometimes
name.ar optional, ArabicLetters
name.en optional, EnglishLetters
description optional, array
description.ar optional, string
description.en optional, string
permissions optional, array
permissions[].permission_id optional, integer, exists permissions,id
permissions[].model_id optional, integer, CheckPermissionInModule
permissions[].name optional, string
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Test Role",
        "is_active": true,
        "translate": {
            "name": {
                "ar": "دور تقليدى",
                "en": "Test Role"
            },
            "description": {
                "ar": "وصف الدور التقليدى",
                "en": "Default Role Description"
            }
        },
        "created_at": "2026-10-19",
        "description": "Role description",
        "permissions": [
            {
                "id": 71,
                "name": "users_fetch",
                "title": "Fetch Data",
                "model_id": 1,
                "permission_id": 1
            }
        ],
        "admins_count": 0,
        "permissions_count": 0
    },
    "message": "Role updated successfully.",
    "success": true
}
PATCH /api/v1/dashboard/roles/3/toggle-active

Toggle Role Status

Switch the Role status between active and inactive.

Updates the status of the specified Role by toggling it between active and inactive. This operation allows enabling or disabling the resource without deleting it from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Test Role",
        "is_active": false,
        "translate": {
            "name": {
                "ar": "دور تقليدى",
                "en": "Test Role"
            },
            "description": {
                "ar": "وصف الدور التقليدى",
                "en": "Default Role Description"
            }
        },
        "created_at": "2026-10-19",
        "description": "Role description",
        "permissions": [
            {
                "id": 71,
                "name": "users_fetch",
                "title": "Fetch Data",
                "model_id": 1,
                "permission_id": 1
            }
        ],
        "admins_count": 0,
        "permissions_count": 0
    },
    "message": "Role status updated successfully.",
    "success": true
}
DELETE /api/v1/dashboard/roles/3

Delete Role

Delete a Role.

Deletes the specified Role from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Role deleted successfully.",
    "success": true
}
GET /api/v1/dashboard/admins/trash

Get Deleted Admin

List deleted Admin.

Retrieve a list of soft-deleted Admin records from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 4,
            "name": "Admin Updated XRTBKM",
            "email": "admin_upd+XRtbkm@gmail.com",
            "phone": "01223378819",
            "roles": [
                {
                    "id": 2,
                    "name": "Super Admin Role ",
                    "is_active": true,
                    "translate": {
                        "name": {
                            "ar": "دور تقليدى",
                            "en": "Super Admin Role "
                        },
                        "description": {
                            "ar": "وصف الدور التقليدى",
                            "en": "Default Role Description"
                        }
                    },
                    "created_at": "2026-10-19",
                    "description": "Super Admin Role Description",
                    "permissions": [
                        {
                            "id": 36,
                            "name": "users-fetch",
                            "title": "Fetch Data",
                            "model_id": 1,
                            "permission_id": 1
                        },
                        {
                            "id": 37,
                            "name": "users-create",
                            "title": "Create Data",
                            "model_id": 1,
                            "permission_id": 2
                        },
                        {
                            "id": 38,
                            "name": "users-read",
                            "title": "Read Data",
                            "model_id": 1,
                            "permission_id": 3
                        },
                        {
                            "id": 39,
                            "name": "users-update",
                            "title": "Update Data",
                            "model_id": 1,
                            "permission_id": 4
                        },
                        {
                            "id": 40,
                            "name": "users-delete",
                            "title": "Delete Data",
                            "model_id": 1,
                            "permission_id": 5
                        },
                        {
                            "id": 41,
                            "name": "valuers-fetch",
                            "title": "Fetch Data",
                            "model_id": 2,
                            "permission_id": 1
                        },
                        {
                            "id": 42,
                            "name": "valuers-create",
                            "title": "Create Data",
                            "model_id": 2,
                            "permission_id": 2
                        },
                        {
                            "id": 43,
                            "name": "valuers-read",
                            "title": "Read Data",
                            "model_id": 2,
                            "permission_id": 3
                        },
                        {
                            "id": 44,
                            "name": "valuers-update",
                            "title": "Update Data",
                            "model_id": 2,
                            "permission_id": 4
                        },
                        {
                            "id": 45,
                            "name": "valuers-delete",
                            "title": "Delete Data",
                            "model_id": 2,
                            "permission_id": 5
                        },
                        {
                            "id": 46,
                            "name": "requests-fetch",
                            "title": "Fetch Data",
                            "model_id": 3,
                            "permission_id": 1
                        },
                        {
                            "id": 47,
                            "name": "requests-create",
                            "title": "Create Data",
                            "model_id": 3,
                            "permission_id": 2
                        },
                        {
                            "id": 48,
                            "name": "requests-read",
                            "title": "Read Data",
                            "model_id": 3,
                            "permission_id": 3
                        },
                        {
                            "id": 49,
                            "name": "requests-update",
                            "title": "Update Data",
                            "model_id": 3,
                            "permission_id": 4
                        },
                        {
                            "id": 50,
                            "name": "requests-delete",
                            "title": "Delete Data",
                            "model_id": 3,
                            "permission_id": 5
                        },
                        {
                            "id": 51,
                            "name": "reports-fetch",
                            "title": "Fetch Data",
                            "model_id": 4,
                            "permission_id": 1
                        },
                        {
                            "id": 52,
                            "name": "reports-create",
                            "title": "Create Data",
                            "model_id": 4,
                            "permission_id": 2
                        },
                        {
                            "id": 53,
                            "name": "reports-read",
                            "title": "Read Data",
                            "model_id": 4,
                            "permission_id": 3
                        },
                        {
                            "id": 54,
                            "name": "reports-update",
                            "title": "Update Data",
                            "model_id": 4,
                            "permission_id": 4
                        },
                        {
                            "id": 55,
                            "name": "reports-delete",
                            "title": "Delete Data",
                            "model_id": 4,
                            "permission_id": 5
                        },
                        {
                            "id": 56,
                            "name": "team_management-fetch",
                            "title": "Fetch Data",
                            "model_id": 5,
                            "permission_id": 1
                        },
                        {
                            "id": 57,
                            "name": "team_management-create",
                            "title": "Create Data",
                            "model_id": 5,
                            "permission_id": 2
                        },
                        {
                            "id": 58,
                            "name": "team_management-read",
                            "title": "Read Data",
                            "model_id": 5,
                            "permission_id": 3
                        },
                        {
                            "id": 59,
                            "name": "team_management-update",
                            "title": "Update Data",
                            "model_id": 5,
                            "permission_id": 4
                        },
                        {
                            "id": 60,
                            "name": "team_management-delete",
                            "title": "Delete Data",
                            "model_id": 5,
                            "permission_id": 5
                        },
                        {
                            "id": 61,
                            "name": "finance-fetch",
                            "title": "Fetch Data",
                            "model_id": 6,
                            "permission_id": 1
                        },
                        {
                            "id": 62,
                            "name": "finance-create",
                            "title": "Create Data",
                            "model_id": 6,
                            "permission_id": 2
                        },
                        {
                            "id": 63,
                            "name": "finance-read",
                            "title": "Read Data",
                            "model_id": 6,
                            "permission_id": 3
                        },
                        {
                            "id": 64,
                            "name": "finance-update",
                            "title": "Update Data",
                            "model_id": 6,
                            "permission_id": 4
                        },
                        {
                            "id": 65,
                            "name": "finance-delete",
                            "title": "Delete Data",
                            "model_id": 6,
                            "permission_id": 5
                        },
                        {
                            "id": 66,
                            "name": "reviews-fetch",
                            "title": "Fetch Data",
                            "model_id": 7,
                            "permission_id": 1
                        },
                        {
                            "id": 67,
                            "name": "reviews-create",
                            "title": "Create Data",
                            "model_id": 7,
                            "permission_id": 2
                        },
                        {
                            "id": 68,
                            "name": "reviews-read",
                            "title": "Read Data",
                            "model_id": 7,
                            "permission_id": 3
                        },
                        {
                            "id": 69,
                            "name": "reviews-update",
                            "title": "Update Data",
                            "model_id": 7,
                            "permission_id": 4
                        },
                        {
                            "id": 70,
                            "name": "reviews-delete",
                            "title": "Delete Data",
                            "model_id": 7,
                            "permission_id": 5
                        }
                    ],
                    "admins_count": 0,
                    "permissions_count": 0
                }
            ],
            "avatar": null,
            "is_active": false,
            "job_title": "Administrator",
            "created_at": "2026-10-19",
            "contract_type": "full_time",
            "last_login_at": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 1,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
PATCH /api/v1/dashboard/admins/4/restore

Restore Admin

Restore deleted Admin.

Restore a previously deleted Admin record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 4,
        "name": "Admin Updated XRTBKM",
        "email": "admin_upd+XRtbkm@gmail.com",
        "phone": "01223378819",
        "roles": [
            {
                "id": 2,
                "name": "Super Admin Role ",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Super Admin Role "
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Super Admin Role Description",
                "permissions": [
                    {
                        "id": 36,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 37,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 38,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 39,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 40,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 41,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 42,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 43,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 44,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 45,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 46,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 47,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 48,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 49,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 50,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 51,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 52,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 53,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 54,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 55,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 56,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 57,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 58,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 59,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 60,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 61,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 62,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 63,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 64,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 65,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 66,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 67,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 68,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 69,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 70,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            }
        ],
        "avatar": null,
        "is_active": false,
        "job_title": "Administrator",
        "created_at": "2026-10-19",
        "contract_type": "full_time",
        "last_login_at": null
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/dashboard/admins/4/force-delete

Permanently Delete Admin

Force delete Admin.

Permanently remove the Admin record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/dashboard/roles/trash

Get Deleted Role

List deleted Role.

Retrieve a list of soft-deleted Role records from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 3,
            "name": "Test Role",
            "is_active": false,
            "translate": {
                "name": {
                    "ar": "دور تقليدى",
                    "en": "Test Role"
                },
                "description": {
                    "ar": "وصف الدور التقليدى",
                    "en": "Default Role Description"
                }
            },
            "created_at": "2026-10-19",
            "description": "Role description",
            "permissions": [
                {
                    "id": 71,
                    "name": "users_fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                }
            ],
            "admins_count": 0,
            "permissions_count": 0
        }
    ],
    "message": "Trashed roles retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 1,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
PATCH /api/v1/dashboard/roles/3/restore

Restore Role

Restore deleted Role.

Restore a previously deleted Role record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Test Role",
        "is_active": false,
        "translate": {
            "name": {
                "ar": "دور تقليدى",
                "en": "Test Role"
            },
            "description": {
                "ar": "وصف الدور التقليدى",
                "en": "Default Role Description"
            }
        },
        "created_at": "2026-10-19",
        "description": "Role description",
        "permissions": [
            {
                "id": 71,
                "name": "users_fetch",
                "title": "Fetch Data",
                "model_id": 1,
                "permission_id": 1
            }
        ],
        "admins_count": 0,
        "permissions_count": 0
    },
    "message": "Role restored successfully.",
    "success": true
}
DELETE /api/v1/dashboard/roles/3/force-delete

Permanently Delete Role

Force delete Role.

Permanently remove the Role record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Role permanently deleted.",
    "success": true
}

Activity Logs

GET /api/v1/dashboard/activity-logs/3

Get Admin Activity Logs By Subject

Get activity logs by subject.

Returns the activity log entries that belong to the given subject id (e.g. an admin or role record).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 13,
            "action": "updated",
            "causer": {
                "id": 1,
                "name": "Admin",
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "subject": {
                "id": 3,
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "log_type": "admin",
            "created_at": "2026-10-19 07:11:35",
            "ip_address": "127.0.0.1",
            "properties": {
                "new": {
                    "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw",
                    "change_password_expired_at": "2026-10-19 07:21:35"
                },
                "old": {
                    "change_password_token": null,
                    "change_password_expired_at": null
                }
            },
            "user_agent": "GuzzleHttp\/7",
            "description": "Record updated in Admins"
        },
        {
            "id": 12,
            "action": "updated",
            "causer": {
                "id": 1,
                "name": "Admin",
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "subject": {
                "id": 3,
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "log_type": "admin",
            "created_at": "2026-10-19 07:11:32",
            "ip_address": "127.0.0.1",
            "properties": {
                "new": {
                    "change_password_token": null,
                    "change_password_expired_at": null
                },
                "old": {
                    "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw",
                    "change_password_expired_at": "2026-10-19T07:21:24.000000Z"
                }
            },
            "user_agent": "GuzzleHttp\/7",
            "description": "Record updated in Admins"
        },
        {
            "id": 11,
            "action": "updated",
            "causer": {
                "id": 1,
                "name": "Admin",
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "subject": {
                "id": 3,
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "log_type": "admin",
            "created_at": "2026-10-19 07:11:24",
            "ip_address": "127.0.0.1",
            "properties": {
                "new": {
                    "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw",
                    "change_password_expired_at": "2026-10-19 07:21:24"
                },
                "old": {
                    "change_password_token": null,
                    "change_password_expired_at": null
                }
            },
            "user_agent": "GuzzleHttp\/7",
            "description": "Record updated in Admins"
        },
        {
            "id": 10,
            "action": "updated",
            "causer": {
                "id": 1,
                "name": "Admin",
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "subject": {
                "id": 3,
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "log_type": "admin",
            "created_at": "2026-10-19 07:11:22",
            "ip_address": "127.0.0.1",
            "properties": {
                "new": {
                    "last_login_at": "2026-10-19T07:11:22.373798Z"
                },
                "old": {
                    "last_login_at": null
                }
            },
            "user_agent": "GuzzleHttp\/7",
            "description": "Record updated in Admins"
        },
        {
            "id": 7,
            "action": "updated",
            "causer": {
                "id": 1,
                "name": "Admin",
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "subject": {
                "id": 3,
                "type": "Modules\\Users\\Models\\User"
            },
            "log_type": "user",
            "created_at": "2026-10-19 07:10:53",
            "ip_address": "127.0.0.1",
            "properties": {
                "new": {
                    "change_password_token": null,
                    "change_password_expired_at": null
                },
                "old": {
                    "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw",
                    "change_password_expired_at": "2026-10-19T07:20:46.000000Z"
                }
            },
            "user_agent": "GuzzleHttp\/7",
            "description": "Record updated in User"
        },
        {
            "id": 6,
            "action": "updated",
            "causer": {
                "id": 1,
                "name": "Admin",
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "subject": {
                "id": 3,
                "type": "Modules\\Users\\Models\\User"
            },
            "log_type": "user",
            "created_at": "2026-10-19 07:10:46",
            "ip_address": "127.0.0.1",
            "properties": {
                "new": {
                    "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw",
                    "change_password_expired_at": "2026-10-19 07:20:46"
                },
                "old": {
                    "change_password_token": null,
                    "change_password_expired_at": null
                }
            },
            "user_agent": "GuzzleHttp\/7",
            "description": "Record updated in User"
        },
        {
            "id": 5,
            "action": "updated",
            "causer": {
                "id": 1,
                "name": "Admin",
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "subject": {
                "id": 3,
                "type": "Modules\\Users\\Models\\User"
            },
            "log_type": "user",
            "created_at": "2026-10-19 07:10:44",
            "ip_address": "127.0.0.1",
            "properties": {
                "new": {
                    "last_login_at": "2026-10-19 07:10:44"
                },
                "old": {
                    "last_login_at": null
                }
            },
            "user_agent": "GuzzleHttp\/7",
            "description": "Record updated in User"
        },
        {
            "id": 4,
            "action": "created",
            "causer": {
                "id": 1,
                "name": "Admin",
                "type": "Modules\\Admins\\Models\\Admins"
            },
            "subject": {
                "id": 3,
                "type": "Modules\\Users\\Models\\User"
            },
            "log_type": "user",
            "created_at": "2026-10-19 07:10:41",
            "ip_address": "127.0.0.1",
            "properties": {
                "attributes": {
                    "id": 3,
                    "name": "New User",
                    "email": "user@example.com",
                    "phone": "01011112222",
                    "avatar": "",
                    "password": "$2y$12$b4BT7U19n530g61zMPcUP.Yuiz.EC6p.fO.2rIHDAf7ESYp2zvVt.",
                    "country_id": 1,
                    "created_at": "2026-10-19 07:10:41",
                    "updated_at": "2026-10-19 07:10:41",
                    "phone_verified_at": "2026-10-19 07:10:40"
                }
            },
            "user_agent": "GuzzleHttp\/7",
            "description": "Record created in User"
        }
    ],
    "message": "Success",
    "success": true,
    "pagination": {
        "total": 8,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/activity-logs/3/export

Export Admin Activity Logs By Subject

Export activity logs by subject.

Generates a CSV file with the activity log entries for the given subject id, stores it on the public disk, and returns the file name, path, and a download link. The file is deleted automatically after it is downloaded.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "url": "http:\/\/qeei_backend_admin.test\/api\/v1\/dashboard\/activity-logs\/export\/activity-log-export-3-20261019_071145.csv\/download",
        "path": "exports\/activity-logs\/activity-log-export-3-20261019_071145.csv",
        "file_name": "activity-log-export-3-20261019_071145.csv"
    }
}
GET /api/v1/dashboard/activity-logs/export/activity-log-export-3-20261019_071140.csv/download

Download Admin Activity Log Export

Download exported activity log file.

Downloads an exported activity log CSV file and deletes it from storage after the download completes.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
null

Roles?Search=Admin

GET /api/v1/dashboard/roles?search=Admin

Search Roles

Search roles by name.

Retrieves a paginated list of roles whose translated name matches the optional search keyword (matches against any available locale).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Default Role",
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "دور تقليدى",
                    "en": "Default Role"
                },
                "description": {
                    "ar": "وصف الدور التقليدى",
                    "en": "Default Role Description"
                }
            },
            "created_at": "2026-10-19",
            "description": "Default Role Description",
            "permissions": [
                {
                    "id": 1,
                    "name": "users-fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                },
                {
                    "id": 2,
                    "name": "users-create",
                    "title": "Create Data",
                    "model_id": 1,
                    "permission_id": 2
                },
                {
                    "id": 3,
                    "name": "users-read",
                    "title": "Read Data",
                    "model_id": 1,
                    "permission_id": 3
                },
                {
                    "id": 4,
                    "name": "users-update",
                    "title": "Update Data",
                    "model_id": 1,
                    "permission_id": 4
                },
                {
                    "id": 5,
                    "name": "users-delete",
                    "title": "Delete Data",
                    "model_id": 1,
                    "permission_id": 5
                },
                {
                    "id": 6,
                    "name": "valuers-fetch",
                    "title": "Fetch Data",
                    "model_id": 2,
                    "permission_id": 1
                },
                {
                    "id": 7,
                    "name": "valuers-create",
                    "title": "Create Data",
                    "model_id": 2,
                    "permission_id": 2
                },
                {
                    "id": 8,
                    "name": "valuers-read",
                    "title": "Read Data",
                    "model_id": 2,
                    "permission_id": 3
                },
                {
                    "id": 9,
                    "name": "valuers-update",
                    "title": "Update Data",
                    "model_id": 2,
                    "permission_id": 4
                },
                {
                    "id": 10,
                    "name": "valuers-delete",
                    "title": "Delete Data",
                    "model_id": 2,
                    "permission_id": 5
                },
                {
                    "id": 11,
                    "name": "requests-fetch",
                    "title": "Fetch Data",
                    "model_id": 3,
                    "permission_id": 1
                },
                {
                    "id": 12,
                    "name": "requests-create",
                    "title": "Create Data",
                    "model_id": 3,
                    "permission_id": 2
                },
                {
                    "id": 13,
                    "name": "requests-read",
                    "title": "Read Data",
                    "model_id": 3,
                    "permission_id": 3
                },
                {
                    "id": 14,
                    "name": "requests-update",
                    "title": "Update Data",
                    "model_id": 3,
                    "permission_id": 4
                },
                {
                    "id": 15,
                    "name": "requests-delete",
                    "title": "Delete Data",
                    "model_id": 3,
                    "permission_id": 5
                },
                {
                    "id": 16,
                    "name": "reports-fetch",
                    "title": "Fetch Data",
                    "model_id": 4,
                    "permission_id": 1
                },
                {
                    "id": 17,
                    "name": "reports-create",
                    "title": "Create Data",
                    "model_id": 4,
                    "permission_id": 2
                },
                {
                    "id": 18,
                    "name": "reports-read",
                    "title": "Read Data",
                    "model_id": 4,
                    "permission_id": 3
                },
                {
                    "id": 19,
                    "name": "reports-update",
                    "title": "Update Data",
                    "model_id": 4,
                    "permission_id": 4
                },
                {
                    "id": 20,
                    "name": "reports-delete",
                    "title": "Delete Data",
                    "model_id": 4,
                    "permission_id": 5
                },
                {
                    "id": 21,
                    "name": "team_management-fetch",
                    "title": "Fetch Data",
                    "model_id": 5,
                    "permission_id": 1
                },
                {
                    "id": 22,
                    "name": "team_management-create",
                    "title": "Create Data",
                    "model_id": 5,
                    "permission_id": 2
                },
                {
                    "id": 23,
                    "name": "team_management-read",
                    "title": "Read Data",
                    "model_id": 5,
                    "permission_id": 3
                },
                {
                    "id": 24,
                    "name": "team_management-update",
                    "title": "Update Data",
                    "model_id": 5,
                    "permission_id": 4
                },
                {
                    "id": 25,
                    "name": "team_management-delete",
                    "title": "Delete Data",
                    "model_id": 5,
                    "permission_id": 5
                },
                {
                    "id": 26,
                    "name": "finance-fetch",
                    "title": "Fetch Data",
                    "model_id": 6,
                    "permission_id": 1
                },
                {
                    "id": 27,
                    "name": "finance-create",
                    "title": "Create Data",
                    "model_id": 6,
                    "permission_id": 2
                },
                {
                    "id": 28,
                    "name": "finance-read",
                    "title": "Read Data",
                    "model_id": 6,
                    "permission_id": 3
                },
                {
                    "id": 29,
                    "name": "finance-update",
                    "title": "Update Data",
                    "model_id": 6,
                    "permission_id": 4
                },
                {
                    "id": 30,
                    "name": "finance-delete",
                    "title": "Delete Data",
                    "model_id": 6,
                    "permission_id": 5
                },
                {
                    "id": 31,
                    "name": "reviews-fetch",
                    "title": "Fetch Data",
                    "model_id": 7,
                    "permission_id": 1
                },
                {
                    "id": 32,
                    "name": "reviews-create",
                    "title": "Create Data",
                    "model_id": 7,
                    "permission_id": 2
                },
                {
                    "id": 33,
                    "name": "reviews-read",
                    "title": "Read Data",
                    "model_id": 7,
                    "permission_id": 3
                },
                {
                    "id": 34,
                    "name": "reviews-update",
                    "title": "Update Data",
                    "model_id": 7,
                    "permission_id": 4
                },
                {
                    "id": 35,
                    "name": "reviews-delete",
                    "title": "Delete Data",
                    "model_id": 7,
                    "permission_id": 5
                }
            ],
            "admins_count": 2,
            "permissions_count": 35
        },
        {
            "id": 2,
            "name": "Super Admin Role ",
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "دور تقليدى",
                    "en": "Super Admin Role "
                },
                "description": {
                    "ar": "وصف الدور التقليدى",
                    "en": "Default Role Description"
                }
            },
            "created_at": "2026-10-19",
            "description": "Super Admin Role Description",
            "permissions": [
                {
                    "id": 36,
                    "name": "users-fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                },
                {
                    "id": 37,
                    "name": "users-create",
                    "title": "Create Data",
                    "model_id": 1,
                    "permission_id": 2
                },
                {
                    "id": 38,
                    "name": "users-read",
                    "title": "Read Data",
                    "model_id": 1,
                    "permission_id": 3
                },
                {
                    "id": 39,
                    "name": "users-update",
                    "title": "Update Data",
                    "model_id": 1,
                    "permission_id": 4
                },
                {
                    "id": 40,
                    "name": "users-delete",
                    "title": "Delete Data",
                    "model_id": 1,
                    "permission_id": 5
                },
                {
                    "id": 41,
                    "name": "valuers-fetch",
                    "title": "Fetch Data",
                    "model_id": 2,
                    "permission_id": 1
                },
                {
                    "id": 42,
                    "name": "valuers-create",
                    "title": "Create Data",
                    "model_id": 2,
                    "permission_id": 2
                },
                {
                    "id": 43,
                    "name": "valuers-read",
                    "title": "Read Data",
                    "model_id": 2,
                    "permission_id": 3
                },
                {
                    "id": 44,
                    "name": "valuers-update",
                    "title": "Update Data",
                    "model_id": 2,
                    "permission_id": 4
                },
                {
                    "id": 45,
                    "name": "valuers-delete",
                    "title": "Delete Data",
                    "model_id": 2,
                    "permission_id": 5
                },
                {
                    "id": 46,
                    "name": "requests-fetch",
                    "title": "Fetch Data",
                    "model_id": 3,
                    "permission_id": 1
                },
                {
                    "id": 47,
                    "name": "requests-create",
                    "title": "Create Data",
                    "model_id": 3,
                    "permission_id": 2
                },
                {
                    "id": 48,
                    "name": "requests-read",
                    "title": "Read Data",
                    "model_id": 3,
                    "permission_id": 3
                },
                {
                    "id": 49,
                    "name": "requests-update",
                    "title": "Update Data",
                    "model_id": 3,
                    "permission_id": 4
                },
                {
                    "id": 50,
                    "name": "requests-delete",
                    "title": "Delete Data",
                    "model_id": 3,
                    "permission_id": 5
                },
                {
                    "id": 51,
                    "name": "reports-fetch",
                    "title": "Fetch Data",
                    "model_id": 4,
                    "permission_id": 1
                },
                {
                    "id": 52,
                    "name": "reports-create",
                    "title": "Create Data",
                    "model_id": 4,
                    "permission_id": 2
                },
                {
                    "id": 53,
                    "name": "reports-read",
                    "title": "Read Data",
                    "model_id": 4,
                    "permission_id": 3
                },
                {
                    "id": 54,
                    "name": "reports-update",
                    "title": "Update Data",
                    "model_id": 4,
                    "permission_id": 4
                },
                {
                    "id": 55,
                    "name": "reports-delete",
                    "title": "Delete Data",
                    "model_id": 4,
                    "permission_id": 5
                },
                {
                    "id": 56,
                    "name": "team_management-fetch",
                    "title": "Fetch Data",
                    "model_id": 5,
                    "permission_id": 1
                },
                {
                    "id": 57,
                    "name": "team_management-create",
                    "title": "Create Data",
                    "model_id": 5,
                    "permission_id": 2
                },
                {
                    "id": 58,
                    "name": "team_management-read",
                    "title": "Read Data",
                    "model_id": 5,
                    "permission_id": 3
                },
                {
                    "id": 59,
                    "name": "team_management-update",
                    "title": "Update Data",
                    "model_id": 5,
                    "permission_id": 4
                },
                {
                    "id": 60,
                    "name": "team_management-delete",
                    "title": "Delete Data",
                    "model_id": 5,
                    "permission_id": 5
                },
                {
                    "id": 61,
                    "name": "finance-fetch",
                    "title": "Fetch Data",
                    "model_id": 6,
                    "permission_id": 1
                },
                {
                    "id": 62,
                    "name": "finance-create",
                    "title": "Create Data",
                    "model_id": 6,
                    "permission_id": 2
                },
                {
                    "id": 63,
                    "name": "finance-read",
                    "title": "Read Data",
                    "model_id": 6,
                    "permission_id": 3
                },
                {
                    "id": 64,
                    "name": "finance-update",
                    "title": "Update Data",
                    "model_id": 6,
                    "permission_id": 4
                },
                {
                    "id": 65,
                    "name": "finance-delete",
                    "title": "Delete Data",
                    "model_id": 6,
                    "permission_id": 5
                },
                {
                    "id": 66,
                    "name": "reviews-fetch",
                    "title": "Fetch Data",
                    "model_id": 7,
                    "permission_id": 1
                },
                {
                    "id": 67,
                    "name": "reviews-create",
                    "title": "Create Data",
                    "model_id": 7,
                    "permission_id": 2
                },
                {
                    "id": 68,
                    "name": "reviews-read",
                    "title": "Read Data",
                    "model_id": 7,
                    "permission_id": 3
                },
                {
                    "id": 69,
                    "name": "reviews-update",
                    "title": "Update Data",
                    "model_id": 7,
                    "permission_id": 4
                },
                {
                    "id": 70,
                    "name": "reviews-delete",
                    "title": "Delete Data",
                    "model_id": 7,
                    "permission_id": 5
                }
            ],
            "admins_count": 2,
            "permissions_count": 35
        },
        {
            "id": 3,
            "name": "Test Role",
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "دور تقليدى",
                    "en": "Test Role"
                },
                "description": {
                    "ar": "وصف الدور التقليدى",
                    "en": "Default Role Description"
                }
            },
            "created_at": "2026-10-19",
            "description": "Role description",
            "permissions": [
                {
                    "id": 71,
                    "name": "users_fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                }
            ],
            "admins_count": 0,
            "permissions_count": 1
        }
    ],
    "message": "Roles retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 3,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}

Models

GET /api/v1/dashboard/models

Get Permission Models

List permission models.

Retrieves every module with its available permissions and IDs, for use when building the role create/edit permissions form. Does not require a role id.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "title": "Users",
            "permissions": [
                {
                    "id": 1,
                    "name": "fetch",
                    "title": "Fetch Data"
                },
                {
                    "id": 2,
                    "name": "create",
                    "title": "Create Data"
                },
                {
                    "id": 3,
                    "name": "read",
                    "title": "Read Data"
                },
                {
                    "id": 4,
                    "name": "update",
                    "title": "Update Data"
                },
                {
                    "id": 5,
                    "name": "delete",
                    "title": "Delete Data"
                }
            ]
        },
        {
            "id": 2,
            "title": "Valuers",
            "permissions": [
                {
                    "id": 1,
                    "name": "fetch",
                    "title": "Fetch Data"
                },
                {
                    "id": 2,
                    "name": "create",
                    "title": "Create Data"
                },
                {
                    "id": 3,
                    "name": "read",
                    "title": "Read Data"
                },
                {
                    "id": 4,
                    "name": "update",
                    "title": "Update Data"
                },
                {
                    "id": 5,
                    "name": "delete",
                    "title": "Delete Data"
                }
            ]
        },
        {
            "id": 3,
            "title": "Requests",
            "permissions": [
                {
                    "id": 1,
                    "name": "fetch",
                    "title": "Fetch Data"
                },
                {
                    "id": 2,
                    "name": "create",
                    "title": "Create Data"
                },
                {
                    "id": 3,
                    "name": "read",
                    "title": "Read Data"
                },
                {
                    "id": 4,
                    "name": "update",
                    "title": "Update Data"
                },
                {
                    "id": 5,
                    "name": "delete",
                    "title": "Delete Data"
                }
            ]
        },
        {
            "id": 4,
            "title": "Reports",
            "permissions": [
                {
                    "id": 1,
                    "name": "fetch",
                    "title": "Fetch Data"
                },
                {
                    "id": 2,
                    "name": "create",
                    "title": "Create Data"
                },
                {
                    "id": 3,
                    "name": "read",
                    "title": "Read Data"
                },
                {
                    "id": 4,
                    "name": "update",
                    "title": "Update Data"
                },
                {
                    "id": 5,
                    "name": "delete",
                    "title": "Delete Data"
                }
            ]
        },
        {
            "id": 5,
            "title": "Team Management",
            "permissions": [
                {
                    "id": 1,
                    "name": "fetch",
                    "title": "Fetch Data"
                },
                {
                    "id": 2,
                    "name": "create",
                    "title": "Create Data"
                },
                {
                    "id": 3,
                    "name": "read",
                    "title": "Read Data"
                },
                {
                    "id": 4,
                    "name": "update",
                    "title": "Update Data"
                },
                {
                    "id": 5,
                    "name": "delete",
                    "title": "Delete Data"
                }
            ]
        },
        {
            "id": 6,
            "title": "Finance",
            "permissions": [
                {
                    "id": 1,
                    "name": "fetch",
                    "title": "Fetch Data"
                },
                {
                    "id": 2,
                    "name": "create",
                    "title": "Create Data"
                },
                {
                    "id": 3,
                    "name": "read",
                    "title": "Read Data"
                },
                {
                    "id": 4,
                    "name": "update",
                    "title": "Update Data"
                },
                {
                    "id": 5,
                    "name": "delete",
                    "title": "Delete Data"
                }
            ]
        },
        {
            "id": 7,
            "title": "reviews",
            "permissions": [
                {
                    "id": 1,
                    "name": "fetch",
                    "title": "Fetch Data"
                },
                {
                    "id": 2,
                    "name": "create",
                    "title": "Create Data"
                },
                {
                    "id": 3,
                    "name": "read",
                    "title": "Read Data"
                },
                {
                    "id": 4,
                    "name": "update",
                    "title": "Update Data"
                },
                {
                    "id": 5,
                    "name": "delete",
                    "title": "Delete Data"
                }
            ]
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 7,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}

Users

GET /api/v1/dashboard/users

Get User List

Retrieve a list of User.

Retrieves a list of User records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "Updated User Name",
            "email": "updated_email@example.com",
            "phone": "01011113333",
            "token": null,
            "avatar": null,
            "is_active": true,
            "created_at": "2026-10-19",
            "expires_in": null,
            "token_type": "Bearer",
            "postal_code": null,
            "country_code": null,
            "main_address": null,
            "last_login_at": null
        },
        {
            "id": 3,
            "name": "New User",
            "email": "user@example.com",
            "phone": "01011112222",
            "token": null,
            "avatar": null,
            "is_active": true,
            "created_at": "2026-10-19",
            "expires_in": null,
            "token_type": "Bearer",
            "postal_code": null,
            "country_code": "20",
            "main_address": null,
            "last_login_at": "2026-10-19 07:10:44"
        },
        {
            "id": 4,
            "name": "Demo User",
            "email": "user2@demo.com",
            "phone": "01211172299",
            "token": null,
            "avatar": null,
            "is_active": true,
            "created_at": "2026-10-19",
            "expires_in": null,
            "token_type": "Bearer",
            "postal_code": null,
            "country_code": null,
            "main_address": null,
            "last_login_at": "2026-10-19 07:11:56"
        }
    ],
    "message": "Users retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 3,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/users/14

Get User Details

Retrieve User details.

Retrieves detailed information about a specific User using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 14,
        "name": "Mona Manager",
        "email": "mona.manager@doc.example.com",
        "phone": "500000020",
        "token": null,
        "avatar": null,
        "is_active": true,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "postal_code": null,
        "country_code": "999",
        "main_address": null,
        "last_login_at": null
    },
    "message": "User details retrieved successfully.",
    "success": true
}
PATCH /api/v1/dashboard/users/14/toggle-active

Toggle User Status

Switch the User status between active and inactive.

Updates the status of the specified User by toggling it between active and inactive. This operation allows enabling or disabling the resource without deleting it from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 14,
        "name": "Mona Manager",
        "email": "mona.manager@doc.example.com",
        "phone": "500000020",
        "token": null,
        "avatar": null,
        "is_active": false,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "postal_code": null,
        "country_code": "999",
        "main_address": null,
        "last_login_at": null
    },
    "message": "User status updated successfully.",
    "success": true
}
DELETE /api/v1/dashboard/users/14

Delete User

Delete a User.

Deletes the specified User from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "User deleted successfully.",
    "success": true
}
GET /api/v1/dashboard/users/trash

Get Deleted User

List deleted User.

Retrieve a list of soft-deleted User records from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "name": "Delete User",
            "email": "delete_user@example.com",
            "phone": "01011119999",
            "token": null,
            "avatar": null,
            "is_active": true,
            "created_at": "2026-10-19",
            "expires_in": null,
            "token_type": "Bearer",
            "postal_code": null,
            "country_code": null,
            "main_address": null,
            "last_login_at": null
        },
        {
            "id": 14,
            "name": "Mona Manager",
            "email": "mona.manager@doc.example.com",
            "phone": "500000020",
            "token": null,
            "avatar": null,
            "is_active": false,
            "created_at": "2026-10-19",
            "expires_in": null,
            "token_type": "Bearer",
            "postal_code": null,
            "country_code": "999",
            "main_address": null,
            "last_login_at": null
        }
    ],
    "message": "Trashed users retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
PATCH /api/v1/dashboard/users/14/restore

Restore User

Restore deleted User.

Restore a previously deleted User record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 14,
        "name": "Mona Manager",
        "email": "mona.manager@doc.example.com",
        "phone": "500000020",
        "token": null,
        "avatar": null,
        "is_active": false,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "postal_code": null,
        "country_code": "999",
        "main_address": null,
        "last_login_at": null
    },
    "message": "User restored successfully.",
    "success": true
}
DELETE /api/v1/dashboard/users/14/force-delete

Permanently Delete User

Force delete User.

Permanently remove the User record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "User force deleted permanently.",
    "success": true
}

Locations

GET /api/v1/locations/country

Get Countries List

Locations

Get Countries List

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "code": "EG",
            "type": "country",
            "name_ar": "مصر",
            "name_en": "Egypt",
            "is_active": true,
            "phone_code": "20",
            "setting_id": null,
            "phone_length": 11
        },
        {
            "id": 2,
            "code": null,
            "type": "country",
            "name_ar": "دولة التوثيق",
            "name_en": "Documentation country",
            "is_active": true,
            "phone_code": null,
            "setting_id": null,
            "phone_length": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/locations/country/search

Search Countries

Locations

Search Countries

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
keyword string Egypt
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "code": "EG",
            "type": "country",
            "name_ar": "مصر",
            "name_en": "Egypt",
            "is_active": true,
            "phone_code": "20",
            "setting_id": null,
            "phone_length": 11
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/locations/city

Get Cities List

Locations

Get Cities List

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "code": "EG",
            "type": "country",
            "cities": [],
            "name_ar": "مصر",
            "name_en": "Egypt",
            "is_active": true,
            "phone_code": "20",
            "setting_id": null,
            "phone_length": 11
        },
        {
            "id": 2,
            "code": null,
            "type": "country",
            "cities": [],
            "name_ar": "دولة التوثيق",
            "name_en": "Documentation country",
            "is_active": true,
            "phone_code": null,
            "setting_id": null,
            "phone_length": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/locations/city/search

Search Cities

Locations

Search Cities

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
keyword string Cairo
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "code": "EG",
            "type": "country",
            "cities": [],
            "name_ar": "مصر",
            "name_en": "Egypt",
            "is_active": true,
            "phone_code": "20",
            "setting_id": null,
            "phone_length": 11
        },
        {
            "id": 2,
            "code": null,
            "type": "country",
            "cities": [],
            "name_ar": "دولة التوثيق",
            "name_en": "Documentation country",
            "is_active": true,
            "phone_code": null,
            "setting_id": null,
            "phone_length": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/locations/country/1/cities

Get Cities By country

Locations

Get Cities By Country

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/locations/nationality

Get Nationalities List

Locations

Get Nationalities List

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true
}

FAQs

POST /api/v1/faqs

Create Faq

Create a new Faq.

Creates a new Faq in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
answer array {"ar":"\u0625\u062c\u0627\u0628\u0629 \u062a\u062c\u0631\u064a\u0628\u064a\u0629","en":"Test answer"}
question array {"ar":"\u0633\u0624\u0627\u0644 \u062a\u062c\u0631\u064a\u0628\u064a 21635182","en":"Test question 21635182"}
is_active integer 1

Request Validations Or Notes

Field/Name Examples
question.ar required, ArabicLetters
question.en required, EnglishLetters
answer.ar optional, ArabicLetters
answer.en optional, EnglishLetters
is_active optional, true/false
Success (200 OK)
{
    "data": {
        "id": 3,
        "answer": "Test answer",
        "question": "Test question 21635182",
        "is_active": true,
        "translate": {
            "answer": {
                "ar": "إجابة تجريبية",
                "en": "Test answer"
            },
            "question": {
                "ar": "سؤال تجريبي 21635182",
                "en": "Test question 21635182"
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "faq::faq.inserted",
    "success": true
}
GET /api/v1/faqs

Get Faq List

Retrieve a list of Faq.

Retrieves a list of Faq records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "answer": "",
            "question": "",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "",
                    "en": ""
                },
                "question": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19"
        },
        {
            "id": 3,
            "answer": "Test answer",
            "question": "Test question 21635182",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "إجابة تجريبية",
                    "en": "Test answer"
                },
                "question": {
                    "ar": "سؤال تجريبي 21635182",
                    "en": "Test question 21635182"
                }
            },
            "created_at": "2026-10-19"
        }
    ],
    "message": "faq::faq.retrieved",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "total_faqs": 2,
    "active_faqs": 2,
    "inactive_faqs": 0
}
GET /api/v1/faqs

Search FAQs

Search FAQs.

Search FAQs by question/answer keyword via the index endpoint (?search=).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
search string test
Success (200 OK)
{
    "data": [
        {
            "id": 3,
            "answer": "Test answer",
            "question": "Test question 21635182",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "إجابة تجريبية",
                    "en": "Test answer"
                },
                "question": {
                    "ar": "سؤال تجريبي 21635182",
                    "en": "Test question 21635182"
                }
            },
            "created_at": "2026-10-19"
        }
    ],
    "message": "faq::faq.retrieved",
    "success": true,
    "pagination": {
        "total": 1,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "total_faqs": 2,
    "active_faqs": 2,
    "inactive_faqs": 0
}
GET /api/v1/faqs

Filter FAQs by status

Filter FAQs by status.

Filter FAQs by active status via the index endpoint (?status=1|0).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
status integer 1
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "answer": "",
            "question": "",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "",
                    "en": ""
                },
                "question": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19"
        },
        {
            "id": 3,
            "answer": "Test answer",
            "question": "Test question 21635182",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "إجابة تجريبية",
                    "en": "Test answer"
                },
                "question": {
                    "ar": "سؤال تجريبي 21635182",
                    "en": "Test question 21635182"
                }
            },
            "created_at": "2026-10-19"
        }
    ],
    "message": "faq::faq.retrieved",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "total_faqs": 2,
    "active_faqs": 2,
    "inactive_faqs": 0
}
GET /api/v1/faqs/1

Get Faq Details

Retrieve Faq details.

Retrieves detailed information about a specific Faq using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "answer": "",
        "question": "",
        "is_active": true,
        "translate": {
            "answer": {
                "ar": "",
                "en": ""
            },
            "question": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "faq::faq.retrieved",
    "success": true
}
PUT /api/v1/faqs/1

Update Faq

Update an existing Faq.

Updates the specified Faq with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
id integer 1
answer array {"ar":"\u0625\u062c\u0627\u0628\u0629 \u062a\u062c\u0631\u064a\u0628\u064a\u0629","en":"Test answer"}
question array {"ar":"\u0633\u0624\u0627\u0644 \u062a\u062c\u0631\u064a\u0628\u064a 62747610","en":"Updated question 62747610"}
is_active integer 1

Request Validations Or Notes

Field/Name Examples
question.ar optional, ArabicLetters
question.en optional, EnglishLetters
answer.ar optional, ArabicLetters
answer.en optional, EnglishLetters
is_active optional, true/false
Success (200 OK)
{
    "data": {
        "id": 1,
        "answer": "Test answer",
        "question": "Updated question 62747610",
        "is_active": true,
        "translate": {
            "answer": {
                "ar": "إجابة تجريبية",
                "en": "Test answer"
            },
            "question": {
                "ar": "سؤال تجريبي 62747610",
                "en": "Updated question 62747610"
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "faq::faq.updated",
    "success": true
}
PATCH /api/v1/faqs/1/switch-active

Toggle Faq Status

Switch the Faq status between active and inactive.

Updates the status of the specified Faq by toggling it between active and inactive. This operation allows enabling or disabling the resource without deleting it from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "answer": "Test answer",
        "question": "Updated question 62747610",
        "is_active": false,
        "translate": {
            "answer": {
                "ar": "إجابة تجريبية",
                "en": "Test answer"
            },
            "question": {
                "ar": "سؤال تجريبي 62747610",
                "en": "Updated question 62747610"
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "faq::faq.updated",
    "success": true
}
DELETE /api/v1/faqs/1

Delete Faq

Delete a Faq.

Deletes the specified Faq from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "faq::faq.deleted",
    "success": true
}
GET /api/v1/faqs/trash

Get Deleted Faq

List deleted Faq.

Retrieve a list of soft-deleted Faq records from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "answer": "Test answer",
            "question": "Updated question 62747610",
            "is_active": false,
            "translate": {
                "answer": {
                    "ar": "إجابة تجريبية",
                    "en": "Test answer"
                },
                "question": {
                    "ar": "سؤال تجريبي 62747610",
                    "en": "Updated question 62747610"
                }
            },
            "created_at": "2026-10-19"
        },
        {
            "id": 2,
            "answer": "",
            "question": "",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "",
                    "en": ""
                },
                "question": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19"
        },
        {
            "id": 4,
            "answer": "",
            "question": "",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "",
                    "en": ""
                },
                "question": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19"
        },
        {
            "id": 5,
            "answer": "",
            "question": "",
            "is_active": true,
            "translate": {
                "answer": {
                    "ar": "",
                    "en": ""
                },
                "question": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19"
        }
    ],
    "message": "faq::faq.retrieved",
    "success": true,
    "pagination": {
        "total": 4,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "total_faqs": 1,
    "active_faqs": 1,
    "inactive_faqs": 0
}
PATCH /api/v1/faqs/5/restore

Restore Faq

Restore deleted Faq.

Restore a previously deleted Faq record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "faq::faq.restored",
    "success": true
}

Categories

POST /api/v1/dashboard/categories

Create Category

Create a new Category.

Creates a new Category in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
icon string icon-14890347.png
name array {"ar":"\u062a\u0635\u0646\u064a\u0641 \u062a\u062c\u0631\u064a\u0628\u064a 14890347","en":"Test Category 14890347"}
status integer 1
valuers integer 10
service_no integer 1
description array {"ar":"\u0648\u0635\u0641 \u062a\u062c\u0631\u064a\u0628\u064a","en":"Test description"}

Request Validations Or Notes

Field/Name Examples
name.ar required, ArabicLetters
name.en required, EnglishLetters
description.ar optional, ArabicLetters
description.en optional, EnglishLetters
icon optional, string, max 255
service_no optional, integer
valuers optional, integer
status optional, true/false
Success (200 OK)
{
    "data": {
        "id": 3,
        "icon": "icon-14890347.png",
        "name": "Test Category 14890347",
        "status": true,
        "valuers": 10,
        "translate": {
            "name": {
                "ar": "تصنيف تجريبي 14890347",
                "en": "Test Category 14890347"
            },
            "description": {
                "ar": "وصف تجريبي",
                "en": "Test description"
            }
        },
        "created_at": "2026-10-19",
        "service_no": 1,
        "description": "Test description"
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/dashboard/categories

Get Category List

Retrieve a list of Category.

Retrieves a list of Category records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "icon": "test-icon.png",
            "name": "",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": ""
        },
        {
            "id": 3,
            "icon": "icon-14890347.png",
            "name": "Test Category 14890347",
            "status": true,
            "valuers": 10,
            "translate": {
                "name": {
                    "ar": "تصنيف تجريبي 14890347",
                    "en": "Test Category 14890347"
                },
                "description": {
                    "ar": "وصف تجريبي",
                    "en": "Test description"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Test description"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/categories/8

Get Category Details

Retrieve Category details.

Retrieves detailed information about a specific Category using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 8,
        "icon": "mobile-equipment-icon.png",
        "name": "Equipment",
        "status": true,
        "valuers": 1,
        "translate": {
            "name": {
                "ar": "معدات",
                "en": "Equipment"
            },
            "description": {
                "ar": "معدات",
                "en": "Equipment"
            }
        },
        "created_at": "2026-10-19",
        "service_no": 1,
        "description": "Equipment"
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/dashboard/categories/8

Update Category

Update an existing Category.

Updates the specified Category with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
id integer 8
icon string icon-upd-67191901.png
name array {"ar":"\u062a\u0635\u0646\u064a\u0641 \u062a\u062c\u0631\u064a\u0628\u064a 67191901","en":"Test Category 67191901"}
status integer 1
valuers integer 10
service_no integer 1
description array {"ar":"\u0648\u0635\u0641 \u062a\u062c\u0631\u064a\u0628\u064a","en":"Test description"}

Request Validations Or Notes

Field/Name Examples
name.ar required, ArabicLetters
name.en required, EnglishLetters
description.ar optional, ArabicLetters
description.en optional, EnglishLetters
icon optional, string, max 255
service_no optional, integer
valuers optional, integer
status optional, true/false
Success (200 OK)
{
    "data": {
        "id": 8,
        "icon": "icon-upd-67191901.png",
        "name": "Test Category 67191901",
        "status": true,
        "valuers": 10,
        "translate": {
            "name": {
                "ar": "تصنيف تجريبي 67191901",
                "en": "Test Category 67191901"
            },
            "description": {
                "ar": "وصف تجريبي",
                "en": "Test description"
            }
        },
        "created_at": "2026-10-19",
        "service_no": 1,
        "description": "Test description"
    },
    "message": "Data updated successfully.",
    "success": true
}
PATCH /api/v1/dashboard/categories/8/toggle-active

Toggle Category Status

Switch the Category status between active and inactive.

Updates the status of the specified Category by toggling it between active and inactive. This operation allows enabling or disabling the resource without deleting it from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 8,
        "icon": "icon-upd-67191901.png",
        "name": "Test Category 67191901",
        "status": false,
        "valuers": 10,
        "translate": {
            "name": {
                "ar": "تصنيف تجريبي 67191901",
                "en": "Test Category 67191901"
            },
            "description": {
                "ar": "وصف تجريبي",
                "en": "Test description"
            }
        },
        "created_at": "2026-10-19",
        "service_no": 1,
        "description": "Test description"
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/dashboard/categories/8

Delete Category

Delete a Category.

Deletes the specified Category from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/dashboard/categories/trash

Get Deleted Category

List deleted Category.

Retrieve a list of soft-deleted Category records from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "icon": "trashed-icon.png",
            "name": "",
            "status": true,
            "valuers": 2,
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19",
            "service_no": 2,
            "description": ""
        },
        {
            "id": 8,
            "icon": "icon-upd-67191901.png",
            "name": "Test Category 67191901",
            "status": false,
            "valuers": 10,
            "translate": {
                "name": {
                    "ar": "تصنيف تجريبي 67191901",
                    "en": "Test Category 67191901"
                },
                "description": {
                    "ar": "وصف تجريبي",
                    "en": "Test description"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Test description"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
PATCH /api/v1/dashboard/categories/8/restore

Restore Category

Restore deleted Category.

Restore a previously deleted Category record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data restored successfully.",
    "success": true
}
DELETE /api/v1/dashboard/categories/8/force-delete

Permanently Delete Category

Force delete Category.

Permanently remove the Category record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}

Categories?Search=Test+Category+14890347

GET /api/v1/dashboard/categories?search=Test+Category+14890347

Search Category List

Retrieve a list of Category.

Filters the categories list by matching the search term against the category name.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "icon": "test-icon.png",
            "name": "",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": ""
        },
        {
            "id": 3,
            "icon": "icon-14890347.png",
            "name": "Test Category 14890347",
            "status": true,
            "valuers": 10,
            "translate": {
                "name": {
                    "ar": "تصنيف تجريبي 14890347",
                    "en": "Test Category 14890347"
                },
                "description": {
                    "ar": "وصف تجريبي",
                    "en": "Test description"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Test description"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}

Categories?Status=1

GET /api/v1/dashboard/categories?status=1

Filter Category List by Active Status

Retrieve a list of Category.

Filters the categories list to only active categories (status=1).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "icon": "test-icon.png",
            "name": "",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": ""
        },
        {
            "id": 3,
            "icon": "icon-14890347.png",
            "name": "Test Category 14890347",
            "status": true,
            "valuers": 10,
            "translate": {
                "name": {
                    "ar": "تصنيف تجريبي 14890347",
                    "en": "Test Category 14890347"
                },
                "description": {
                    "ar": "وصف تجريبي",
                    "en": "Test description"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Test description"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}

Categories?Status=0

GET /api/v1/dashboard/categories?status=0

Filter Category List by Inactive Status

Retrieve a list of Category.

Filters the categories list to only inactive categories (status=0).

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "icon": "test-icon.png",
            "name": "",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": ""
        },
        {
            "id": 3,
            "icon": "icon-14890347.png",
            "name": "Test Category 14890347",
            "status": true,
            "valuers": 10,
            "translate": {
                "name": {
                    "ar": "تصنيف تجريبي 14890347",
                    "en": "Test Category 14890347"
                },
                "description": {
                    "ar": "وصف تجريبي",
                    "en": "Test description"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Test description"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}

Categories?Search=Test+Category+14890347&Status=1

GET /api/v1/dashboard/categories?search=Test+Category+14890347&status=1

Search and Filter Category List

Retrieve a list of Category.

Combines the search and status filters — both are applied together (AND condition), returning only active categories whose name matches the search term.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "icon": "test-icon.png",
            "name": "",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": ""
        },
        {
            "id": 3,
            "icon": "icon-14890347.png",
            "name": "Test Category 14890347",
            "status": true,
            "valuers": 10,
            "translate": {
                "name": {
                    "ar": "تصنيف تجريبي 14890347",
                    "en": "Test Category 14890347"
                },
                "description": {
                    "ar": "وصف تجريبي",
                    "en": "Test description"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Test description"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}

Static Pages

POST /api/v1/pages/police

Create Static_page

Create a new Static_page.

Creates a new Static_page in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name array {"ar":"\u0635\u0641\u062d\u0629 \u062a\u062c\u0631\u064a\u0628\u064a\u0629 41166850","en":"Test Page 41166850"}
type string police
content array {"ar":"\u0645\u062d\u062a\u0648\u0649 \u062a\u062c\u0631\u064a\u0628\u064a","en":"Test content"}
is_active integer 1

Request Validations Or Notes

Field/Name Examples
name.ar required, ArabicLetters
name.en required, EnglishLetters
content.ar required
content.en required
type required, unique static_pages, enum: about_us, police, terms
is_active optional, true/false
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Test Page 41166850",
        "type": "police",
        "content": "Test content",
        "is_active": true,
        "translate": {
            "name": {
                "ar": "صفحة تجريبية 41166850",
                "en": "Test Page 41166850"
            },
            "content": {
                "ar": "محتوى تجريبي",
                "en": "Test content"
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/pages/about_us

Get Static_page List

Retrieve a list of Static_page.

Retrieves a list of Static_page records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "",
        "type": "about_us",
        "content": "",
        "is_active": true,
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "content": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/pages/about_us/1

Get Static_page Details

Retrieve Static_page details.

Retrieves detailed information about a specific Static_page using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "",
        "type": "about_us",
        "content": "",
        "is_active": true,
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "content": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/pages/about_us/1

Update Static_page

Update an existing Static_page.

Updates the specified Static_page with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name array {"ar":"\u0635\u0641\u062d\u0629 \u062a\u062c\u0631\u064a\u0628\u064a\u0629 91047398","en":"Updated Page 91047398"}
type string about_us
content array {"ar":"\u0645\u062d\u062a\u0648\u0649 \u062a\u062c\u0631\u064a\u0628\u064a","en":"Updated content"}
is_active integer 1

Request Validations Or Notes

Field/Name Examples
name.ar optional, ArabicLetters
name.en optional, EnglishLetters
content.ar optional
content.en optional
type optional, enum: about_us, police, terms, Unique
is_active optional, true/false
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Updated Page 91047398",
        "type": "about_us",
        "content": "Updated content",
        "is_active": true,
        "translate": {
            "name": {
                "ar": "صفحة تجريبية 91047398",
                "en": "Updated Page 91047398"
            },
            "content": {
                "ar": "محتوى تجريبي",
                "en": "Updated content"
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data updated successfully.",
    "success": true
}
PATCH /api/v1/pages/1/switch-active

Toggle Static_page Status

Switch the Static_page status between active and inactive.

Updates the status of the specified Static_page by toggling it between active and inactive. This operation allows enabling or disabling the resource without deleting it from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Updated Page 91047398",
        "type": "about_us",
        "content": "Updated content",
        "is_active": false,
        "translate": {
            "name": {
                "ar": "صفحة تجريبية 91047398",
                "en": "Updated Page 91047398"
            },
            "content": {
                "ar": "محتوى تجريبي",
                "en": "Updated content"
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/pages/5/force-delete

Permanently Delete Static_page

Force delete Static_page.

Permanently remove the Static_page record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}

Manage Plans

POST /api/v1/plans

Create Manage plan

Create a new Manage plan.

Creates a new Manage plan in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name array {"ar":"\u062e\u0637\u0629 54785994","en":"Plan 54785994"}
color string #D97706
features array [{"id":1,"value":100}]
is_active integer 1
sale_price integer 50
badge_label array {"ar":"\u0645\u0645\u064a\u0632","en":"Featured"}
billing_cycle string monthly
platform_type string user
regular_price integer 100

Request Validations Or Notes

Field/Name Examples
name.ar required, ArabicLetters
name.en required, EnglishLetters
badge_label.ar optional, ArabicLetters
badge_label.en optional, EnglishLetters
platform_type required, allowed: user, valuer
regular_price required, number, min 0
billing_cycle required, allowed: monthly, yearly
sale_price optional, number, min 0, lt
sale_type optional, allowed: percentage, fixed
color optional, string, regex
is_active optional, true/false
features optional, array
features[].id required, exists manage_plan_features,id
features[].value optional, integer
features[].name.ar optional, ArabicLetters
features[].name.en optional, EnglishLetters
Success (200 OK)
{
    "data": {
        "id": 5,
        "name": "Plan 54785994",
        "color": "#D97706",
        "features": [
            {
                "id": 1,
                "name": "feature 1",
                "value": 100,
                "translate": {
                    "name": {
                        "ar": "خاصيه واحد",
                        "en": "feature 1"
                    }
                }
            }
        ],
        "is_active": true,
        "translate": {
            "name": {
                "ar": "خطة 54785994",
                "en": "Plan 54785994"
            },
            "badge_label": {
                "ar": "مميز",
                "en": "Featured"
            }
        },
        "sale_price": "50.00",
        "badge_label": "Featured",
        "renewal_date": null,
        "billing_cycle": "monthly",
        "is_subscribed": false,
        "platform_type": "user",
        "regular_price": "100.00",
        "remaining_days": null,
        "subscribers_count": 0
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/plans

Get Manage plan List

Retrieve a list of Manage plan.

Retrieves a list of Manage plan records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": null,
            "color": "#D97706",
            "features": [],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": null,
                    "en": null
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "50.00",
            "badge_label": null,
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "user",
            "regular_price": "100.00",
            "remaining_days": null,
            "subscribers_count": 0
        },
        {
            "id": 3,
            "name": "Company plan A",
            "color": "#059669",
            "features": [],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "خطة الشركة أ",
                    "en": "Company plan A"
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "50.00",
            "badge_label": null,
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "valuer",
            "regular_price": "100.00",
            "remaining_days": null,
            "subscribers_count": 0
        },
        {
            "id": 4,
            "name": "Company plan B",
            "color": "#6C5DD3",
            "features": [
                {
                    "id": 1,
                    "name": "feature 1",
                    "value": 100,
                    "translate": {
                        "name": {
                            "ar": "خاصيه واحد",
                            "en": "feature 1"
                        }
                    }
                }
            ],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "خطة الشركة ب",
                    "en": "Company plan B"
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "100.00",
            "badge_label": null,
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "valuer",
            "regular_price": "200.00",
            "remaining_days": null,
            "subscribers_count": 0
        },
        {
            "id": 5,
            "name": "Plan 54785994",
            "color": "#D97706",
            "features": [
                {
                    "id": 1,
                    "name": "feature 1",
                    "value": 100,
                    "translate": {
                        "name": {
                            "ar": "خاصيه واحد",
                            "en": "feature 1"
                        }
                    }
                }
            ],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "خطة 54785994",
                    "en": "Plan 54785994"
                },
                "badge_label": {
                    "ar": "مميز",
                    "en": "Featured"
                }
            },
            "sale_price": "50.00",
            "badge_label": "Featured",
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "user",
            "regular_price": "100.00",
            "remaining_days": null,
            "subscribers_count": 0
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 4,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "total_plans": 4,
    "total_subscribers": 0,
    "total_active_plans": 4,
    "total_inactive_plans": 0
}
GET /api/v1/plans/features

Get Manage Plan Features

Get manage plan features list.

Retrieve all manage plan features with the plans they are attached to and their values per plan.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": "feature 1",
            "plans": [
                {
                    "value": 100,
                    "manage_plan_id": 4
                },
                {
                    "value": 100,
                    "manage_plan_id": 5
                }
            ],
            "value": null,
            "translate": {
                "name": {
                    "ar": "خاصيه واحد",
                    "en": "feature 1"
                }
            }
        }
    ],
    "message": "Features retrieved successfully.",
    "success": true
}
GET /api/v1/plans/5

Get Manage plan Details

Retrieve Manage plan details.

Retrieves detailed information about a specific Manage plan using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "name": "Plan 54785994",
        "color": "#D97706",
        "features": [
            {
                "id": 1,
                "name": "feature 1",
                "value": 100,
                "translate": {
                    "name": {
                        "ar": "خاصيه واحد",
                        "en": "feature 1"
                    }
                }
            }
        ],
        "is_active": true,
        "translate": {
            "name": {
                "ar": "خطة 54785994",
                "en": "Plan 54785994"
            },
            "badge_label": {
                "ar": "مميز",
                "en": "Featured"
            }
        },
        "sale_price": "50.00",
        "badge_label": "Featured",
        "renewal_date": null,
        "billing_cycle": "monthly",
        "is_subscribed": false,
        "platform_type": "user",
        "regular_price": "100.00",
        "remaining_days": null,
        "subscribers_count": 0
    },
    "message": "Plan retrieved successfully.",
    "success": true
}
PUT /api/v1/plans/5

Update Manage plan

Update an existing Manage plan.

Updates the specified Manage plan with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
id integer 5
name array {"ar":"\u062e\u0637\u0629 90764274","en":"Plan 90764274"}
color string #D97706
features array [{"id":1,"value":"150"}]
is_active integer 1
sale_price integer 50
badge_label array {"ar":"\u0645\u0645\u064a\u0632","en":"Featured"}
billing_cycle string monthly
platform_type string user
regular_price integer 300

Request Validations Or Notes

Field/Name Examples
id required, exists manage_plans,id
name.ar optional, required, ArabicLetters
name.en optional, required, EnglishLetters
badge_label.ar optional, ArabicLetters
badge_label.en optional, EnglishLetters
platform_type optional, required, allowed: user, valuer
regular_price optional, required, number, min 0
billing_cycle optional, required, allowed: monthly, yearly
sale_price optional, number, min 0, lt
sale_type optional, allowed: percentage, fixed
color optional, string, regex
is_active optional, true/false
features optional, array
features[].id required, required_with, exists manage_plan_features,id
features[].value optional, integer
features[].name.ar optional, ArabicLetters
features[].name.en optional, EnglishLetters
Success (200 OK)
{
    "data": {
        "id": 5,
        "name": "Plan 90764274",
        "color": "#D97706",
        "features": [
            {
                "id": 1,
                "name": "feature 1",
                "value": 150,
                "translate": {
                    "name": {
                        "ar": "خاصيه واحد",
                        "en": "feature 1"
                    }
                }
            }
        ],
        "is_active": true,
        "translate": {
            "name": {
                "ar": "خطة 90764274",
                "en": "Plan 90764274"
            },
            "badge_label": {
                "ar": "مميز",
                "en": "Featured"
            }
        },
        "sale_price": "50.00",
        "badge_label": "Featured",
        "renewal_date": null,
        "billing_cycle": "monthly",
        "is_subscribed": false,
        "platform_type": "user",
        "regular_price": "300.00",
        "remaining_days": null,
        "subscribers_count": 0
    },
    "message": "Data updated successfully.",
    "success": true
}
PATCH /api/v1/plans/5/toggle-active

Toggle Manage plan Status

Switch the Manage plan status between active and inactive.

Updates the status of the specified Manage plan by toggling it between active and inactive. This operation allows enabling or disabling the resource without deleting it from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "name": {
            "ar": "خطة 90764274",
            "en": "Plan 90764274"
        },
        "color": "#D97706",
        "features": [
            {
                "id": 1,
                "pivot": {
                    "value": 150,
                    "created_at": "2026-10-19T07:13:34.000000Z",
                    "updated_at": "2026-10-19T07:25:53.000000Z",
                    "manage_plan_id": 5,
                    "manage_plan_feature_id": 1
                }
            }
        ],
        "is_active": false,
        "created_at": "2026-10-19T07:13:34.000000Z",
        "sale_price": "50.00",
        "badge_label": {
            "ar": "مميز",
            "en": "Featured"
        },
        "renewal_date": null,
        "billing_cycle": "monthly",
        "is_subscribed": false,
        "platform_type": "user",
        "regular_price": "300.00",
        "remaining_days": null,
        "subscribers_count": 0
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/plans/5

Delete Manage plan

Delete a Manage plan.

Deletes the specified Manage plan from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/plans/trash

Get Deleted Manage Plan

List deleted manage plans.

Get deleted manage plans.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "name": null,
            "color": "#D97706",
            "features": [],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": null,
                    "en": null
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "100.00",
            "badge_label": null,
            "renewal_date": null,
            "billing_cycle": "yearly",
            "is_subscribed": false,
            "platform_type": "user",
            "regular_price": "200.00",
            "remaining_days": null,
            "subscribers_count": 0
        },
        {
            "id": 5,
            "name": "Plan 90764274",
            "color": "#D97706",
            "features": [
                {
                    "id": 1,
                    "name": "feature 1",
                    "value": 150,
                    "translate": {
                        "name": {
                            "ar": "خاصيه واحد",
                            "en": "feature 1"
                        }
                    }
                }
            ],
            "is_active": false,
            "translate": {
                "name": {
                    "ar": "خطة 90764274",
                    "en": "Plan 90764274"
                },
                "badge_label": {
                    "ar": "مميز",
                    "en": "Featured"
                }
            },
            "sale_price": "50.00",
            "badge_label": "Featured",
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "user",
            "regular_price": "300.00",
            "remaining_days": null,
            "subscribers_count": 0
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "total_plans": 3,
    "total_subscribers": 0,
    "total_active_plans": 3,
    "total_inactive_plans": 0
}
PATCH /api/v1/plans/5/restore

Restore Manage plan

Restore deleted Manage plan.

Restore a previously deleted Manage plan record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "name": {
            "ar": "خطة 90764274",
            "en": "Plan 90764274"
        },
        "color": "#D97706",
        "features": [
            {
                "id": 1,
                "pivot": {
                    "value": 150,
                    "created_at": "2026-10-19T07:13:34.000000Z",
                    "updated_at": "2026-10-19T07:25:53.000000Z",
                    "manage_plan_id": 5,
                    "manage_plan_feature_id": 1
                }
            }
        ],
        "is_active": false,
        "created_at": "2026-10-19T07:13:34.000000Z",
        "sale_price": "50.00",
        "badge_label": {
            "ar": "مميز",
            "en": "Featured"
        },
        "renewal_date": null,
        "billing_cycle": "monthly",
        "is_subscribed": false,
        "platform_type": "user",
        "regular_price": "300.00",
        "remaining_days": null,
        "subscribers_count": 0
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/plans/5

Delete Manage plan

Delete a Manage plan.

Deletes the specified Manage plan from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}

Plans?Search=Plan&Status=1

GET /api/v1/plans?search=Plan&status=1

Search Manage Plans By Keyword And Status

Filter manage plans by search and status.

Retrieve manage plans filtered by name/badge label keyword and active status.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "name": null,
            "color": "#D97706",
            "features": [],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": null,
                    "en": null
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "50.00",
            "badge_label": null,
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "user",
            "regular_price": "100.00",
            "remaining_days": null,
            "subscribers_count": 0
        },
        {
            "id": 3,
            "name": "Company plan A",
            "color": "#059669",
            "features": [],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "خطة الشركة أ",
                    "en": "Company plan A"
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "50.00",
            "badge_label": null,
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "valuer",
            "regular_price": "100.00",
            "remaining_days": null,
            "subscribers_count": 0
        },
        {
            "id": 4,
            "name": "Company plan B",
            "color": "#6C5DD3",
            "features": [
                {
                    "id": 1,
                    "name": "feature 1",
                    "value": 100,
                    "translate": {
                        "name": {
                            "ar": "خاصيه واحد",
                            "en": "feature 1"
                        }
                    }
                }
            ],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "خطة الشركة ب",
                    "en": "Company plan B"
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "100.00",
            "badge_label": null,
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "valuer",
            "regular_price": "200.00",
            "remaining_days": null,
            "subscribers_count": 0
        },
        {
            "id": 5,
            "name": "Plan 54785994",
            "color": "#D97706",
            "features": [
                {
                    "id": 1,
                    "name": "feature 1",
                    "value": 100,
                    "translate": {
                        "name": {
                            "ar": "خاصيه واحد",
                            "en": "feature 1"
                        }
                    }
                }
            ],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "خطة 54785994",
                    "en": "Plan 54785994"
                },
                "badge_label": {
                    "ar": "مميز",
                    "en": "Featured"
                }
            },
            "sale_price": "50.00",
            "badge_label": "Featured",
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "user",
            "regular_price": "100.00",
            "remaining_days": null,
            "subscribers_count": 0
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 4,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "total_plans": 4,
    "total_subscribers": 0,
    "total_active_plans": 4,
    "total_inactive_plans": 0
}

Valuer Requests

GET /api/v1/admin/valuer-requests

Get Valuer Requests List

List valuer requests.

Admin lists all valuer onboarding requests.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "email": "xtenant.valuer@doctest.com",
            "phone": null,
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:19:50.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Review Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmed Ali",
            "requested_subdomain": "review-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 2,
            "email": "approve.valuer@doctest.com",
            "phone": "+966500000010",
            "avatar": null,
            "status": "ready_for_approval",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:19:51.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Approve Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Sara Nasser",
            "requested_subdomain": "approve-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 3,
            "email": null,
            "phone": null,
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:51.000000Z",
            "updated_at": "2026-10-19T07:19:51.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Reject Co",
            "subscription": "standard",
            "business_type": "individual",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Omar Khalid",
            "requested_subdomain": "reject-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 4,
            "email": "profile.docs.valuer@doctest.com",
            "phone": "+966500000012",
            "avatar": null,
            "status": "approved",
            "city_id": 4,
            "country": "Documentation country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                },
                {
                    "id": 5,
                    "name": "Property"
                }
            ],
            "country_id": 2,
            "created_at": "2026-10-19T07:19:55.000000Z",
            "updated_at": "2026-10-19T07:19:55.000000Z",
            "admin_notes": null,
            "approved_at": "2026-10-19T07:19:55.000000Z",
            "cover_image": null,
            "company_name": "Profile Co",
            "subscription": "premium",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "profile-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 5,
            "email": "demo.valuer@doctest.com",
            "phone": "+966500000011",
            "avatar": null,
            "status": "approved",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": 2,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "updated_at": "2026-10-19T07:19:59.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 6,
            "email": "ahmadtest+eiiyvx@demo.com",
            "phone": "+966553943171",
            "avatar": null,
            "status": "pending_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                }
            ],
            "country_id": 1,
            "created_at": "2026-10-19T07:20:26.000000Z",
            "updated_at": "2026-10-19T07:20:26.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Demo Corp eiiyvx",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmad Test",
            "requested_subdomain": "demo-corp-eiiyvx",
            "documents_all_approved": null
        }
    ],
    "pagination": {
        "total": 6,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "new_valuers_count": 4
}
GET /api/v1/admin/valuer-requests

Filter Valuer Requests

Filter valuer requests.

Admin filters valuer requests by company name, status and subscription plan.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
search string Review
status string under_review
subscription string standard
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "email": "xtenant.valuer@doctest.com",
            "phone": null,
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:19:50.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Review Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmed Ali",
            "requested_subdomain": "review-co-doc",
            "documents_all_approved": null
        }
    ],
    "pagination": {
        "total": 1,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "new_valuers_count": 4
}
GET /api/v1/admin/valuer-requests

Exclude Valuer Requests by Status

Exclude valuer requests by status.

Admin excludes valuer requests whose status is in the given list.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
exclude_status array ["suspended","rejected"]
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "email": "xtenant.valuer@doctest.com",
            "phone": null,
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:19:50.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Review Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmed Ali",
            "requested_subdomain": "review-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 2,
            "email": "approve.valuer@doctest.com",
            "phone": "+966500000010",
            "avatar": null,
            "status": "ready_for_approval",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:19:51.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Approve Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Sara Nasser",
            "requested_subdomain": "approve-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 3,
            "email": null,
            "phone": null,
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:51.000000Z",
            "updated_at": "2026-10-19T07:19:51.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Reject Co",
            "subscription": "standard",
            "business_type": "individual",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Omar Khalid",
            "requested_subdomain": "reject-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 4,
            "email": "profile.docs.valuer@doctest.com",
            "phone": "+966500000012",
            "avatar": null,
            "status": "approved",
            "city_id": 4,
            "country": "Documentation country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                },
                {
                    "id": 5,
                    "name": "Property"
                }
            ],
            "country_id": 2,
            "created_at": "2026-10-19T07:19:55.000000Z",
            "updated_at": "2026-10-19T07:19:55.000000Z",
            "admin_notes": null,
            "approved_at": "2026-10-19T07:19:55.000000Z",
            "cover_image": null,
            "company_name": "Profile Co",
            "subscription": "premium",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "profile-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 5,
            "email": "demo.valuer@doctest.com",
            "phone": "+966500000011",
            "avatar": null,
            "status": "approved",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": 2,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "updated_at": "2026-10-19T07:19:59.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 6,
            "email": "ahmadtest+eiiyvx@demo.com",
            "phone": "+966553943171",
            "avatar": null,
            "status": "pending_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                }
            ],
            "country_id": 1,
            "created_at": "2026-10-19T07:20:26.000000Z",
            "updated_at": "2026-10-19T07:20:26.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Demo Corp eiiyvx",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmad Test",
            "requested_subdomain": "demo-corp-eiiyvx",
            "documents_all_approved": null
        }
    ],
    "pagination": {
        "total": 6,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "new_valuers_count": 4
}
GET /api/v1/admin/valuer-requests/1

Get Valuer Request Details

Get valuer request details.

Admin views a single request with its documents.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "ulid": null,
        "email": "xtenant.valuer@doctest.com",
        "phone": null,
        "avatar": null,
        "status": "under_review",
        "city_id": 1,
        "country": "Test Country",
        "documents": [
            {
                "id": 1,
                "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/taqeem_license.pdf",
                "name": "taqeem_license",
                "ulid": null,
                "status": "pending",
                "admin_note": null,
                "created_at": "2026-10-19T07:19:50.000000Z",
                "extracted_value": null,
                "rejection_reason": null
            },
            {
                "id": 2,
                "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/commercial_registration.pdf",
                "name": "commercial_registration",
                "ulid": null,
                "status": "pending",
                "admin_note": null,
                "created_at": "2026-10-19T07:19:50.000000Z",
                "extracted_value": null,
                "rejection_reason": null
            }
        ],
        "tenant_id": null,
        "categories": [],
        "country_id": 1,
        "created_at": "2026-10-19T07:19:50.000000Z",
        "updated_at": "2026-10-19T07:19:50.000000Z",
        "admin_notes": null,
        "approved_at": null,
        "cover_image": null,
        "company_name": "Review Co",
        "subscription": "standard",
        "business_type": "corporate",
        "active_members": 0,
        "can_be_approved": false,
        "individual_name": null,
        "national_address": {
            "city": "Test Country",
            "country": "Test Country"
        },
        "rejection_reason": null,
        "contact_person_name": "Ahmed Ali",
        "requested_subdomain": "review-co-doc",
        "documents_all_approved": false
    }
}
GET /api/v1/admin/valuer-requests/1/documents

Get Valuer Request Documents

Get request documents.

Admin lists the documents attached to a request.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/taqeem_license.pdf",
            "name": "taqeem_license",
            "ulid": null,
            "status": "pending",
            "admin_note": null,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "extracted_value": null,
            "rejection_reason": null
        },
        {
            "id": 2,
            "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/commercial_registration.pdf",
            "name": "commercial_registration",
            "ulid": null,
            "status": "pending",
            "admin_note": null,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "extracted_value": null,
            "rejection_reason": null
        }
    ]
}
POST /api/v1/admin/valuer-requests/1/documents/1/accept

Accept Document

Accept a document.

Admin accepts a valid document and records its extracted value.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
admin_note string Verified against registry.
extracted_value string LIC-123456

Request Validations Or Notes

Field/Name Examples
extracted_value optional, string, max 255
admin_note optional, string
Success (200 OK)
{
    "data": {
        "id": 1,
        "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/taqeem_license.pdf",
        "name": "taqeem_license",
        "ulid": null,
        "status": "accepted",
        "admin_note": "Verified against registry.",
        "created_at": "2026-10-19T07:19:50.000000Z",
        "extracted_value": "LIC-123456",
        "rejection_reason": null
    },
    "message": "Document accepted successfully."
}
PUT /api/v1/admin/valuer-requests/1/documents/1/extracted-value

Update Extracted Value

Update extracted value.

Admin updates the value extracted from a document.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
extracted_value string 987654321
Success (200 OK)
{
    "data": {
        "id": 1,
        "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/taqeem_license.pdf",
        "name": "taqeem_license",
        "ulid": null,
        "status": "accepted",
        "admin_note": "Verified against registry.",
        "created_at": "2026-10-19T07:19:50.000000Z",
        "extracted_value": "987654321",
        "rejection_reason": null
    },
    "message": "Extracted value updated."
}
POST /api/v1/admin/valuer-requests/1/documents/2/reject

Reject Document

Reject a document.

Admin rejects an invalid document.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
rejection_reason string The document is expired.

Request Validations Or Notes

Field/Name Examples
rejection_reason required, string, min 10
Success (200 OK)
{
    "data": {
        "id": 2,
        "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/commercial_registration.pdf",
        "name": "commercial_registration",
        "ulid": null,
        "status": "rejected",
        "admin_note": null,
        "created_at": "2026-10-19T07:19:50.000000Z",
        "extracted_value": null,
        "rejection_reason": "The document is expired."
    },
    "message": "Document rejected successfully."
}
POST /api/v1/admin/valuer-requests/1/documents/2/request-reupload

Request Document Reupload

Request document reupload.

Admin asks the valuer to reupload a document.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
rejection_reason string Please reupload a clearer copy.

Request Validations Or Notes

Field/Name Examples
rejection_reason required, string, min 10
Success (200 OK)
{
    "data": {
        "id": 2,
        "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/commercial_registration.pdf",
        "name": "commercial_registration",
        "ulid": null,
        "status": "need_reupload",
        "admin_note": null,
        "created_at": "2026-10-19T07:19:50.000000Z",
        "extracted_value": null,
        "rejection_reason": "Please reupload a clearer copy."
    },
    "message": "Reupload requested."
}
POST /api/v1/admin/valuer-requests/1/note

Add Note

Add a note.

Admin attaches an internal note to the request.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
admin_notes string Following up on the reupload.
Success (200 OK)
{
    "data": {
        "id": 1,
        "ulid": null,
        "email": "xtenant.valuer@doctest.com",
        "phone": null,
        "avatar": null,
        "status": "need_reupload",
        "city_id": 1,
        "country": "Test Country",
        "documents": null,
        "tenant_id": null,
        "categories": [],
        "country_id": 1,
        "created_at": "2026-10-19T07:19:50.000000Z",
        "updated_at": "2026-10-19T07:20:30.000000Z",
        "admin_notes": "Following up on the reupload.",
        "approved_at": null,
        "cover_image": null,
        "company_name": "Review Co",
        "subscription": "standard",
        "business_type": "corporate",
        "active_members": 0,
        "can_be_approved": null,
        "individual_name": null,
        "national_address": {
            "city": "Test Country",
            "country": "Test Country"
        },
        "rejection_reason": null,
        "contact_person_name": "Ahmed Ali",
        "requested_subdomain": "review-co-doc",
        "documents_all_approved": null
    },
    "message": "Note added successfully."
}
PUT /api/v1/admin/valuer-requests/1

Update Valuer Request

Update valuer request.

Admin updates editable fields on a request.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
company_name string Review Co (Updated)
contact_person_name string Ahmed A

Request Validations Or Notes

Field/Name Examples
business_type optional, required, enum: individual, corporate
company_name optional, string, max 255, regex
individual_name optional, string, max 255, regex
contact_person_name optional, string, max 255, regex
email optional, string, valid email, max 255, unique valuers,email,
phone optional, string, max 20
country_id optional, integer
city_id optional, integer
valuation_type optional, array
valuation_type[] required, integer, distinct, Exists
Success (200 OK)
{
    "data": {
        "id": 1,
        "ulid": null,
        "email": "xtenant.valuer@doctest.com",
        "phone": null,
        "avatar": null,
        "status": "need_reupload",
        "city_id": 1,
        "country": "Test Country",
        "documents": [
            {
                "id": 1,
                "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/taqeem_license.pdf",
                "name": "taqeem_license",
                "ulid": null,
                "status": "accepted",
                "admin_note": "Verified against registry.",
                "created_at": "2026-10-19T07:19:50.000000Z",
                "extracted_value": "987654321",
                "rejection_reason": null
            },
            {
                "id": 2,
                "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/commercial_registration.pdf",
                "name": "commercial_registration",
                "ulid": null,
                "status": "need_reupload",
                "admin_note": null,
                "created_at": "2026-10-19T07:19:50.000000Z",
                "extracted_value": null,
                "rejection_reason": "Please reupload a clearer copy."
            }
        ],
        "tenant_id": null,
        "categories": [],
        "country_id": 1,
        "created_at": "2026-10-19T07:19:50.000000Z",
        "updated_at": "2026-10-19T07:20:30.000000Z",
        "admin_notes": "Following up on the reupload.",
        "approved_at": null,
        "cover_image": null,
        "company_name": "Review Co (Updated)",
        "subscription": "standard",
        "business_type": "corporate",
        "active_members": 0,
        "can_be_approved": false,
        "individual_name": null,
        "national_address": {
            "city": "Test Country",
            "country": "Test Country"
        },
        "rejection_reason": null,
        "contact_person_name": "Ahmed A",
        "requested_subdomain": "review-co-doc",
        "documents_all_approved": false
    },
    "message": "Updated."
}
POST /api/v1/admin/valuer-requests/3/reject

Reject Valuer Request

Reject valuer request.

Admin rejects a request and records the rejection reason against it.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
rejection_reason string Does not meet requirements.

Request Validations Or Notes

Field/Name Examples
rejection_reason required, string, max 1000
Success (200 OK)
{
    "data": {
        "id": 3,
        "ulid": null,
        "email": null,
        "phone": null,
        "avatar": null,
        "status": "rejected",
        "city_id": 1,
        "country": "Test Country",
        "documents": null,
        "tenant_id": null,
        "categories": [],
        "country_id": 1,
        "created_at": "2026-10-19T07:19:51.000000Z",
        "updated_at": "2026-10-19T07:20:30.000000Z",
        "admin_notes": null,
        "approved_at": null,
        "cover_image": null,
        "company_name": "Reject Co",
        "subscription": "standard",
        "business_type": "individual",
        "active_members": 0,
        "can_be_approved": null,
        "individual_name": null,
        "national_address": {
            "city": "Test Country",
            "country": "Test Country"
        },
        "rejection_reason": "Does not meet requirements.",
        "contact_person_name": "Omar Khalid",
        "requested_subdomain": "reject-co-doc",
        "documents_all_approved": null
    },
    "message": "Request rejected successfully."
}
POST /api/v1/admin/valuer-requests/3/reopen

Reopen Valuer Request

Reopen a rejected request.

Admin reopens a rejected request, restoring it to the review status it held before the rejection. The rejection reason is kept, the reopening is written to the request history, and only a rejected request can be reopened.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "ulid": null,
        "email": null,
        "phone": null,
        "avatar": null,
        "status": "under_review",
        "city_id": 1,
        "country": "Test Country",
        "documents": null,
        "tenant_id": null,
        "categories": [],
        "country_id": 1,
        "created_at": "2026-10-19T07:19:51.000000Z",
        "updated_at": "2026-10-19T07:20:31.000000Z",
        "admin_notes": null,
        "approved_at": null,
        "cover_image": null,
        "company_name": "Reject Co",
        "subscription": "standard",
        "business_type": "individual",
        "active_members": 0,
        "can_be_approved": null,
        "individual_name": null,
        "national_address": {
            "city": "Test Country",
            "country": "Test Country"
        },
        "rejection_reason": "Does not meet requirements.",
        "contact_person_name": "Omar Khalid",
        "requested_subdomain": "reject-co-doc",
        "documents_all_approved": null
    },
    "message": "Request reopened successfully."
}
POST /api/v1/admin/valuer-requests/2/approve

Approve Valuer Request

Approve valuer request.

Admin approves a request; a tenant workspace is provisioned. A request can only be approved when its status is ready for approval and all of its documents have already been approved.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
notes string All documents verified.

Request Validations Or Notes

Field/Name Examples
notes optional, string, max 1000
Success (200 OK)
{
    "data": {
        "id": 2,
        "ulid": null,
        "email": "approve.valuer@doctest.com",
        "phone": "+966500000010",
        "avatar": null,
        "status": "approved",
        "city_id": 1,
        "country": "Test Country",
        "documents": [],
        "tenant_id": 4,
        "categories": [],
        "country_id": 1,
        "created_at": "2026-10-19T07:19:50.000000Z",
        "updated_at": "2026-10-19T07:20:32.000000Z",
        "admin_notes": "All documents verified.",
        "approved_at": "2026-10-19T07:20:32.000000Z",
        "cover_image": null,
        "company_name": "Approve Co",
        "subscription": "standard",
        "business_type": "corporate",
        "active_members": 0,
        "can_be_approved": false,
        "individual_name": null,
        "national_address": {
            "city": "Test Country",
            "country": "Test Country"
        },
        "rejection_reason": null,
        "contact_person_name": "Sara Nasser",
        "requested_subdomain": "approve-co-doc",
        "documents_all_approved": true
    },
    "message": "Request approved successfully. Tenant provisioned."
}
POST /api/v1/admin/valuer-requests/3/toggle-active

Toggle Valuer Request Suspend Status

Toggle request suspend status.

Toggles the suspend state of a request: a suspended request moves back to under review, and any other request becomes suspended.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "ulid": null,
        "email": null,
        "phone": null,
        "avatar": null,
        "status": "suspended",
        "city_id": 1,
        "country": "Test Country",
        "documents": null,
        "tenant_id": null,
        "categories": [],
        "country_id": 1,
        "created_at": "2026-10-19T07:19:51.000000Z",
        "updated_at": "2026-10-19T07:20:32.000000Z",
        "admin_notes": null,
        "approved_at": null,
        "cover_image": null,
        "company_name": "Reject Co",
        "subscription": "standard",
        "business_type": "individual",
        "active_members": 0,
        "can_be_approved": null,
        "individual_name": null,
        "national_address": {
            "city": "Test Country",
            "country": "Test Country"
        },
        "rejection_reason": "Does not meet requirements.",
        "contact_person_name": "Omar Khalid",
        "requested_subdomain": "reject-co-doc",
        "documents_all_approved": null
    },
    "message": "Request status toggled successfully."
}
GET /api/v1/admin/valuer-requests/new-valuers

Get New Valuer Requests

List the latest new valuer requests.

Admin fetches the latest N valuer requests that are still in an active review status (pending_review, under_review, ready_for_approval). Pass per_count as a query parameter.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 6,
            "email": "ahmadtest+eiiyvx@demo.com",
            "phone": "+966553943171",
            "avatar": null,
            "status": "pending_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                }
            ],
            "country_id": 1,
            "created_at": "2026-10-19T07:20:26.000000Z",
            "updated_at": "2026-10-19T07:20:26.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Demo Corp eiiyvx",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmad Test",
            "requested_subdomain": "demo-corp-eiiyvx",
            "documents_all_approved": null
        }
    ],
    "pagination": {
        "total": 1,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/admin/valuer-requests/statuses

Get Valuer Request Statuses

List valuer request statuses.

Admin fetches the available valuer request statuses. Values are translated per locale .

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "key": "pending_review",
            "value": "Pending Review"
        },
        {
            "key": "under_review",
            "value": "Under Review"
        },
        {
            "key": "need_reupload",
            "value": "Needs Reupload"
        },
        {
            "key": "ready_for_approval",
            "value": "Ready for Approval"
        },
        {
            "key": "approved",
            "value": "Approved"
        },
        {
            "key": "rejected",
            "value": "Rejected"
        },
        {
            "key": "tenant_provisioning",
            "value": "Tenant Provisioning"
        },
        {
            "key": "workspace_active",
            "value": "Workspace Active"
        },
        {
            "key": "suspended",
            "value": "Suspended"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/admin/valuer-requests

Get Valuer Requests List

List valuer requests.

Admin lists all valuer onboarding requests.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "email": "xtenant.valuer@doctest.com",
            "phone": null,
            "avatar": null,
            "status": "need_reupload",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:20:30.000000Z",
            "admin_notes": "Following up on the reupload.",
            "approved_at": null,
            "cover_image": null,
            "company_name": "Review Co (Updated)",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmed A",
            "requested_subdomain": "review-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 2,
            "email": "approve.valuer@doctest.com",
            "phone": "+966500000010",
            "avatar": null,
            "status": "ready_for_approval",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:20:41.000000Z",
            "admin_notes": "All documents verified.",
            "approved_at": null,
            "cover_image": null,
            "company_name": "Approve Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Sara Nasser",
            "requested_subdomain": "approve-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 3,
            "email": null,
            "phone": null,
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:51.000000Z",
            "updated_at": "2026-10-19T07:20:41.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Reject Co",
            "subscription": "standard",
            "business_type": "individual",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Omar Khalid",
            "requested_subdomain": "reject-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 4,
            "email": "profile.docs.valuer@doctest.com",
            "phone": "+966500000012",
            "avatar": null,
            "status": "approved",
            "city_id": 4,
            "country": "Documentation country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                },
                {
                    "id": 5,
                    "name": "Property"
                }
            ],
            "country_id": 2,
            "created_at": "2026-10-19T07:19:55.000000Z",
            "updated_at": "2026-10-19T07:19:55.000000Z",
            "admin_notes": null,
            "approved_at": "2026-10-19T07:19:55.000000Z",
            "cover_image": null,
            "company_name": "Profile Co",
            "subscription": "premium",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "profile-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 5,
            "email": "demo.valuer@doctest.com",
            "phone": "+966500000011",
            "avatar": null,
            "status": "approved",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": 2,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "updated_at": "2026-10-19T07:21:41.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 6,
            "email": "ahmadtest+eiiyvx@demo.com",
            "phone": "+966553943171",
            "avatar": null,
            "status": "pending_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                }
            ],
            "country_id": 1,
            "created_at": "2026-10-19T07:20:26.000000Z",
            "updated_at": "2026-10-19T07:20:26.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Demo Corp eiiyvx",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmad Test",
            "requested_subdomain": "demo-corp-eiiyvx",
            "documents_all_approved": null
        }
    ],
    "pagination": {
        "total": 6,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "new_valuers_count": 3
}
GET /api/v1/admin/valuer-requests

Filter Valuer Requests

Filter valuer requests.

Admin filters valuer requests by company name, status and subscription plan.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
search string Review
status string under_review
subscription string standard
Success (200 OK)
{
    "data": [],
    "pagination": {
        "total": 0,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "new_valuers_count": 3
}
GET /api/v1/admin/valuer-requests

Filter Valuer Requests by Category

Filter valuer requests by service category.

Admin narrows the list to the valuer requests whose valuer offers a service in the given category. Send the category id without the parameter to get every category back, and use per_page and page to walk through the results.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
category_id integer 5

Request Validations Or Notes

Field/Name Examples
search optional, string, max 255
status optional, string, allowed: pending_review, under_review, need_reupload, ready_for_approval, approved, rejected, tenant_provisioning, workspace_active, suspended
category_id optional, integer, exists categories,id
per_page optional, integer, min 1, max 100
page optional, integer, min 1
Success (200 OK)
{
    "data": [
        {
            "id": 4,
            "email": "profile.docs.valuer@doctest.com",
            "phone": "+966500000012",
            "avatar": null,
            "status": "approved",
            "city_id": 4,
            "country": "Documentation country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                },
                {
                    "id": 5,
                    "name": "Property"
                }
            ],
            "country_id": 2,
            "created_at": "2026-10-19T07:19:55.000000Z",
            "updated_at": "2026-10-19T07:19:55.000000Z",
            "admin_notes": null,
            "approved_at": "2026-10-19T07:19:55.000000Z",
            "cover_image": null,
            "company_name": "Profile Co",
            "subscription": "premium",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "profile-co-doc",
            "documents_all_approved": null
        }
    ],
    "pagination": {
        "total": 1,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "new_valuers_count": 3
}
GET /api/v1/admin/valuer-requests

Exclude Valuer Requests by Status

Exclude valuer requests by status.

Admin excludes valuer requests whose status is in the given list.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
exclude_status array ["suspended","rejected"]
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "email": "xtenant.valuer@doctest.com",
            "phone": null,
            "avatar": null,
            "status": "need_reupload",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:20:30.000000Z",
            "admin_notes": "Following up on the reupload.",
            "approved_at": null,
            "cover_image": null,
            "company_name": "Review Co (Updated)",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmed A",
            "requested_subdomain": "review-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 2,
            "email": "approve.valuer@doctest.com",
            "phone": "+966500000010",
            "avatar": null,
            "status": "ready_for_approval",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:20:41.000000Z",
            "admin_notes": "All documents verified.",
            "approved_at": null,
            "cover_image": null,
            "company_name": "Approve Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Sara Nasser",
            "requested_subdomain": "approve-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 3,
            "email": null,
            "phone": null,
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:51.000000Z",
            "updated_at": "2026-10-19T07:20:41.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Reject Co",
            "subscription": "standard",
            "business_type": "individual",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Omar Khalid",
            "requested_subdomain": "reject-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 4,
            "email": "profile.docs.valuer@doctest.com",
            "phone": "+966500000012",
            "avatar": null,
            "status": "approved",
            "city_id": 4,
            "country": "Documentation country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                },
                {
                    "id": 5,
                    "name": "Property"
                }
            ],
            "country_id": 2,
            "created_at": "2026-10-19T07:19:55.000000Z",
            "updated_at": "2026-10-19T07:19:55.000000Z",
            "admin_notes": null,
            "approved_at": "2026-10-19T07:19:55.000000Z",
            "cover_image": null,
            "company_name": "Profile Co",
            "subscription": "premium",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test City",
                "country": "Documentation country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "profile-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 5,
            "email": "demo.valuer@doctest.com",
            "phone": "+966500000011",
            "avatar": null,
            "status": "approved",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": 2,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "updated_at": "2026-10-19T07:21:41.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 6,
            "email": "ahmadtest+eiiyvx@demo.com",
            "phone": "+966553943171",
            "avatar": null,
            "status": "pending_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                }
            ],
            "country_id": 1,
            "created_at": "2026-10-19T07:20:26.000000Z",
            "updated_at": "2026-10-19T07:20:26.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Demo Corp eiiyvx",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmad Test",
            "requested_subdomain": "demo-corp-eiiyvx",
            "documents_all_approved": null
        }
    ],
    "pagination": {
        "total": 6,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    },
    "new_valuers_count": 3
}
GET /api/v1/admin/valuer-requests/new-valuers

Get New Valuer Requests

List the latest new valuer requests.

Admin fetches the latest N valuer requests that are still in an active review status (pending_review, under_review, ready_for_approval). Pass per_count as a query parameter.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
per_count integer 7
Success (200 OK)
{
    "data": [
        {
            "id": 6,
            "email": "ahmadtest+eiiyvx@demo.com",
            "phone": "+966553943171",
            "avatar": null,
            "status": "pending_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [
                {
                    "id": 4,
                    "name": "Real Estate Appraisal"
                }
            ],
            "country_id": 1,
            "created_at": "2026-10-19T07:20:26.000000Z",
            "updated_at": "2026-10-19T07:20:26.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Demo Corp eiiyvx",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Ahmad Test",
            "requested_subdomain": "demo-corp-eiiyvx",
            "documents_all_approved": null
        },
        {
            "id": 3,
            "email": null,
            "phone": null,
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:51.000000Z",
            "updated_at": "2026-10-19T07:20:41.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Reject Co",
            "subscription": "standard",
            "business_type": "individual",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Omar Khalid",
            "requested_subdomain": "reject-co-doc",
            "documents_all_approved": null
        },
        {
            "id": 2,
            "email": "approve.valuer@doctest.com",
            "phone": "+966500000010",
            "avatar": null,
            "status": "ready_for_approval",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": null,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:50.000000Z",
            "updated_at": "2026-10-19T07:20:41.000000Z",
            "admin_notes": "All documents verified.",
            "approved_at": null,
            "cover_image": null,
            "company_name": "Approve Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Sara Nasser",
            "requested_subdomain": "approve-co-doc",
            "documents_all_approved": null
        }
    ],
    "pagination": {
        "total": 3,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/admin/valuer-requests/statuses

Get Valuer Request Statuses

List valuer request statuses.

Admin fetches the available valuer request statuses. Values are translated per locale.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "key": "pending_review",
            "value": "Pending Review"
        },
        {
            "key": "under_review",
            "value": "Under Review"
        },
        {
            "key": "need_reupload",
            "value": "Needs Reupload"
        },
        {
            "key": "ready_for_approval",
            "value": "Ready for Approval"
        },
        {
            "key": "approved",
            "value": "Approved"
        },
        {
            "key": "rejected",
            "value": "Rejected"
        },
        {
            "key": "tenant_provisioning",
            "value": "Tenant Provisioning"
        },
        {
            "key": "workspace_active",
            "value": "Workspace Active"
        },
        {
            "key": "suspended",
            "value": "Suspended"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/admin/valuer-requests/contact-us-messages

List Contact Us Messages

List contact-us messages.

Admin lists the contact-us messages sent by valuers, newest first. Each entry carries the message type, the message content, the valuer who sent it, and any attachments. Paginated, and can be narrowed by valuer id and message type.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "valuer": {
                "id": 3,
                "name": "Portal Co",
                "email": "demo.valuer@doctest.com"
            },
            "message": "I would like to know more about the subscription plans.",
            "created_at": "2026-10-19T07:21:27+00:00",
            "attachments": [],
            "message_type": "inquiry"
        }
    ],
    "success": true
}

Clients

POST /api/v1/dashboard/clients

Create Client

Create a new client

This endpoint creates a new client record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string MOdI8SSoghgr0808YEvM8vJH8bLpHI2lTQ3bhYMnL5QZf5DYnu5vPGp5QFwxWhYo
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name array {"ar":"\u0634\u0631\u0643\u0629 \u0627\u062e\u062a\u0628\u0627\u0631 AR","en":"Test Company EN"}
industry string Real Estate Developer
country_id integer 1
client_email string test+qh4utf@example.com
phone_number string 0512345678
contract_type string Yearly Contract
contact_person_email string john@example.com
contact_person_phone string 0512345678
contact_person_fullname array {"ar":"\u062c\u0648\u0646 \u062f\u0648","en":"John Doe"}
contact_person_password string password123
contact_person_password_confirmation string password123
Success (200 OK)
{
    "data": {
        "id": 1,
        "industry": "Real Estate Developer",
        "documents": [],
        "is_active": true,
        "country_id": 1,
        "client_email": "test+qh4utf@example.com",
        "company_name": {
            "ar": "شركة اختبار AR",
            "en": "Test Company EN"
        },
        "phone_number": "0512345678",
        "contract_type": "Yearly Contract",
        "contact_person_email": "john@example.com",
        "contact_person_phone": "0512345678",
        "contact_person_fullname": {
            "ar": "جون دو",
            "en": "John Doe"
        }
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/dashboard/clients

Get Clients List

Get paginated list of clients

This endpoint returns a paginated list of all client records.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string MOdI8SSoghgr0808YEvM8vJH8bLpHI2lTQ3bhYMnL5QZf5DYnu5vPGp5QFwxWhYo
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "industry": "Real Estate Developer",
            "documents": [],
            "is_active": true,
            "country_id": 1,
            "client_email": "test+qh4utf@example.com",
            "company_name": {
                "ar": "شركة اختبار AR",
                "en": "Test Company EN"
            },
            "phone_number": "0512345678",
            "contract_type": "Yearly Contract",
            "contact_person_email": "john@example.com",
            "contact_person_phone": "0512345678",
            "contact_person_fullname": {
                "ar": "جون دو",
                "en": "John Doe"
            }
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 1,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}

Profile

GET /api/v1/dashboard/profile

Get Admin Profile

Get authenticated admin profile.

Retrieves the profile information of the currently authenticated admin (identified via the auth token, not a URL id). Returns the same profile structure as the update-profile endpoint.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Admin",
        "email": "admin@base.com",
        "phone": "000000000000",
        "roles": [
            {
                "id": 1,
                "name": "Default Role",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Default Role"
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Default Role Description",
                "permissions": [
                    {
                        "id": 1,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 2,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 3,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 4,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 5,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 6,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 7,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 8,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 9,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 10,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 11,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 12,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 13,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 14,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 15,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 16,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 17,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 18,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 19,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 20,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 21,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 22,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 23,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 24,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 25,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 26,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 27,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 28,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 29,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 30,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 31,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 32,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 33,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 34,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 35,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            },
            {
                "id": 2,
                "name": "Super Admin Role ",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Super Admin Role "
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Super Admin Role Description",
                "permissions": [
                    {
                        "id": 36,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 37,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 38,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 39,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 40,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 41,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 42,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 43,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 44,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 45,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 46,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 47,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 48,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 49,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 50,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 51,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 52,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 53,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 54,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 55,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 56,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 57,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 58,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 59,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 60,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 61,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 62,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 63,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 64,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 65,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 66,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 67,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 68,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 69,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 70,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            }
        ],
        "avatar": null,
        "is_active": true,
        "job_title": null,
        "created_at": "2026-10-19",
        "contract_type": null,
        "last_login_at": "2026-10-19 07:23 AM"
    },
    "message": "admins::messages.profile_retrieved",
    "success": true
}
PUT /api/v1/dashboard/profile

Update Admin Profile

Update authenticated admin profile.

Updates the profile of the currently authenticated admin. Only editable fields (name, email, phone, avatar) are accepted; password, permissions, and roles are excluded and must be changed via their own endpoints. Send 'delete_avatar' as true to remove the current avatar. Since file uploads cannot be sent over a literal PUT/PATCH request, send this as POST with an 'X-HTTP-Method-Override: PUT' header when uploading an avatar.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Admin Self Updated
email string admin_self@gmail.com
phone string 01551981056
delete_avatar boolean

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
phone optional, regex, max 20, Unique
avatar optional, image, file types: jpeg,png,jpg,gif, max 2048 KB (upload)
delete_avatar optional, true/false
Success (200 OK)
{
    "data": {
        "id": 1,
        "name": "Admin Self Updated",
        "email": "admin@base.com",
        "phone": "01551981056",
        "roles": [
            {
                "id": 1,
                "name": "Default Role",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Default Role"
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Default Role Description",
                "permissions": [
                    {
                        "id": 1,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 2,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 3,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 4,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 5,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 6,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 7,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 8,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 9,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 10,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 11,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 12,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 13,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 14,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 15,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 16,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 17,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 18,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 19,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 20,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 21,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 22,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 23,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 24,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 25,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 26,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 27,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 28,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 29,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 30,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 31,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 32,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 33,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 34,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 35,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            },
            {
                "id": 2,
                "name": "Super Admin Role ",
                "is_active": true,
                "translate": {
                    "name": {
                        "ar": "دور تقليدى",
                        "en": "Super Admin Role "
                    },
                    "description": {
                        "ar": "وصف الدور التقليدى",
                        "en": "Default Role Description"
                    }
                },
                "created_at": "2026-10-19",
                "description": "Super Admin Role Description",
                "permissions": [
                    {
                        "id": 36,
                        "name": "users-fetch",
                        "title": "Fetch Data",
                        "model_id": 1,
                        "permission_id": 1
                    },
                    {
                        "id": 37,
                        "name": "users-create",
                        "title": "Create Data",
                        "model_id": 1,
                        "permission_id": 2
                    },
                    {
                        "id": 38,
                        "name": "users-read",
                        "title": "Read Data",
                        "model_id": 1,
                        "permission_id": 3
                    },
                    {
                        "id": 39,
                        "name": "users-update",
                        "title": "Update Data",
                        "model_id": 1,
                        "permission_id": 4
                    },
                    {
                        "id": 40,
                        "name": "users-delete",
                        "title": "Delete Data",
                        "model_id": 1,
                        "permission_id": 5
                    },
                    {
                        "id": 41,
                        "name": "valuers-fetch",
                        "title": "Fetch Data",
                        "model_id": 2,
                        "permission_id": 1
                    },
                    {
                        "id": 42,
                        "name": "valuers-create",
                        "title": "Create Data",
                        "model_id": 2,
                        "permission_id": 2
                    },
                    {
                        "id": 43,
                        "name": "valuers-read",
                        "title": "Read Data",
                        "model_id": 2,
                        "permission_id": 3
                    },
                    {
                        "id": 44,
                        "name": "valuers-update",
                        "title": "Update Data",
                        "model_id": 2,
                        "permission_id": 4
                    },
                    {
                        "id": 45,
                        "name": "valuers-delete",
                        "title": "Delete Data",
                        "model_id": 2,
                        "permission_id": 5
                    },
                    {
                        "id": 46,
                        "name": "requests-fetch",
                        "title": "Fetch Data",
                        "model_id": 3,
                        "permission_id": 1
                    },
                    {
                        "id": 47,
                        "name": "requests-create",
                        "title": "Create Data",
                        "model_id": 3,
                        "permission_id": 2
                    },
                    {
                        "id": 48,
                        "name": "requests-read",
                        "title": "Read Data",
                        "model_id": 3,
                        "permission_id": 3
                    },
                    {
                        "id": 49,
                        "name": "requests-update",
                        "title": "Update Data",
                        "model_id": 3,
                        "permission_id": 4
                    },
                    {
                        "id": 50,
                        "name": "requests-delete",
                        "title": "Delete Data",
                        "model_id": 3,
                        "permission_id": 5
                    },
                    {
                        "id": 51,
                        "name": "reports-fetch",
                        "title": "Fetch Data",
                        "model_id": 4,
                        "permission_id": 1
                    },
                    {
                        "id": 52,
                        "name": "reports-create",
                        "title": "Create Data",
                        "model_id": 4,
                        "permission_id": 2
                    },
                    {
                        "id": 53,
                        "name": "reports-read",
                        "title": "Read Data",
                        "model_id": 4,
                        "permission_id": 3
                    },
                    {
                        "id": 54,
                        "name": "reports-update",
                        "title": "Update Data",
                        "model_id": 4,
                        "permission_id": 4
                    },
                    {
                        "id": 55,
                        "name": "reports-delete",
                        "title": "Delete Data",
                        "model_id": 4,
                        "permission_id": 5
                    },
                    {
                        "id": 56,
                        "name": "team_management-fetch",
                        "title": "Fetch Data",
                        "model_id": 5,
                        "permission_id": 1
                    },
                    {
                        "id": 57,
                        "name": "team_management-create",
                        "title": "Create Data",
                        "model_id": 5,
                        "permission_id": 2
                    },
                    {
                        "id": 58,
                        "name": "team_management-read",
                        "title": "Read Data",
                        "model_id": 5,
                        "permission_id": 3
                    },
                    {
                        "id": 59,
                        "name": "team_management-update",
                        "title": "Update Data",
                        "model_id": 5,
                        "permission_id": 4
                    },
                    {
                        "id": 60,
                        "name": "team_management-delete",
                        "title": "Delete Data",
                        "model_id": 5,
                        "permission_id": 5
                    },
                    {
                        "id": 61,
                        "name": "finance-fetch",
                        "title": "Fetch Data",
                        "model_id": 6,
                        "permission_id": 1
                    },
                    {
                        "id": 62,
                        "name": "finance-create",
                        "title": "Create Data",
                        "model_id": 6,
                        "permission_id": 2
                    },
                    {
                        "id": 63,
                        "name": "finance-read",
                        "title": "Read Data",
                        "model_id": 6,
                        "permission_id": 3
                    },
                    {
                        "id": 64,
                        "name": "finance-update",
                        "title": "Update Data",
                        "model_id": 6,
                        "permission_id": 4
                    },
                    {
                        "id": 65,
                        "name": "finance-delete",
                        "title": "Delete Data",
                        "model_id": 6,
                        "permission_id": 5
                    },
                    {
                        "id": 66,
                        "name": "reviews-fetch",
                        "title": "Fetch Data",
                        "model_id": 7,
                        "permission_id": 1
                    },
                    {
                        "id": 67,
                        "name": "reviews-create",
                        "title": "Create Data",
                        "model_id": 7,
                        "permission_id": 2
                    },
                    {
                        "id": 68,
                        "name": "reviews-read",
                        "title": "Read Data",
                        "model_id": 7,
                        "permission_id": 3
                    },
                    {
                        "id": 69,
                        "name": "reviews-update",
                        "title": "Update Data",
                        "model_id": 7,
                        "permission_id": 4
                    },
                    {
                        "id": 70,
                        "name": "reviews-delete",
                        "title": "Delete Data",
                        "model_id": 7,
                        "permission_id": 5
                    }
                ],
                "admins_count": 0,
                "permissions_count": 0
            }
        ],
        "avatar": null,
        "is_active": true,
        "job_title": null,
        "created_at": "2026-10-19",
        "contract_type": null,
        "last_login_at": "2026-10-19 07:23 AM"
    },
    "message": "admins::messages.profile_updated",
    "success": true
}

Change Password

POST /api/v1/dashboard/change-password

Change Admin Password

Change authenticated admin password.

Changes the password of the currently authenticated admin. Requires the correct old_password; the new password must satisfy the project password policy and be confirmed via password_confirmation. The old/new password values are never returned in the response.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
new_password string NewP@ss0rd1
old_password string P@ssw0rd
password_confirmation string NewP@ss0rd1

Request Validations Or Notes

Field/Name Examples
old_password required
new_password required, different, StrongPassword
password_confirmation required, same
Success (200 OK)
{
    "data": [],
    "message": "admins::messages.password_changed",
    "success": true
}

Settings

POST /api/v1/settings/country

Create country

Locations

locations-store-setting

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
data array {"code":"TC","phone_code":"999","phone_length":9}
name_ar string أختبار دولة
name_en string Test Country
Success (200 OK)
{
    "data": {
        "id": 3,
        "data": {
            "code": "TC",
            "phone_code": "999",
            "phone_length": 9
        },
        "type": "country",
        "name_ar": "أختبار دولة",
        "name_en": "Test Country",
        "created_at": "19-10-2026 07:12:14",
        "setting_id": null,
        "updated_at": "2026-10-19T07:12:14.000000Z"
    },
    "message": "Data inserted successfully.",
    "success": true
}
POST /api/v1/settings/city

Create city

Locations

locations-store-setting

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name_ar string أختبار مدينة
name_en string Test City
parent_id integer 1
Success (200 OK)
{
    "data": {
        "id": 4,
        "type": "city",
        "name_ar": "أختبار مدينة",
        "name_en": "Test City",
        "created_at": "19-10-2026 07:12:15",
        "setting_id": 1,
        "updated_at": "2026-10-19T07:12:15.000000Z"
    },
    "message": "Data inserted successfully.",
    "success": true
}
POST /api/v1/settings/nationality

Create nationality

Locations

locations-store-setting

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name_ar string أختبار جنسية
name_en string Test Nationality
Success (200 OK)
{
    "data": {
        "id": 5,
        "type": "nationality",
        "name_ar": "أختبار جنسية",
        "name_en": "Test Nationality",
        "created_at": "19-10-2026 07:12:15",
        "setting_id": null,
        "updated_at": "2026-10-19T07:12:15.000000Z"
    },
    "message": "Data inserted successfully.",
    "success": true
}
PUT /api/v1/settings/country/1

Update country

Locations

locations-update-setting

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
id integer 1
data array {"code":"TC","phone_code":"999","phone_length":9}
name_ar string أختبار دولة
name_en string Test Country
Success (200 OK)
{
    "data": {
        "id": 1,
        "data": {
            "code": "TC",
            "phone_code": "999",
            "phone_length": 9
        },
        "type": "country",
        "name_ar": "أختبار دولة",
        "name_en": "Test Country",
        "is_active": 1,
        "created_at": "19-10-2026 07:10:19",
        "deleted_at": null,
        "setting_id": null,
        "updated_at": "2026-10-19T07:12:14.000000Z"
    },
    "message": "Data updated successfully.",
    "success": true
}
PATCH /api/v1/settings/country/1/toggle-active

Toggle country

Locations

locations-toggle-active-setting

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "code": "TC",
        "type": "country",
        "name_ar": "أختبار دولة",
        "name_en": "Test Country",
        "is_active": false,
        "phone_code": "999",
        "setting_id": null,
        "phone_length": 9
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/settings/country/1

Delete country

Locations

locations-delete-setting

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}

Valuer Portal API

Valuer Dashboard

GET /api/v1/valuer/dashboard

Valuer Dashboard

Valuer dashboard.

Provider dashboard summary: the company behind the provider, where it is, when it applied, the reference it is known by, how many of its uploaded documents are approved, whether its workspace is live, and anything it still has to upload or hand back.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "city": "Test Country",
        "name": "Portal Co",
        "email": "demo.valuer@doctest.com",
        "phone": "+966500000011",
        "status": "approved",
        "country": "Test Country",
        "reference": null,
        "company_name": "Portal Co",
        "business_type": "corporate",
        "contact_person": "Lina Saad",
        "valuer_request": {
            "id": 5,
            "ulid": null,
            "email": "demo.valuer@doctest.com",
            "phone": "+966500000011",
            "avatar": null,
            "status": "approved",
            "city_id": 1,
            "country": "Test Country",
            "documents": [
                {
                    "id": 3,
                    "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/portal_taqeem_license.pdf",
                    "name": "taqeem_license",
                    "ulid": null,
                    "status": "accepted",
                    "admin_note": null,
                    "created_at": "2026-10-19T07:19:57.000000Z",
                    "extracted_value": null,
                    "rejection_reason": null
                }
            ],
            "tenant_id": 2,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "updated_at": "2026-10-19T07:19:59.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": false,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "documents_all_approved": true
        },
        "document_status": "1 of 1 approved",
        "individual_name": null,
        "submission_date": "19 Oct 2026",
        "rejection_reason": null,
        "required_actions": [
            "6 documents are missing"
        ],
        "workspace_status": "active"
    }
}
GET /api/v1/valuer/application

Get Application

Get application.

The provider views its own onboarding application.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "ulid": null,
        "email": "demo.valuer@doctest.com",
        "phone": "+966500000011",
        "avatar": null,
        "status": "approved",
        "city_id": 1,
        "country": "Test Country",
        "documents": [
            {
                "id": 3,
                "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/portal_taqeem_license.pdf",
                "name": "taqeem_license",
                "ulid": null,
                "status": "accepted",
                "admin_note": null,
                "created_at": "2026-10-19T07:19:57.000000Z",
                "extracted_value": null,
                "rejection_reason": null
            }
        ],
        "tenant_id": 2,
        "categories": [],
        "country_id": 1,
        "created_at": "2026-10-19T07:19:57.000000Z",
        "updated_at": "2026-10-19T07:19:59.000000Z",
        "admin_notes": null,
        "approved_at": null,
        "cover_image": null,
        "company_name": "Portal Co",
        "subscription": "standard",
        "business_type": "corporate",
        "active_members": 0,
        "can_be_approved": false,
        "individual_name": null,
        "national_address": {
            "city": "Test Country",
            "country": "Test Country"
        },
        "rejection_reason": null,
        "contact_person_name": "Lina Saad",
        "requested_subdomain": "portal-co-doc",
        "documents_all_approved": true
    }
}
GET /api/v1/valuer/documents

Get Documents

Get documents.

The provider lists its own documents.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 3,
            "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/portal_taqeem_license.pdf",
            "name": "taqeem_license",
            "ulid": null,
            "status": "accepted",
            "admin_note": null,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "extracted_value": null,
            "rejection_reason": null
        }
    ]
}
GET /api/v1/valuer/documents/3/download

Download Document

Download document.

The provider gets a document path/URL.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "path": "valuer_documents\/demo\/portal_taqeem_license.pdf"
}
POST /api/v1/valuer/documents/3/reupload

Reupload Document

Reupload a provider document.

The provider replaces one of its own onboarding documents. The replacement is a single file upload (PDF, JPG, JPEG or PNG) of at most 2 MB, sent as multipart form data under the "document" field, and the document must belong to the signed in provider.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Authorization string Authorization Key

Request Validations Or Notes

Field/Name Examples
document required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "id": 3,
        "status": "pending",
        "file_path": "uploads\/valuer_documents\/5\/taqeem_license\/1792394487.pdf",
        "is_active": 1,
        "admin_note": null,
        "created_at": "2026-10-19T07:19:57.000000Z",
        "deleted_at": null,
        "updated_at": "2026-10-19T07:21:27.000000Z",
        "document_type": "taqeem_license",
        "valuer_request": {
            "id": 5,
            "status": "under_review",
            "city_id": 1,
            "documents": null,
            "reference": null,
            "tenant_id": 2,
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "deleted_at": null,
            "updated_at": "2026-10-19T07:21:27.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "valuation_type": [
                4
            ],
            "individual_name": null,
            "rejection_reason": null,
            "request_documents": [
                {
                    "id": 3,
                    "status": "pending",
                    "file_path": "uploads\/valuer_documents\/5\/taqeem_license\/1792394487.pdf",
                    "is_active": 1,
                    "admin_note": null,
                    "created_at": "2026-10-19T07:19:57.000000Z",
                    "deleted_at": null,
                    "updated_at": "2026-10-19T07:21:27.000000Z",
                    "document_type": "taqeem_license",
                    "extracted_value": null,
                    "rejection_reason": null,
                    "valuer_request_id": 5
                }
            ],
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "rejected_from_status": null
        },
        "extracted_value": null,
        "rejection_reason": null,
        "valuer_request_id": 5
    },
    "message": "Document reuploaded successfully."
}
GET /api/v1/valuer/review-status

Review Status

Review status.

The provider checks its review status.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "status": "under_review"
}
GET /api/v1/valuer/workspace

Workspace

Workspace.

The provider enters its provisioned workspace and receives its current workspace status, the workspace domain, and the current status of its application.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "domain": "https:\/\/qeei-backend-admin-dev.dafa.dev\/portal-co-doc",
    "subdomain": "portal-co-doc",
    "workspace_status": "active",
    "application_status": "under_review"
}

Contact Us

POST /api/v1/valuer/contact-us

Submit Contact Us Message

Submit a contact-us message.

The provider sends a contact-us message with a message type and content, and optionally up to three file attachments (PDF, JPG, JPEG or PNG, each at most 2 MB). The message is stored under the authenticated provider and is made available for the Super Admin to read in the admin portal; the platform does not email it.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
message string I would like to know more about the subscription plans.
message_type string inquiry

Request Validations Or Notes

Field/Name Examples
message_type required, string, max 255
message required, string, max 5000
attachments optional, array, max 3
attachments[] required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "id": 1,
        "valuer": {
            "id": 3,
            "name": "Portal Co",
            "email": "demo.valuer@doctest.com"
        },
        "message": "I would like to know more about the subscription plans.",
        "created_at": "2026-10-19T07:21:27+00:00",
        "attachments": [],
        "message_type": "inquiry"
    },
    "message": "Your message has been received. Our team will review it and get back to you.",
    "success": true
}

Profile

POST /api/v1/valuer/profile

Update Valuer Profile

Update valuer profile.

The provider updates its own profile: account details, application details and its workspace domain. Its email and its documents cannot be changed here. A domain that is already taken is refused with the message that it is not available together with a list of free alternatives.

Headers

Field/Name Type Examples
Accept string application/json
_method string PUT
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Portal Co
about string Independent valuation company serving the local market.
company_name string Portal Co
contact_person_name string Lina Saad

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
phone optional, string, max 20, regex, Unique
password optional, must match its *_confirmation field, StrongPassword
current_password required, required_with, current_password
about optional, string
logo optional, string, max 2048
cover optional, string, max 2048
company_name optional, string, max 255, regex
individual_name optional, string, max 255, regex
contact_person_name optional, string, max 255, regex
business_type optional, enum: individual, corporate
country_id optional, integer
city_id optional, integer
valuation_type optional, array
valuation_type[] required, integer, distinct, Exists
domain optional, string, max 100, regex
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Portal Co",
        "ulid": null,
        "email": "demo.valuer@doctest.com",
        "status": null,
        "city_id": null,
        "tenant_id": 2,
        "country_id": null,
        "created_at": "2026-10-19T07:19:59.000000Z",
        "updated_at": "2026-10-19T07:21:28.000000Z",
        "admin_notes": null,
        "approved_at": null,
        "category_id": null,
        "valuer_type": null,
        "valuer_request": {
            "id": 5,
            "ulid": null,
            "email": "demo.valuer@doctest.com",
            "phone": "+966500000011",
            "avatar": null,
            "status": "under_review",
            "city_id": 1,
            "country": "Test Country",
            "documents": null,
            "tenant_id": 2,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "updated_at": "2026-10-19T07:21:27.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": null,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "documents_all_approved": null
        },
        "authorized_contact_name": null
    },
    "message": "Data updated successfully.",
    "success": true
}

Valuer Admin API

Tags

POST /api/v1/dashboard/tags

Create Tag

Create a new Tag.

Creates a new Tag in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Ov93bW18YhSO/lsFYcXSWI+tXbhA2F1hFZW0HvWg/P2UEcv2i1bRItHE6BJEmO0o
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
color string #FF0000
status integer 1
tag_name array {"ar":"\u0648\u0633\u0645 \u062a\u062c\u0631\u064a\u0628\u064a 96182373","en":"Test Tag 96182373"}
category_id integer 1

Request Validations Or Notes

Field/Name Examples
tag_name.ar required, ArabicLetters
tag_name.en required, EnglishLetters
category_id required, integer, Exists
color optional, string, allowed: #FF0000, #0000FF, #00FF01, #FFFF00, #800080, #FFA500, #FFC0CB, #00FFFF
status optional, true/false
Success (200 OK)
{
    "data": {
        "id": 3,
        "color": "#FF0000",
        "status": true,
        "category": {
            "id": 1,
            "icon": "test-icon.png",
            "name": "Main Category",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "التصنيف الرئيسي",
                    "en": "Main Category"
                },
                "description": {
                    "ar": "التصنيف الرئيسي للوسوم",
                    "en": "Main category for tags"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Main category for tags"
        },
        "tag_name": "",
        "translate": {
            "tag_name": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/dashboard/tags

Get Tag List

Retrieve a list of Tag.

Retrieves a list of Tag records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Ov93bW18YhSO/lsFYcXSWI+tXbhA2F1hFZW0HvWg/P2UEcv2i1bRItHE6BJEmO0o
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 0,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/tags

Search Tag List

Retrieve a list of Tag.

Filters the tags list by matching the search term against the tag name in any supported language.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Ov93bW18YhSO/lsFYcXSWI+tXbhA2F1hFZW0HvWg/P2UEcv2i1bRItHE6BJEmO0o
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
search string Test Tag 96182373
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 0,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/tags

Filter Tag List by Active Status

Retrieve a list of Tag.

Filters the tags list to only active tags (status=1).

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Ov93bW18YhSO/lsFYcXSWI+tXbhA2F1hFZW0HvWg/P2UEcv2i1bRItHE6BJEmO0o
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
status integer 1
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 0,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/tags

Filter Tag List by Inactive Status

Retrieve a list of Tag.

Filters the tags list to only inactive tags (status=0).

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Ov93bW18YhSO/lsFYcXSWI+tXbhA2F1hFZW0HvWg/P2UEcv2i1bRItHE6BJEmO0o
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
status integer 0
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 0,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/tags

Filter Tag List by Category

Retrieve a list of Tag.

Filters the tags list to only tags belonging to a specific category.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Ov93bW18YhSO/lsFYcXSWI+tXbhA2F1hFZW0HvWg/P2UEcv2i1bRItHE6BJEmO0o
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
category_id integer 1
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 0,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/tags

Search and Filter Tag List

Retrieve a list of Tag.

Combines the search and status filters — both are applied together (AND condition), returning only active tags whose name matches the search term.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Ov93bW18YhSO/lsFYcXSWI+tXbhA2F1hFZW0HvWg/P2UEcv2i1bRItHE6BJEmO0o
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
search string Test Tag 96182373
status integer 1
Success (200 OK)
{
    "data": [],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 0,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/dashboard/tags/5

Get Tag Details

Retrieve Tag details.

Retrieves detailed information about a specific Tag using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string lpKg2gapwqOvyYf501G0GZlGtF0DdljrTcdD4KMpSyq87/Xt8xwyrJUqU/fzJVdR
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "color": "#FF0000",
        "status": true,
        "category": {
            "id": 7,
            "icon": "mobile-vehicle-icon.png",
            "name": "Main Category",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "التصنيف الرئيسي",
                    "en": "Main Category"
                },
                "description": {
                    "ar": "التصنيف الرئيسي للوسوم",
                    "en": "Main category for tags"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Main category for tags"
        },
        "tag_name": "",
        "translate": {
            "tag_name": {
                "ar": "",
                "en": ""
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/dashboard/tags/5

Update Tag

Update an existing Tag.

Updates the specified Tag with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string lpKg2gapwqOvyYf501G0GZlGtF0DdljrTcdD4KMpSyq87/Xt8xwyrJUqU/fzJVdR
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
id integer 5
color string #0000FF
status integer 1
tag_name array {"ar":"\u0648\u0633\u0645 \u062a\u062c\u0631\u064a\u0628\u064a 99989620","en":"Test Tag 99989620"}
category_id integer 7

Request Validations Or Notes

Field/Name Examples
tag_name.ar required, ArabicLetters
tag_name.en required, EnglishLetters
category_id required, integer, Exists
color optional, string, allowed: #FF0000, #0000FF, #00FF01, #FFFF00, #800080, #FFA500, #FFC0CB, #00FFFF
status optional, true/false
Success (200 OK)
{
    "data": {
        "id": 5,
        "color": "#0000FF",
        "status": true,
        "category": {
            "id": 7,
            "icon": "mobile-vehicle-icon.png",
            "name": "Main Category",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "التصنيف الرئيسي",
                    "en": "Main Category"
                },
                "description": {
                    "ar": "التصنيف الرئيسي للوسوم",
                    "en": "Main category for tags"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Main category for tags"
        },
        "tag_name": "Test Tag 99989620",
        "translate": {
            "tag_name": {
                "ar": "وسم تجريبي 99989620",
                "en": "Test Tag 99989620"
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data updated successfully.",
    "success": true
}
PATCH /api/v1/dashboard/tags/5/toggle-active

Toggle Tag Status

Switch the Tag status between active and inactive.

Updates the status of the specified Tag by toggling it between active and inactive. This operation allows enabling or disabling the resource without deleting it from the system.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string lpKg2gapwqOvyYf501G0GZlGtF0DdljrTcdD4KMpSyq87/Xt8xwyrJUqU/fzJVdR
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "color": "#0000FF",
        "status": false,
        "category": {
            "id": 7,
            "icon": "mobile-vehicle-icon.png",
            "name": "Main Category",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "التصنيف الرئيسي",
                    "en": "Main Category"
                },
                "description": {
                    "ar": "التصنيف الرئيسي للوسوم",
                    "en": "Main category for tags"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Main category for tags"
        },
        "tag_name": "Test Tag 99989620",
        "translate": {
            "tag_name": {
                "ar": "وسم تجريبي 99989620",
                "en": "Test Tag 99989620"
            }
        },
        "created_at": "2026-10-19"
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/dashboard/tags/5

Delete Tag

Delete a Tag.

Deletes the specified Tag from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string lpKg2gapwqOvyYf501G0GZlGtF0DdljrTcdD4KMpSyq87/Xt8xwyrJUqU/fzJVdR
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/dashboard/tags/trash

Get Deleted Tag

List deleted Tag.

Retrieve a list of soft-deleted Tag records from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string vGSQytT5TvS5pb7QWIT4XDEoK+WNAKMZl+iiCcwfyRzNPEXmP2tJ/PP3fQhTczWD
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 5,
            "color": "#0000FF",
            "status": false,
            "category": {
                "id": 7,
                "icon": "mobile-vehicle-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "tag_name": "Test Tag 99989620",
            "translate": {
                "tag_name": {
                    "ar": "وسم تجريبي 99989620",
                    "en": "Test Tag 99989620"
                }
            },
            "created_at": "2026-10-19"
        },
        {
            "id": 6,
            "color": "#00FF01",
            "status": true,
            "category": {
                "id": 7,
                "icon": "mobile-vehicle-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "tag_name": "",
            "translate": {
                "tag_name": {
                    "ar": "",
                    "en": ""
                }
            },
            "created_at": "2026-10-19"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 2,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}
PATCH /api/v1/dashboard/tags/5/restore

Restore Tag

Restore deleted Tag.

Restore a previously deleted Tag record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string vGSQytT5TvS5pb7QWIT4XDEoK+WNAKMZl+iiCcwfyRzNPEXmP2tJ/PP3fQhTczWD
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data restored successfully.",
    "success": true
}
DELETE /api/v1/dashboard/tags/5/force-delete

Permanently Delete Tag

Force delete Tag.

Permanently remove the Tag record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string vGSQytT5TvS5pb7QWIT4XDEoK+WNAKMZl+iiCcwfyRzNPEXmP2tJ/PP3fQhTczWD
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}

Manage Plans

GET /api/v1/valuer/plans

Get Valuer Plans

Get valuer plans list.

Retrieve the valuer company plans available for the authenticated valuer admin, marking the plan the company is subscribed to with its renewal date and remaining days.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string griYpn0aX7WekiMDDOFcrq5RP09/Ujp30Imp+B+gG0W+GTCqM4AEB+oVS8Hibusb
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 3,
            "name": "Company plan A",
            "color": "#059669",
            "features": [],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "خطة الشركة أ",
                    "en": "Company plan A"
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "50.00",
            "badge_label": null,
            "renewal_date": null,
            "billing_cycle": "monthly",
            "is_subscribed": false,
            "platform_type": "valuer",
            "regular_price": "100.00",
            "remaining_days": null,
            "subscribers_count": 0
        },
        {
            "id": 4,
            "name": "Company plan B",
            "color": "#6C5DD3",
            "features": [
                {
                    "id": 1,
                    "name": "feature 1",
                    "value": 100,
                    "translate": {
                        "name": {
                            "ar": "خاصيه واحد",
                            "en": "feature 1"
                        }
                    }
                }
            ],
            "is_active": true,
            "translate": {
                "name": {
                    "ar": "خطة الشركة ب",
                    "en": "Company plan B"
                },
                "badge_label": {
                    "ar": null,
                    "en": null
                }
            },
            "sale_price": "100.00",
            "badge_label": null,
            "renewal_date": "2026-11-19T07:26:01.000000Z",
            "billing_cycle": "monthly",
            "is_subscribed": true,
            "platform_type": "valuer",
            "regular_price": "200.00",
            "remaining_days": 30,
            "subscribers_count": 0
        }
    ],
    "message": "Plans retrieved successfully",
    "success": true
}
GET /api/v1/valuer/plan

Get My Plan

Get my current plan.

Retrieve the plan the valuer company of the authenticated valuer admin is subscribed to, with its subscription status, the date it renews on, how many days are left, and the feature values the plan carries. Answers with no plan when the company has no active plan.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string griYpn0aX7WekiMDDOFcrq5RP09/Ujp30Imp+B+gG0W+GTCqM4AEB+oVS8Hibusb
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 5,
        "plan": {
            "id": 4,
            "name": {
                "ar": "خطة الشركة ب",
                "en": "Company plan B"
            },
            "color": "#6C5DD3",
            "is_active": true,
            "sale_price": "100.00",
            "badge_label": {
                "ar": null,
                "en": null
            },
            "billing_cycle": "monthly",
            "platform_type": "valuer",
            "regular_price": "200.00"
        },
        "status": "active",
        "ends_at": "2026-11-19T07:26:01.000000Z",
        "features": [
            {
                "id": 1,
                "name": {
                    "ar": "خاصيه واحد",
                    "en": "feature 1"
                },
                "value": 100
            }
        ],
        "plan_key": null,
        "is_active": true,
        "sale_type": "fixed",
        "starts_at": "2026-10-19T07:26:01.000000Z",
        "sale_price": "100.00",
        "tenant_ulid": "01m59fy6xrswbjxqvzmzebngvc",
        "last_payment": "2026-10-19T07:26:01.000000Z",
        "billing_cycle": "monthly",
        "regular_price": "200.00",
        "manage_plan_id": 4,
        "remaining_days": 30
    },
    "message": "Plan retrieved successfully",
    "success": true
}
POST /api/v1/plans/subscriptions/5/cancel

Cancel Subscription

Cancel subscription.

Cancel the active plan of the valuer company behind the authenticated valuer admin.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string griYpn0aX7WekiMDDOFcrq5RP09/Ujp30Imp+B+gG0W+GTCqM4AEB+oVS8Hibusb
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
cancelled_reason string No longer needed
Success (200 OK)
{
    "data": {
        "id": 5,
        "plan": {
            "id": 4,
            "name": {
                "ar": "خطة الشركة ب",
                "en": "Company plan B"
            },
            "color": "#6C5DD3",
            "is_active": true,
            "sale_price": "100.00",
            "badge_label": {
                "ar": null,
                "en": null
            },
            "billing_cycle": "monthly",
            "platform_type": "valuer",
            "regular_price": "200.00"
        },
        "status": "cancelled",
        "ends_at": "2026-11-19T07:26:01.000000Z",
        "features": [
            {
                "id": 1,
                "name": {
                    "ar": "خاصيه واحد",
                    "en": "feature 1"
                },
                "value": 100
            }
        ],
        "plan_key": null,
        "is_active": false,
        "sale_type": "fixed",
        "starts_at": "2026-10-19T07:26:01.000000Z",
        "sale_price": "100.00",
        "tenant_ulid": "01m59fy6xrswbjxqvzmzebngvc",
        "cancelled_at": "2026-10-19T07:26:02.000000Z",
        "last_payment": "2026-10-19T07:26:01.000000Z",
        "billing_cycle": "monthly",
        "regular_price": "200.00",
        "manage_plan_id": 4,
        "remaining_days": null,
        "cancelled_reason": "No longer needed"
    },
    "message": "Subscription cancelled successfully",
    "success": true
}
POST /api/v1/plans/subscriptions

Subscribe To Plan

Subscribe user to plan.

Subscribe the valuer company behind the authenticated valuer admin to a plan, cancelling the plan it was on before.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string griYpn0aX7WekiMDDOFcrq5RP09/Ujp30Imp+B+gG0W+GTCqM4AEB+oVS8Hibusb
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
plan_id integer 3
Success (200 OK)
{
    "data": {
        "id": 6,
        "plan": {
            "id": 3,
            "name": {
                "ar": "خطة الشركة أ",
                "en": "Company plan A"
            },
            "color": "#059669",
            "is_active": true,
            "sale_price": "50.00",
            "badge_label": {
                "ar": null,
                "en": null
            },
            "billing_cycle": "monthly",
            "platform_type": "valuer",
            "regular_price": "100.00"
        },
        "status": "active",
        "ends_at": "2026-11-19T07:26:02.000000Z",
        "features": [],
        "plan_key": null,
        "is_active": true,
        "sale_type": "fixed",
        "starts_at": "2026-10-19T07:26:02.000000Z",
        "sale_price": "50.00",
        "tenant_ulid": "01m59fy6xrswbjxqvzmzebngvc",
        "last_payment": "2026-10-19T07:26:02.000000Z",
        "billing_cycle": "monthly",
        "regular_price": "100.00",
        "manage_plan_id": 3,
        "remaining_days": null
    },
    "message": "Subscribed successfully",
    "success": true
}

Authentication

POST /api/v1/valuer-admin/login

Login

Standard mobile login.

Authenticate using phone number and password. Returns a Bearer token upon success.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string NZsvDHiliC97hKwUGNO5xZU236lfYowoKCE1fdbskzuYnnJVIh44JlDxNWSLmKuW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json

Request Body

Field/Name Type Examples
step integer 1
email string doc-admin@base.com
password string P@ssw0rd123
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Documentation Admin",
        "email": "doc-admin@base.com",
        "phone": "01000000000",
        "roles": [],
        "token": "119|NgNVce1Vag8qJAaYVUnEErs1nA9wR0PDs3ik4GzE776b1cbf",
        "avatar": null,
        "created_at": "2026-10-19",
        "expires_in": null,
        "token_type": "Bearer",
        "permissions": []
    },
    "message": "welcome Documentation Admin",
    "success": true
}
POST /api/v1/valuer-admin/forget-password

Forget Password

Request reset OTP.

Request a password reset OTP by providing the registered phone number.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string NZsvDHiliC97hKwUGNO5xZU236lfYowoKCE1fdbskzuYnnJVIh44JlDxNWSLmKuW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json

Request Body

Field/Name Type Examples
email string doc-admin@base.com
Success (200 OK)
{
    "data": {
        "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "Please check your email",
    "success": true
}
POST /api/v1/valuer-admin/verify-forget-password-otp

Verify Forget Password OTP

Verify reset OTP.

Verify the OTP received for password reset.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string NZsvDHiliC97hKwUGNO5xZU236lfYowoKCE1fdbskzuYnnJVIh44JlDxNWSLmKuW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json

Request Body

Field/Name Type Examples
otp string 1234
email string doc-admin@base.com
change_password_token string SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw
Success (200 OK)
{
    "data": {
        "change_password_token": "SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw"
    },
    "message": "Your Otp Verified successfully.",
    "success": true
}
POST /api/v1/valuer-admin/reset-password

Reset Password

Complete password reset.

Reset the account password by providing the OTP received and the new password.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string NZsvDHiliC97hKwUGNO5xZU236lfYowoKCE1fdbskzuYnnJVIh44JlDxNWSLmKuW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json

Request Body

Field/Name Type Examples
email string doc-admin@base.com
password string NewP@ssw0rd123
change_password_token string SJXwJKTiW6hxnFSn7i7IyScUUYpIQSCM9o5L4qmZBgcHlaNBzQKpe05QPKNrbPIw
new_password_confirmation string NewP@ssw0rd123
Success (200 OK)
{
    "data": [],
    "message": "Password reset successfully.",
    "success": true
}
POST /api/v1/valuer-admin/resend-otp

Resend OTP

Resend verification code.

Request a new OTP code if the previous one expired or was not received. Works for both pending registrations and existing users.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string NZsvDHiliC97hKwUGNO5xZU236lfYowoKCE1fdbskzuYnnJVIh44JlDxNWSLmKuW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json

Request Body

Field/Name Type Examples
email string doc-admin@base.com
Success (200 OK)
{
    "data": {
        "otp": 1234
    },
    "message": "OTP resent successfully.",
    "success": true
}
POST /api/v1/valuer-admin/logout

Logout

Admin logout.

Log out the currently authenticated admin and invalidate the token.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string NZsvDHiliC97hKwUGNO5xZU236lfYowoKCE1fdbskzuYnnJVIh44JlDxNWSLmKuW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Good by.",
    "success": true
}

Valuer Admin

GET /api/v1/valuer-admin

Get Subdomain Tenant Info

Get tenant id and info by subdomain.

Public endpoint. Given a tenant subdomain (query parameter "subdomain" or the X-Subdomain header), returns the tenant id as an encrypted value ready to send as the X-Tenant header, plus the tenant domain and logo. Used by clients to obtain a valid X-Tenant / X-Subdomain pair before calling any protected valuer-admin endpoint.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Query Parameters

Field/Name Type Examples
subdomain string doc-JDao10o8
Success (200 OK)
{
    "data": {
        "id": "vnEjj4OocheqGMIITxSKVDBtSjIxsjVXiaKqMybhzb0KPCXbbLw8dyjseO5bUZvh",
        "logo": null,
        "name": "Documentation Tenant",
        "domain": "doc-JDao10o8"
    },
    "message": "Subdomain resolved successfully.",
    "success": true
}
POST /api/v1/valuer-admin/refresh-token

Refresh Token

Refresh admin token.

Generate a new authentication token for the current session.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string NZsvDHiliC97hKwUGNO5xZU236lfYowoKCE1fdbskzuYnnJVIh44JlDxNWSLmKuW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "user": {
            "id": 1,
            "name": "Admin",
            "email": "ValuerAdmin@base.com",
            "phone": "000000000000",
            "roles": [
                {
                    "id": 1,
                    "pivot": {
                        "role_id": 1,
                        "admin_id": 1
                    },
                    "is_active": 1,
                    "created_at": "2026-10-19T07:10:12.000000Z",
                    "deleted_at": null,
                    "updated_at": "2026-10-19T07:20:31.000000Z"
                },
                {
                    "id": 2,
                    "pivot": {
                        "role_id": 2,
                        "admin_id": 1
                    },
                    "is_active": 1,
                    "created_at": "2026-10-19T07:10:12.000000Z",
                    "deleted_at": null,
                    "updated_at": "2026-10-19T07:20:31.000000Z"
                }
            ],
            "avatar": null,
            "is_active": true,
            "job_title": null,
            "created_at": "2026-10-19T07:10:14.000000Z",
            "tenant_ulid": "01m59fy6xrswbjxqvzmzebngvc",
            "contract_type": null,
            "last_login_at": "2026-10-19T07:22:06.000000Z"
        },
        "token": "120|jRzKAd7uRAnO6WmkbvO6w3fmjUfKlbz6rASs5f1b771b5dda",
        "expires_in": null,
        "token_type": "Bearer"
    },
    "message": "New Token",
    "success": true
}

Administration

GET /api/v1/valuer-admin/dashboard/roles/1/permissions

Get Role ValuerPermissions

List role permissions.

Retrieves the permissions assigned to the specified role, categorized by module.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string lvupuIy3TVjdwel5q0VSnL18qOaLSQQjxoaXH214yWWCKp6VsJ/ZcJIB3AfR0S03
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "title": "Users",
            "permissions": [
                {
                    "id": 1,
                    "name": "users-fetch",
                    "title": "Fetch Data",
                    "model_id": 1,
                    "permission_id": 1
                },
                {
                    "id": 2,
                    "name": "users-create",
                    "title": "Create Data",
                    "model_id": 1,
                    "permission_id": 2
                },
                {
                    "id": 3,
                    "name": "users-read",
                    "title": "Read Data",
                    "model_id": 1,
                    "permission_id": 3
                },
                {
                    "id": 4,
                    "name": "users-update",
                    "title": "Update Data",
                    "model_id": 1,
                    "permission_id": 4
                },
                {
                    "id": 5,
                    "name": "users-delete",
                    "title": "Delete Data",
                    "model_id": 1,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 2,
            "title": "Valuers",
            "permissions": [
                {
                    "id": 6,
                    "name": "valuers-fetch",
                    "title": "Fetch Data",
                    "model_id": 2,
                    "permission_id": 1
                },
                {
                    "id": 7,
                    "name": "valuers-create",
                    "title": "Create Data",
                    "model_id": 2,
                    "permission_id": 2
                },
                {
                    "id": 8,
                    "name": "valuers-read",
                    "title": "Read Data",
                    "model_id": 2,
                    "permission_id": 3
                },
                {
                    "id": 9,
                    "name": "valuers-update",
                    "title": "Update Data",
                    "model_id": 2,
                    "permission_id": 4
                },
                {
                    "id": 10,
                    "name": "valuers-delete",
                    "title": "Delete Data",
                    "model_id": 2,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 3,
            "title": "Requests",
            "permissions": [
                {
                    "id": 11,
                    "name": "requests-fetch",
                    "title": "Fetch Data",
                    "model_id": 3,
                    "permission_id": 1
                },
                {
                    "id": 12,
                    "name": "requests-create",
                    "title": "Create Data",
                    "model_id": 3,
                    "permission_id": 2
                },
                {
                    "id": 13,
                    "name": "requests-read",
                    "title": "Read Data",
                    "model_id": 3,
                    "permission_id": 3
                },
                {
                    "id": 14,
                    "name": "requests-update",
                    "title": "Update Data",
                    "model_id": 3,
                    "permission_id": 4
                },
                {
                    "id": 15,
                    "name": "requests-delete",
                    "title": "Delete Data",
                    "model_id": 3,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 4,
            "title": "Reports",
            "permissions": [
                {
                    "id": 16,
                    "name": "reports-fetch",
                    "title": "Fetch Data",
                    "model_id": 4,
                    "permission_id": 1
                },
                {
                    "id": 17,
                    "name": "reports-create",
                    "title": "Create Data",
                    "model_id": 4,
                    "permission_id": 2
                },
                {
                    "id": 18,
                    "name": "reports-read",
                    "title": "Read Data",
                    "model_id": 4,
                    "permission_id": 3
                },
                {
                    "id": 19,
                    "name": "reports-update",
                    "title": "Update Data",
                    "model_id": 4,
                    "permission_id": 4
                },
                {
                    "id": 20,
                    "name": "reports-delete",
                    "title": "Delete Data",
                    "model_id": 4,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 5,
            "title": "Team Management",
            "permissions": [
                {
                    "id": 21,
                    "name": "team_management-fetch",
                    "title": "Fetch Data",
                    "model_id": 5,
                    "permission_id": 1
                },
                {
                    "id": 22,
                    "name": "team_management-create",
                    "title": "Create Data",
                    "model_id": 5,
                    "permission_id": 2
                },
                {
                    "id": 23,
                    "name": "team_management-read",
                    "title": "Read Data",
                    "model_id": 5,
                    "permission_id": 3
                },
                {
                    "id": 24,
                    "name": "team_management-update",
                    "title": "Update Data",
                    "model_id": 5,
                    "permission_id": 4
                },
                {
                    "id": 25,
                    "name": "team_management-delete",
                    "title": "Delete Data",
                    "model_id": 5,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 6,
            "title": "Finance",
            "permissions": [
                {
                    "id": 26,
                    "name": "finance-fetch",
                    "title": "Fetch Data",
                    "model_id": 6,
                    "permission_id": 1
                },
                {
                    "id": 27,
                    "name": "finance-create",
                    "title": "Create Data",
                    "model_id": 6,
                    "permission_id": 2
                },
                {
                    "id": 28,
                    "name": "finance-read",
                    "title": "Read Data",
                    "model_id": 6,
                    "permission_id": 3
                },
                {
                    "id": 29,
                    "name": "finance-update",
                    "title": "Update Data",
                    "model_id": 6,
                    "permission_id": 4
                },
                {
                    "id": 30,
                    "name": "finance-delete",
                    "title": "Delete Data",
                    "model_id": 6,
                    "permission_id": 5
                }
            ]
        },
        {
            "id": 7,
            "title": "reviews",
            "permissions": [
                {
                    "id": 31,
                    "name": "reviews-fetch",
                    "title": "Fetch Data",
                    "model_id": 7,
                    "permission_id": 1
                },
                {
                    "id": 32,
                    "name": "reviews-create",
                    "title": "Create Data",
                    "model_id": 7,
                    "permission_id": 2
                },
                {
                    "id": 33,
                    "name": "reviews-read",
                    "title": "Read Data",
                    "model_id": 7,
                    "permission_id": 3
                },
                {
                    "id": 34,
                    "name": "reviews-update",
                    "title": "Update Data",
                    "model_id": 7,
                    "permission_id": 4
                },
                {
                    "id": 35,
                    "name": "reviews-delete",
                    "title": "Delete Data",
                    "model_id": 7,
                    "permission_id": 5
                }
            ]
        }
    ],
    "message": "Role permissions retrieved successfully.",
    "success": true
}
DELETE /api/v1/valuer-admin/dashboard/roles/3

Delete Role

Delete a Role.

Deletes the specified Role from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string /R0BMWP2a05aW/sjafoyD+a9nlgJniBpEBfXZ5ygIfMa+bUA9AfgFWwsjQx8x+tO
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Role deleted successfully.",
    "success": true
}
DELETE /api/v1/valuer-admin/dashboard/roles/3/force-delete

Permanently Delete Role

Force delete Role.

Permanently remove the Role record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string DDlsdZEVMtDuRyVBaYAr2AEOVgDqHlzZM4u6q1EfdveV//i8diE95243MWCko+bl
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Role permanently deleted.",
    "success": true
}

Services

POST /api/v1/services

Create Service

Create a new Service.

Creates a new Service in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string F93Nx1D1r4E7pGMzskN+BaE2F7ROdkD+OJNiacVn2GfQFb+5oL44WsbG11nUAvnP
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Documentation Create Service 56409788
form_id integer 5
name_ar string خدمة موثقة 56409788
benefits array [{"name":"Benefit A"},{"name":"Benefit B"}]
currency string SAR
features array ["feature-a","feature-b"]
overview string A short overview of the service.
is_active integer 1
price_end integer 600
category_id integer 1
description string Full description of the service offering.
overview_ar string نظرة عامة مختصرة عن الخدمة.
price_start integer 150
description_ar string وصف كامل للخدمة.

Request Validations Or Notes

Field/Name Examples
name required, string, max 255
name_ar optional, string, max 255
category_id required, Closure
form_id required, exists forms,id, unique service,form_id,, Closure
overview optional, string
overview_ar optional, string
description optional, string
description_ar optional, string
price_start optional, number, min 0
price_end optional, number, min 0
currency optional, string, size
features optional, array
features[] string
image optional, image, file types: jpg,jpeg,png,webp, max 5120 KB (upload)
benefits optional, array
benefits[].name required, string, max 255
benefits[].icon optional, string
is_active boolean
Success (200 OK)
{
    "data": {
        "id": 9,
        "name": "Documentation Create Service 56409788",
        "tags": [],
        "image": null,
        "rating": 0,
        "form_id": 5,
        "benefits": [
            {
                "id": 4,
                "icon": null,
                "name": "Benefit A",
                "service_id": 9,
                "sort_order": 0
            },
            {
                "id": 5,
                "icon": null,
                "name": "Benefit B",
                "service_id": 9,
                "sort_order": 1
            }
        ],
        "currency": "SAR",
        "duration": null,
        "features": [
            "feature-a",
            "feature-b"
        ],
        "overview": "A short overview of the service.",
        "is_active": true,
        "price_end": 600,
        "translate": {
            "name": {
                "ar": "خدمة موثقة 56409788",
                "en": "Documentation Create Service 56409788"
            },
            "overview": {
                "ar": "نظرة عامة مختصرة عن الخدمة.",
                "en": "A short overview of the service."
            },
            "description": {
                "ar": "وصف كامل للخدمة.",
                "en": "Full description of the service offering."
            }
        },
        "valuer_id": 6,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": "Full description of the service offering.",
        "price_start": 150,
        "reviews_count": 0
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/services

Get Service List

Get the Service List of your own valuer company.

Retrieves a list of Service records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters. The list only holds the services of the valuer company behind the signed in valuer admin, so the services of any other valuer company are never returned.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string F93Nx1D1r4E7pGMzskN+BaE2F7ROdkD+OJNiacVn2GfQFb+5oL44WsbG11nUAvnP
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "name": "Documentation Service",
            "tags": [],
            "image": null,
            "rating": 0,
            "form_id": 2,
            "benefits": [],
            "currency": "SAR",
            "duration": null,
            "features": [],
            "overview": "Documentation service overview",
            "is_active": true,
            "price_end": 500,
            "translate": {
                "name": {
                    "ar": "خدمة موثقة",
                    "en": "Documentation Service"
                },
                "overview": {
                    "ar": "نظرة عامة",
                    "en": "Documentation service overview"
                },
                "description": {
                    "ar": "وصف الخدمة",
                    "en": "Documentation service description"
                }
            },
            "valuer_id": 6,
            "created_at": "2026-10-19",
            "category_id": 1,
            "description": "Documentation service description",
            "price_start": 100,
            "reviews_count": 0
        },
        {
            "id": 3,
            "name": "Documentation Secondary Service",
            "tags": [],
            "image": null,
            "rating": 0,
            "form_id": 3,
            "benefits": [],
            "currency": "SAR",
            "duration": null,
            "features": [],
            "overview": null,
            "is_active": true,
            "price_end": 800,
            "translate": {
                "name": {
                    "ar": "",
                    "en": "Documentation Secondary Service"
                },
                "overview": {
                    "ar": null,
                    "en": null
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 6,
            "created_at": "2026-10-19",
            "category_id": 1,
            "description": null,
            "price_start": 200,
            "reviews_count": 0
        },
        {
            "id": 9,
            "name": "Documentation Create Service 56409788",
            "tags": [],
            "image": null,
            "rating": 0,
            "form_id": 5,
            "benefits": [
                {
                    "id": 4,
                    "icon": null,
                    "name": "Benefit A",
                    "service_id": 9,
                    "sort_order": 0
                },
                {
                    "id": 5,
                    "icon": null,
                    "name": "Benefit B",
                    "service_id": 9,
                    "sort_order": 1
                }
            ],
            "currency": "SAR",
            "duration": null,
            "features": [
                "feature-a",
                "feature-b"
            ],
            "overview": "A short overview of the service.",
            "is_active": true,
            "price_end": 600,
            "translate": {
                "name": {
                    "ar": "خدمة موثقة 56409788",
                    "en": "Documentation Create Service 56409788"
                },
                "overview": {
                    "ar": "نظرة عامة مختصرة عن الخدمة.",
                    "en": "A short overview of the service."
                },
                "description": {
                    "ar": "وصف كامل للخدمة.",
                    "en": "Full description of the service offering."
                }
            },
            "valuer_id": 6,
            "created_at": "2026-10-19",
            "category_id": 1,
            "description": "Full description of the service offering.",
            "price_start": 150,
            "reviews_count": 0
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 3,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/services/3/form

Get Service Form

View the form attached to a service.

Retrieves the form attached to a specific service, including its steps, questions and options.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string F93Nx1D1r4E7pGMzskN+BaE2F7ROdkD+OJNiacVn2GfQFb+5oL44WsbG11nUAvnP
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Documentation Secondary Form",
        "steps": [],
        "status": "draft",
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 0,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data retrieved successfully.",
    "success": true
}
POST /api/v1/services/3/form

Attach Form to Service

Link a form to a service.

Attaches an existing form to a service. A service can be linked to exactly one form.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string F93Nx1D1r4E7pGMzskN+BaE2F7ROdkD+OJNiacVn2GfQFb+5oL44WsbG11nUAvnP
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
form_id integer 6
Success (200 OK)
{
    "data": {
        "id": 3,
        "form": {
            "id": 6,
            "name": "Documentation Attach Form zKax8U",
            "status": "draft",
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null
        },
        "name": "Documentation Secondary Service",
        "tags": [],
        "image": null,
        "rating": 0,
        "form_id": 6,
        "benefits": [],
        "currency": "SAR",
        "duration": null,
        "features": [],
        "overview": null,
        "is_active": true,
        "price_end": 800,
        "translate": {
            "name": {
                "ar": "",
                "en": "Documentation Secondary Service"
            },
            "overview": {
                "ar": null,
                "en": null
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "valuer_id": 6,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": null,
        "price_start": 200,
        "reviews_count": 0
    },
    "message": "Form attached successfully.",
    "success": true
}
GET /api/v1/services/2

Get Service Details

Retrieve Service details.

Retrieves detailed information about a specific Service using its unique identifier. A service of another valuer company answers with 404.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7CaQNQ/ibEjv14X0EKha7CCh4IBI5k9rz8u8F24nSt+iWWdpFvrcFZ5F+sR9t2Qf
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "form": {
            "id": 2,
            "name": "Documentation Form",
            "steps": [
                {
                    "id": 1,
                    "title": "Documentation Step",
                    "form_id": 2,
                    "questions": [
                        {
                            "id": 2,
                            "label": "Documentation Delete Question 5o6Ii7",
                            "tag_id": null,
                            "options": [],
                            "step_id": 1,
                            "field_type": "short_text",
                            "sort_order": 0,
                            "description": null,
                            "is_required": false,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        },
                        {
                            "id": 7,
                            "label": "Documentation Delete Question fW3U5E",
                            "tag_id": null,
                            "options": [],
                            "step_id": 1,
                            "field_type": "short_text",
                            "sort_order": 0,
                            "description": null,
                            "is_required": false,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        },
                        {
                            "id": 20,
                            "label": "Documentation Delete Question 59xh5N",
                            "tag_id": null,
                            "options": [],
                            "step_id": 1,
                            "field_type": "short_text",
                            "sort_order": 0,
                            "description": null,
                            "is_required": false,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        },
                        {
                            "id": 23,
                            "label": "Documentation Delete Question M8tXjc",
                            "tag_id": null,
                            "options": [],
                            "step_id": 1,
                            "field_type": "short_text",
                            "sort_order": 0,
                            "description": null,
                            "is_required": false,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        },
                        {
                            "id": 25,
                            "label": "Documentation Delete Question s4ijOi",
                            "tag_id": null,
                            "options": [],
                            "step_id": 1,
                            "field_type": "short_text",
                            "sort_order": 0,
                            "description": null,
                            "is_required": false,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        },
                        {
                            "id": 1,
                            "label": "Documentation Question",
                            "tag_id": null,
                            "options": [
                                {
                                    "id": 1,
                                    "is_default": false,
                                    "sort_order": 1,
                                    "question_id": 1,
                                    "option_label": "Documentation Option",
                                    "option_value": "doc_option",
                                    "price_adjustment_type": null,
                                    "price_adjustment_value": 0
                                },
                                {
                                    "id": 16,
                                    "is_default": false,
                                    "sort_order": 3,
                                    "question_id": 1,
                                    "option_label": "Documentation Option 93343809",
                                    "option_value": "doc_option_47325767",
                                    "price_adjustment_type": "fixed",
                                    "price_adjustment_value": 10
                                }
                            ],
                            "step_id": 1,
                            "field_type": "dropdown",
                            "sort_order": 1,
                            "description": null,
                            "is_required": true,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        },
                        {
                            "id": 22,
                            "label": "Documentation Create Question 97293857",
                            "tag_id": null,
                            "options": [],
                            "step_id": 1,
                            "field_type": "short_text",
                            "sort_order": 2,
                            "description": null,
                            "is_required": true,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        }
                    ],
                    "step_number": 1
                },
                {
                    "id": 21,
                    "title": "Documentation Create Step 87876417",
                    "form_id": 2,
                    "questions": [],
                    "step_number": 2
                },
                {
                    "id": 2,
                    "title": "Documentation Delete Step 9qezwj",
                    "form_id": 2,
                    "questions": [],
                    "step_number": 99
                },
                {
                    "id": 7,
                    "title": "Documentation Delete Step ARwFSX",
                    "form_id": 2,
                    "questions": [],
                    "step_number": 99
                },
                {
                    "id": 18,
                    "title": "Documentation Delete Step evatQQ",
                    "form_id": 2,
                    "questions": [],
                    "step_number": 99
                },
                {
                    "id": 22,
                    "title": "Documentation Delete Step IVI0lB",
                    "form_id": 2,
                    "questions": [],
                    "step_number": 99
                },
                {
                    "id": 25,
                    "title": "Documentation Delete Step 1DUusK",
                    "form_id": 2,
                    "questions": [],
                    "step_number": 99
                },
                {
                    "id": 12,
                    "title": "Additional Info 15880251",
                    "form_id": 2,
                    "questions": [
                        {
                            "id": 12,
                            "label": "Occupancy Status 15880251",
                            "tag_id": null,
                            "options": [
                                {
                                    "id": 8,
                                    "is_default": true,
                                    "sort_order": 1,
                                    "question_id": 12,
                                    "option_label": "Occupied",
                                    "option_value": "occupied",
                                    "price_adjustment_type": "percentage",
                                    "price_adjustment_value": 5
                                },
                                {
                                    "id": 9,
                                    "is_default": false,
                                    "sort_order": 2,
                                    "question_id": 12,
                                    "option_label": "Vacant",
                                    "option_value": "vacant",
                                    "price_adjustment_type": null,
                                    "price_adjustment_value": 0
                                }
                            ],
                            "step_id": 12,
                            "field_type": "dropdown",
                            "sort_order": 1,
                            "description": null,
                            "is_required": true,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        },
                        {
                            "id": 13,
                            "label": "Year Built 15880251",
                            "tag_id": null,
                            "options": [],
                            "step_id": 12,
                            "field_type": "number",
                            "sort_order": 2,
                            "description": null,
                            "is_required": false,
                            "placeholder": null,
                            "pricing_type": null,
                            "pricing_unit": null,
                            "pricing_value": null
                        }
                    ],
                    "step_number": 100
                }
            ],
            "status": "draft",
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 175,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null
        },
        "name": "Documentation Service",
        "tags": [],
        "image": null,
        "rating": 0,
        "form_id": 2,
        "benefits": [],
        "currency": "SAR",
        "duration": null,
        "features": [],
        "overview": "Documentation service overview",
        "is_active": true,
        "price_end": 500,
        "translate": {
            "name": {
                "ar": "خدمة موثقة",
                "en": "Documentation Service"
            },
            "overview": {
                "ar": "نظرة عامة",
                "en": "Documentation service overview"
            },
            "description": {
                "ar": "وصف الخدمة",
                "en": "Documentation service description"
            }
        },
        "valuer_id": 6,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": "Documentation service description",
        "price_start": 100,
        "reviews_count": 0
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/services/2

Update Service

Update an existing Service.

Updates the specified Service with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7CaQNQ/ibEjv14X0EKha7CCh4IBI5k9rz8u8F24nSt+iWWdpFvrcFZ5F+sR9t2Qf
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
currency string SAR
is_active integer 1
price_end integer 750
price_start integer 250

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
name_ar optional, string, max 255
category_id optional, Closure
form_id optional, exists forms,id, unique service,form_id,, Closure
overview optional, string
overview_ar optional, string
description optional, string
description_ar optional, string
price_start optional, number, min 0
price_end optional, number, min 0
currency optional, string, size
features optional, array
features[] string
image optional, image, file types: jpg,jpeg,png,webp, max 5120 KB (upload)
delete_image optional, true/false
benefits optional, array
benefits[].name required, string, max 255
benefits[].icon optional, string
is_active boolean
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Documentation Service",
        "tags": [],
        "image": null,
        "rating": 0,
        "form_id": 2,
        "benefits": [],
        "currency": "SAR",
        "duration": null,
        "features": [],
        "overview": "Documentation service overview",
        "is_active": true,
        "price_end": 750,
        "translate": {
            "name": {
                "ar": "خدمة موثقة",
                "en": "Documentation Service"
            },
            "overview": {
                "ar": "نظرة عامة",
                "en": "Documentation service overview"
            },
            "description": {
                "ar": "وصف الخدمة",
                "en": "Documentation service description"
            }
        },
        "valuer_id": 6,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": "Documentation service description",
        "price_start": 250,
        "reviews_count": 0
    },
    "message": "Data updated successfully.",
    "success": true
}
PATCH /api/v1/services/2

Partially Update Service

Update selected service fields.

Partially updates a service. Only the supplied fields are changed; all omitted service details remain unchanged.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7CaQNQ/ibEjv14X0EKha7CCh4IBI5k9rz8u8F24nSt+iWWdpFvrcFZ5F+sR9t2Qf
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
price_end integer 850

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
name_ar optional, string, max 255
category_id optional, Closure
form_id optional, exists forms,id, unique service,form_id,, Closure
overview optional, string
overview_ar optional, string
description optional, string
description_ar optional, string
price_start optional, number, min 0
price_end optional, number, min 0
currency optional, string, size
features optional, array
features[] string
image optional, image, file types: jpg,jpeg,png,webp, max 5120 KB (upload)
delete_image optional, true/false
benefits optional, array
benefits[].name required, string, max 255
benefits[].icon optional, string
is_active boolean
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Documentation Service",
        "tags": [],
        "image": null,
        "rating": 0,
        "form_id": 2,
        "benefits": [],
        "currency": "SAR",
        "duration": null,
        "features": [],
        "overview": "Documentation service overview",
        "is_active": true,
        "price_end": 850,
        "translate": {
            "name": {
                "ar": "خدمة موثقة",
                "en": "Documentation Service"
            },
            "overview": {
                "ar": "نظرة عامة",
                "en": "Documentation service overview"
            },
            "description": {
                "ar": "وصف الخدمة",
                "en": "Documentation service description"
            }
        },
        "valuer_id": 6,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": "Documentation service description",
        "price_start": 250,
        "reviews_count": 0
    },
    "message": "Data updated successfully.",
    "success": true
}
POST /api/v1/services/2/toggle

Toggle Service Status

Enable or disable a service.

Toggles a service between active and inactive without removing it.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7CaQNQ/ibEjv14X0EKha7CCh4IBI5k9rz8u8F24nSt+iWWdpFvrcFZ5F+sR9t2Qf
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "form": {
            "id": 2,
            "name": "Documentation Form",
            "status": "draft",
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 175,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null
        },
        "name": "Documentation Service",
        "tags": [],
        "image": null,
        "rating": 0,
        "form_id": 2,
        "benefits": [],
        "currency": "SAR",
        "duration": null,
        "features": [],
        "overview": "Documentation service overview",
        "is_active": false,
        "price_end": 850,
        "translate": {
            "name": {
                "ar": "خدمة موثقة",
                "en": "Documentation Service"
            },
            "overview": {
                "ar": "نظرة عامة",
                "en": "Documentation service overview"
            },
            "description": {
                "ar": "وصف الخدمة",
                "en": "Documentation service description"
            }
        },
        "valuer_id": 6,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": "Documentation service description",
        "price_start": 250,
        "reviews_count": 0
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/services/2

Delete Service

Delete a Service.

Deletes the specified Service from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7CaQNQ/ibEjv14X0EKha7CCh4IBI5k9rz8u8F24nSt+iWWdpFvrcFZ5F+sR9t2Qf
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/services/trash

Get Deleted Service

List deleted Service.

Retrieve a list of soft-deleted Service records from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string OXmXZECpxH3E3mVODSDKyDk5Qg36PzPPbiDKjuOHNUu9lqVkFESyTvDwbwl8MNvz
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 4,
            "name": "Documentation Trashed Service",
            "tags": [],
            "image": null,
            "rating": 0,
            "form_id": 4,
            "benefits": [],
            "currency": "SAR",
            "duration": null,
            "features": [],
            "overview": null,
            "is_active": false,
            "price_end": 150,
            "translate": {
                "name": {
                    "ar": "",
                    "en": "Documentation Trashed Service"
                },
                "overview": {
                    "ar": null,
                    "en": null
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "valuer_id": 6,
            "created_at": "2026-10-19",
            "category_id": 1,
            "description": null,
            "price_start": 50,
            "reviews_count": 0
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 1,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
PATCH /api/v1/services/4/restore

Restore Service

Restore deleted Service.

Restore a previously deleted Service record from the recycle bin.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string OXmXZECpxH3E3mVODSDKyDk5Qg36PzPPbiDKjuOHNUu9lqVkFESyTvDwbwl8MNvz
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 4,
        "form": {
            "id": 4,
            "name": "Documentation Trashed Form",
            "status": "archived",
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null
        },
        "name": "Documentation Trashed Service",
        "tags": [],
        "image": null,
        "rating": 0,
        "form_id": 4,
        "benefits": [],
        "currency": "SAR",
        "duration": null,
        "features": [],
        "overview": null,
        "is_active": false,
        "price_end": 150,
        "translate": {
            "name": {
                "ar": "",
                "en": "Documentation Trashed Service"
            },
            "overview": {
                "ar": null,
                "en": null
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "valuer_id": 6,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": null,
        "price_start": 50,
        "reviews_count": 0
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/services/4/force-delete

Permanently Delete Service

Force delete Service.

Permanently remove the Service record from the system. This action cannot be undone.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string OXmXZECpxH3E3mVODSDKyDk5Qg36PzPPbiDKjuOHNUu9lqVkFESyTvDwbwl8MNvz
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}

Service Forms

POST /api/v1/forms/builder

Create Form with Builder

Create a form with its steps, questions and options.

Creates a form together with its full builder content — steps, questions and options — in a single request. Selectable questions (radio, checkbox, dropdown) must include the options their users can pick from; all other builder fields are optional.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Documentation Builder Form 15880251
steps array [{"title":"Property Info 15880251","questions":[{"label":"Property Type 15880251","options":[{"is_default":true,"option_label":"Villa","option_value":"villa","price_adjustment_type":"fixed","price_adjustment_value":0},{"option_label":"Apartment","option_value":"apartment"}],"field_type":"radio","is_required":true},{"label":"Built Area 15880251","field_type":"number","pricing_type":"per_unit","pricing_unit":"m2","pricing_value":5}]},{"title":"Documents 15880251","questions":[{"label":"Attach Documents 15880251","field_type":"file"}]}]
currency string SAR
base_price integer 120
category_id integer 1

Request Validations Or Notes

Field/Name Examples
name required, string, max 255
base_price optional, number, min 0
currency optional, string, size
category_id required, Closure
steps required, array, min 1
steps[] required, array
steps[].title optional, string, max 255
steps[].step_number optional, integer, min 1
steps[].questions required, array, min 1
steps[].questions.* required, array
steps[].questions[].label required, string, max 255
steps[].questions[].description optional, string
steps[].questions[].placeholder optional, string, max 255
steps[].questions[].field_type required, allowed: short_text, paragraph, number, radio, checkbox, dropdown, date, file
steps[].questions[].tag_id optional, exists tags,id
steps[].questions[].is_required boolean
steps[].questions[].sort_order optional, integer, min 0
steps[].questions[].pricing_type optional, allowed: fixed, percentage, multiplier, per_unit
steps[].questions[].pricing_value optional, number, min 0
steps[].questions[].pricing_unit optional, string, max 50
steps[].questions[].options required if steps.*.questions.*.field_type = radio, array, min 1
steps[].questions[].options.* required, array
steps[].questions[].options[].option_value required, string, max 255
steps[].questions[].options[].option_label required, string, max 255
steps[].questions[].options[].price_adjustment_type optional, allowed: fixed, percentage
steps[].questions[].options[].price_adjustment_value optional, number, min 0
steps[].questions[].options[].sort_order optional, integer, min 0
steps[].questions[].options[].is_default boolean
Success (200 OK)
{
    "data": {
        "id": 17,
        "name": "Documentation Builder Form 15880251",
        "steps": [
            {
                "id": 10,
                "title": "Property Info 15880251",
                "form_id": 17,
                "questions": [
                    {
                        "id": 9,
                        "label": "Property Type 15880251",
                        "tag_id": null,
                        "options": [
                            {
                                "id": 6,
                                "is_default": true,
                                "sort_order": 1,
                                "question_id": 9,
                                "option_label": "Villa",
                                "option_value": "villa",
                                "price_adjustment_type": "fixed",
                                "price_adjustment_value": 0
                            },
                            {
                                "id": 7,
                                "is_default": false,
                                "sort_order": 2,
                                "question_id": 9,
                                "option_label": "Apartment",
                                "option_value": "apartment",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            }
                        ],
                        "step_id": 10,
                        "field_type": "radio",
                        "sort_order": 1,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 10,
                        "label": "Built Area 15880251",
                        "tag_id": null,
                        "options": [],
                        "step_id": 10,
                        "field_type": "number",
                        "sort_order": 2,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": "per_unit",
                        "pricing_unit": "m2",
                        "pricing_value": 5
                    }
                ],
                "step_number": 1
            },
            {
                "id": 11,
                "title": "Documents 15880251",
                "form_id": 17,
                "questions": [
                    {
                        "id": 11,
                        "label": "Attach Documents 15880251",
                        "tag_id": null,
                        "options": [],
                        "step_id": 11,
                        "field_type": "file",
                        "sort_order": 1,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 2
            }
        ],
        "status": null,
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 120,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": null
    },
    "message": "Data inserted successfully.",
    "success": true
}
POST /api/v1/forms/2/steps/append

Add Steps to Existing Form

Edit a form and add new steps to it.

Edits a form and appends the given steps to it, each with its questions and options, in a single request. The steps already in the form are kept untouched and the new ones are numbered straight after them, so the step number must not be sent. Selectable questions (radio, checkbox, dropdown) must include the options their users can pick from.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
steps array [{"title":"Additional Info 15880251","questions":[{"label":"Occupancy Status 15880251","options":[{"is_default":true,"option_label":"Occupied","option_value":"occupied","price_adjustment_type":"percentage","price_adjustment_value":5},{"option_label":"Vacant","option_value":"vacant"}],"field_type":"dropdown","is_required":true},{"label":"Year Built 15880251","field_type":"number"}]}]
base_price integer 175

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
category_id optional, Closure
base_price optional, number, min 0
currency optional, string, size
steps required, array, min 1
steps[] required, array
steps[].title optional, string, max 255
steps[].step_number required, prohibited
steps[].questions required, array, min 1
steps[].questions.* required, array
steps[].questions[].label required, string, max 255
steps[].questions[].description optional, string
steps[].questions[].placeholder optional, string, max 255
steps[].questions[].field_type required, allowed: short_text, paragraph, number, radio, checkbox, dropdown, date, file
steps[].questions[].tag_id optional, exists tags,id
steps[].questions[].is_required boolean
steps[].questions[].sort_order optional, integer, min 0
steps[].questions[].pricing_type optional, allowed: fixed, percentage, multiplier, per_unit
steps[].questions[].pricing_value optional, number, min 0
steps[].questions[].pricing_unit optional, string, max 50
steps[].questions[].options required if steps.*.questions.*.field_type = radio, array, min 1
steps[].questions[].options.* required, array
steps[].questions[].options[].option_value required, string, max 255
steps[].questions[].options[].option_label required, string, max 255
steps[].questions[].options[].price_adjustment_type optional, allowed: fixed, percentage
steps[].questions[].options[].price_adjustment_value optional, number, min 0
steps[].questions[].options[].sort_order optional, integer, min 0
steps[].questions[].options[].is_default boolean
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Documentation Form",
        "steps": [
            {
                "id": 1,
                "title": "Documentation Step",
                "form_id": 2,
                "questions": [
                    {
                        "id": 2,
                        "label": "Documentation Delete Question 5o6Ii7",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 7,
                        "label": "Documentation Delete Question fW3U5E",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 1,
                        "label": "Documentation Question",
                        "tag_id": null,
                        "options": [
                            {
                                "id": 1,
                                "is_default": false,
                                "sort_order": 1,
                                "question_id": 1,
                                "option_label": "Documentation Option",
                                "option_value": "doc_option",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            }
                        ],
                        "step_id": 1,
                        "field_type": "dropdown",
                        "sort_order": 1,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 1
            },
            {
                "id": 2,
                "title": "Documentation Delete Step 9qezwj",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 7,
                "title": "Documentation Delete Step ARwFSX",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 12,
                "title": "Additional Info 15880251",
                "form_id": 2,
                "questions": [
                    {
                        "id": 12,
                        "label": "Occupancy Status 15880251",
                        "tag_id": null,
                        "options": [
                            {
                                "id": 8,
                                "is_default": true,
                                "sort_order": 1,
                                "question_id": 12,
                                "option_label": "Occupied",
                                "option_value": "occupied",
                                "price_adjustment_type": "percentage",
                                "price_adjustment_value": 5
                            },
                            {
                                "id": 9,
                                "is_default": false,
                                "sort_order": 2,
                                "question_id": 12,
                                "option_label": "Vacant",
                                "option_value": "vacant",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            }
                        ],
                        "step_id": 12,
                        "field_type": "dropdown",
                        "sort_order": 1,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 13,
                        "label": "Year Built 15880251",
                        "tag_id": null,
                        "options": [],
                        "step_id": 12,
                        "field_type": "number",
                        "sort_order": 2,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 100
            }
        ],
        "status": "draft",
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 175,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data updated successfully.",
    "success": true
}
PUT /api/v1/forms/16/builder

Save Form Builder

Replace all steps, questions and options of a form.

Replaces the whole builder of a form with the steps, questions and options sent, in a single request. Send the id of a step, question or option to update it, leave the id out to create it, and leave a record out entirely to delete it. Step numbers and question and option orders are taken from the order they are sent in, so they must not be sent. Selectable questions (radio, checkbox, dropdown) must include the options their users can pick from.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
steps array [{"id":8,"title":"Property Info 15880251","questions":[{"id":8,"label":"Property Type 15880251","options":[{"id":5,"is_default":true,"option_label":"Villa","option_value":"villa"},{"option_label":"Apartment","option_value":"apartment"}],"field_type":"radio","is_required":true}]},{"title":"Documents 15880251","questions":[{"label":"Attach Documents 15880251","field_type":"file"}]}]
base_price integer 130

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
category_id optional, Closure
base_price optional, number, min 0
currency optional, string, size
steps required, array, min 1
steps[] required, array
steps[].title optional, string, max 255
steps[].step_number required, prohibited
steps[].questions required, array, min 1
steps[].questions.* required, array
steps[].questions[].label required, string, max 255
steps[].questions[].description optional, string
steps[].questions[].placeholder optional, string, max 255
steps[].questions[].field_type required, allowed: short_text, paragraph, number, radio, checkbox, dropdown, date, file
steps[].questions[].tag_id optional, exists tags,id
steps[].questions[].is_required boolean
steps[].questions[].sort_order optional, integer, min 0
steps[].questions[].pricing_type optional, allowed: fixed, percentage, multiplier, per_unit
steps[].questions[].pricing_value optional, number, min 0
steps[].questions[].pricing_unit optional, string, max 50
steps[].questions[].options required if steps.*.questions.*.field_type = radio, array, min 1
steps[].questions[].options.* required, array
steps[].questions[].options[].option_value required, string, max 255
steps[].questions[].options[].option_label required, string, max 255
steps[].questions[].options[].price_adjustment_type optional, allowed: fixed, percentage
steps[].questions[].options[].price_adjustment_value optional, number, min 0
steps[].questions[].options[].sort_order optional, integer, min 0
steps[].questions[].options[].is_default boolean
steps[].id optional, integer, distinct, Exists
steps[].questions[].id optional, integer, distinct, Exists
steps[].questions[].options[].id optional, integer, distinct, Exists
Success (200 OK)
{
    "data": {
        "id": 16,
        "name": "Documentation Save Builder Form Xwki4V",
        "steps": [
            {
                "id": 8,
                "title": "Property Info 15880251",
                "form_id": 16,
                "questions": [
                    {
                        "id": 8,
                        "label": "Property Type 15880251",
                        "tag_id": null,
                        "options": [
                            {
                                "id": 5,
                                "is_default": true,
                                "sort_order": 1,
                                "question_id": 8,
                                "option_label": "Villa",
                                "option_value": "villa",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            },
                            {
                                "id": 10,
                                "is_default": false,
                                "sort_order": 2,
                                "question_id": 8,
                                "option_label": "Apartment",
                                "option_value": "apartment",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            }
                        ],
                        "step_id": 8,
                        "field_type": "radio",
                        "sort_order": 1,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 1
            },
            {
                "id": 13,
                "title": "Documents 15880251",
                "form_id": 16,
                "questions": [
                    {
                        "id": 14,
                        "label": "Attach Documents 15880251",
                        "tag_id": null,
                        "options": [],
                        "step_id": 13,
                        "field_type": "file",
                        "sort_order": 1,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 2
            }
        ],
        "status": "draft",
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 130,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data updated successfully.",
    "success": true
}
POST /api/v1/forms

Create Form

Create a new Form.

Creates a new Form in the system using the provided data. The request validates the required fields before storing the resource in the database. Upon successful creation, the system returns the newly created record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
name string Documentation Create Form 95637717
currency string SAR
base_price integer 100
category_id integer 1

Request Validations Or Notes

Field/Name Examples
name required, string, max 255
base_price optional, number, min 0
currency optional, string, size
category_id required, Closure
Success (200 OK)
{
    "data": {
        "id": 18,
        "name": "Documentation Create Form 95637717",
        "status": null,
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 100,
        "created_at": "2026-10-19",
        "category_id": 1,
        "description": null
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/forms

Get Form List

Get the Form List of your own valuer company.

Retrieves a list of Form records from the system. The response may support pagination, filtering, and sorting based on the provided request parameters. The list only holds the forms of the valuer company behind the signed in valuer admin, so the forms of any other valuer company are never returned.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "name": "Documentation Form",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 175,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 4,
            "questions_count": 5
        },
        {
            "id": 3,
            "name": "Documentation Secondary Form",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 4,
            "name": "Documentation Trashed Form",
            "status": "archived",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 5,
            "name": "Documentation Create Service Form BKoblz",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 6,
            "name": "Documentation Attach Form zKax8U",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 7,
            "name": "Documentation Delete Form iK2kDp",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 8,
            "name": "Documentation Save Builder Form gL6PPT",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 120,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 2,
            "questions_count": 1
        },
        {
            "id": 13,
            "name": "Documentation Create Service Form nm7klD",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 14,
            "name": "Documentation Attach Form zwLsGu",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 15,
            "name": "Documentation Delete Form cfBzgW",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 16,
            "name": "Documentation Save Builder Form Xwki4V",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 130,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 2,
            "questions_count": 2
        },
        {
            "id": 17,
            "name": "Documentation Builder Form 15880251",
            "status": "published",
            "category": {
                "id": 1,
                "icon": "test-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 120,
            "created_at": "2026-10-19",
            "category_id": 1,
            "description": null,
            "steps_count": 2,
            "questions_count": 3
        },
        {
            "id": 18,
            "name": "Documentation Create Form 95637717",
            "status": "published",
            "category": {
                "id": 1,
                "icon": "test-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 100,
            "created_at": "2026-10-19",
            "category_id": 1,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 13,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
GET /api/v1/forms

List Unassigned Forms

List the forms that are not attached to a service.

Lists the forms that are not attached to any service yet, so a valuer admin can pick one when creating or editing a service. A form backs at most one service, so a form already used by a service — including a removed one — is left out. Paginated like the regular forms list, and scoped to the valuer company behind the signed in admin.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Query Parameters

Field/Name Type Examples
unassigned integer 1
Success (200 OK)
{
    "data": [
        {
            "id": 6,
            "name": "Documentation Attach Form zKax8U",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 7,
            "name": "Documentation Delete Form iK2kDp",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 8,
            "name": "Documentation Save Builder Form gL6PPT",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 120,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 2,
            "questions_count": 1
        },
        {
            "id": 13,
            "name": "Documentation Create Service Form nm7klD",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 14,
            "name": "Documentation Attach Form zwLsGu",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 15,
            "name": "Documentation Delete Form cfBzgW",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 0,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        },
        {
            "id": 16,
            "name": "Documentation Save Builder Form Xwki4V",
            "status": "draft",
            "category": null,
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 130,
            "created_at": "2026-10-19",
            "category_id": null,
            "description": null,
            "steps_count": 2,
            "questions_count": 2
        },
        {
            "id": 17,
            "name": "Documentation Builder Form 15880251",
            "status": "published",
            "category": {
                "id": 1,
                "icon": "test-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 120,
            "created_at": "2026-10-19",
            "category_id": 1,
            "description": null,
            "steps_count": 2,
            "questions_count": 3
        },
        {
            "id": 18,
            "name": "Documentation Create Form 95637717",
            "status": "published",
            "category": {
                "id": 1,
                "icon": "test-icon.png",
                "name": "Main Category",
                "status": true,
                "valuers": 1,
                "translate": {
                    "name": {
                        "ar": "التصنيف الرئيسي",
                        "en": "Main Category"
                    },
                    "description": {
                        "ar": "التصنيف الرئيسي للوسوم",
                        "en": "Main category for tags"
                    }
                },
                "created_at": "2026-10-19",
                "service_no": 1,
                "description": "Main category for tags"
            },
            "currency": "SAR",
            "translate": {
                "name": {
                    "ar": "",
                    "en": ""
                },
                "description": {
                    "ar": null,
                    "en": null
                }
            },
            "base_price": 100,
            "created_at": "2026-10-19",
            "category_id": 1,
            "description": null,
            "steps_count": 0,
            "questions_count": 0
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 9,
        "per_page": 15,
        "last_page": 1,
        "current_page": 1
    }
}
POST /api/v1/forms/2/duplicate

Duplicate Form

Clone a form and its builder contents.

Copies a form together with its translations, steps, questions and options. The copy is saved as a draft.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 19,
        "name": "Documentation Form (Copy)",
        "steps": [
            {
                "id": 1,
                "title": "Documentation Step",
                "form_id": 2,
                "questions": [
                    {
                        "id": 2,
                        "label": "Documentation Delete Question 5o6Ii7",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 7,
                        "label": "Documentation Delete Question fW3U5E",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 1,
                        "label": "Documentation Question",
                        "tag_id": null,
                        "options": [
                            {
                                "id": 1,
                                "is_default": false,
                                "sort_order": 1,
                                "question_id": 1,
                                "option_label": "Documentation Option",
                                "option_value": "doc_option",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            }
                        ],
                        "step_id": 1,
                        "field_type": "dropdown",
                        "sort_order": 1,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 1
            },
            {
                "id": 2,
                "title": "Documentation Delete Step 9qezwj",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 7,
                "title": "Documentation Delete Step ARwFSX",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 12,
                "title": "Additional Info 15880251",
                "form_id": 2,
                "questions": [
                    {
                        "id": 12,
                        "label": "Occupancy Status 15880251",
                        "tag_id": null,
                        "options": [
                            {
                                "id": 8,
                                "is_default": true,
                                "sort_order": 1,
                                "question_id": 12,
                                "option_label": "Occupied",
                                "option_value": "occupied",
                                "price_adjustment_type": "percentage",
                                "price_adjustment_value": 5
                            },
                            {
                                "id": 9,
                                "is_default": false,
                                "sort_order": 2,
                                "question_id": 12,
                                "option_label": "Vacant",
                                "option_value": "vacant",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            }
                        ],
                        "step_id": 12,
                        "field_type": "dropdown",
                        "sort_order": 1,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 13,
                        "label": "Year Built 15880251",
                        "tag_id": null,
                        "options": [],
                        "step_id": 12,
                        "field_type": "number",
                        "sort_order": 2,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 100
            }
        ],
        "status": "draft",
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 175,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data inserted successfully.",
    "success": true
}
POST /api/v1/forms/2/publish

Publish Form

Publish a form.

Marks the form as published so it can be used by services.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Documentation Form",
        "status": "published",
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 175,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data updated successfully.",
    "success": true
}
POST /api/v1/forms/2/archive

Archive Form

Archive a form.

Marks the form as archived. Archived forms stay visible but are no longer published.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string JJ/5/jUEFB7Wwuz5usJdmAKskqTfY/uiOjypWxZNwPH1F4CdpovOL760l1A5IyJ+
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Documentation Form",
        "status": "archived",
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 175,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data updated successfully.",
    "success": true
}
GET /api/v1/forms/2/steps

List Form Steps

View the steps of a form.

Lists all steps of a form, ordered by their step number.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7+EmION2KePB5QMaHp8iAxsZOifdSuOoINDE2nCh0pK794Ns5ZV30IyK1dVa27f9
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "title": "Documentation Step",
            "form_id": 2,
            "step_number": 1
        },
        {
            "id": 2,
            "title": "Documentation Delete Step 9qezwj",
            "form_id": 2,
            "step_number": 99
        },
        {
            "id": 7,
            "title": "Documentation Delete Step ARwFSX",
            "form_id": 2,
            "step_number": 99
        },
        {
            "id": 18,
            "title": "Documentation Delete Step evatQQ",
            "form_id": 2,
            "step_number": 99
        },
        {
            "id": 12,
            "title": "Additional Info 15880251",
            "form_id": 2,
            "step_number": 100
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
POST /api/v1/forms/2/steps

Add Step to Form

Add a step to the form builder.

Adds a new step to a form. The step holds the questions the user must answer.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7+EmION2KePB5QMaHp8iAxsZOifdSuOoINDE2nCh0pK794Ns5ZV30IyK1dVa27f9
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
title string Documentation Create Step 87876417
step_number integer 2

Request Validations Or Notes

Field/Name Examples
title optional, string, max 255
step_number optional, integer, min 1
Success (200 OK)
{
    "data": {
        "id": 21,
        "title": "Documentation Create Step 87876417",
        "form_id": 2,
        "step_number": 2
    },
    "message": "Data inserted successfully.",
    "success": true
}
POST /api/v1/forms/2/steps/reorder

Reorder Form Steps

Reorder the steps of a form.

Updates the order of a form steps by sending the desired step_number for each step.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7+EmION2KePB5QMaHp8iAxsZOifdSuOoINDE2nCh0pK794Ns5ZV30IyK1dVa27f9
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
steps array [{"id":1,"step_number":1}]
Success (200 OK)
{
    "data": [],
    "message": "Data updated successfully.",
    "success": true
}
GET /api/v1/steps/1/questions

List Step Questions

View the questions of a step.

Lists all questions belonging to a step, ordered by their sort order.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7+EmION2KePB5QMaHp8iAxsZOifdSuOoINDE2nCh0pK794Ns5ZV30IyK1dVa27f9
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "label": "Documentation Delete Question 5o6Ii7",
            "tag_id": null,
            "step_id": 1,
            "field_type": "short_text",
            "sort_order": 0,
            "description": null,
            "is_required": false,
            "placeholder": null,
            "pricing_type": null,
            "pricing_unit": null,
            "pricing_value": null
        },
        {
            "id": 7,
            "label": "Documentation Delete Question fW3U5E",
            "tag_id": null,
            "step_id": 1,
            "field_type": "short_text",
            "sort_order": 0,
            "description": null,
            "is_required": false,
            "placeholder": null,
            "pricing_type": null,
            "pricing_unit": null,
            "pricing_value": null
        },
        {
            "id": 20,
            "label": "Documentation Delete Question 59xh5N",
            "tag_id": null,
            "step_id": 1,
            "field_type": "short_text",
            "sort_order": 0,
            "description": null,
            "is_required": false,
            "placeholder": null,
            "pricing_type": null,
            "pricing_unit": null,
            "pricing_value": null
        },
        {
            "id": 1,
            "label": "Documentation Question",
            "tag_id": null,
            "step_id": 1,
            "field_type": "dropdown",
            "sort_order": 1,
            "description": null,
            "is_required": true,
            "placeholder": null,
            "pricing_type": null,
            "pricing_unit": null,
            "pricing_value": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
POST /api/v1/steps/1/questions

Add Question to Step

Add a question to a step.

Adds a new question to a step. The field type drives how the user answers in the mobile app.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7+EmION2KePB5QMaHp8iAxsZOifdSuOoINDE2nCh0pK794Ns5ZV30IyK1dVa27f9
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
label string Documentation Create Question 97293857
field_type string short_text
sort_order integer 2
is_required boolean 1

Request Validations Or Notes

Field/Name Examples
label required, string, max 255
description optional, string
placeholder optional, string, max 255
field_type required, allowed: short_text, paragraph, number, radio, checkbox, dropdown, date, file
tag_id optional, exists tags,id
is_required boolean
sort_order optional, integer, min 0
pricing_type optional, allowed: fixed, percentage, multiplier, per_unit
pricing_value optional, number, min 0
pricing_unit optional, string, max 50
Success (200 OK)
{
    "data": {
        "id": 22,
        "label": "Documentation Create Question 97293857",
        "tag_id": null,
        "step_id": 1,
        "field_type": "short_text",
        "sort_order": 2,
        "description": null,
        "is_required": true,
        "placeholder": null,
        "pricing_type": null,
        "pricing_unit": null,
        "pricing_value": null
    },
    "message": "Data inserted successfully.",
    "success": true
}
POST /api/v1/steps/1/questions/reorder

Reorder Step Questions

Reorder the questions of a step.

Updates the order of a step questions by sending the desired sort_order for each question.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string 7+EmION2KePB5QMaHp8iAxsZOifdSuOoINDE2nCh0pK794Ns5ZV30IyK1dVa27f9
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
questions array [{"id":1,"sort_order":1}]
Success (200 OK)
{
    "data": [],
    "message": "Data updated successfully.",
    "success": true
}
GET /api/v1/questions/1/options

List Question Options

View the options of a question.

Lists all options belonging to a selectable question, ordered by their sort order.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string ApvsJw3MoYuvzyceJHiEb6bJ3txRpy4TBjXTo09VdnYYV6+mJ5BJ4rzMQH8BnCzn
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "is_default": false,
            "sort_order": 1,
            "question_id": 1,
            "option_label": "Documentation Option",
            "option_value": "doc_option",
            "price_adjustment_type": null,
            "price_adjustment_value": 0
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
POST /api/v1/questions/1/options

Add Option to Question

Add an option to a question.

Adds an option to a selectable question (radio, checkbox or dropdown). An optional price adjustment can be applied when the option is selected.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string ApvsJw3MoYuvzyceJHiEb6bJ3txRpy4TBjXTo09VdnYYV6+mJ5BJ4rzMQH8BnCzn
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
sort_order integer 3
option_label string Documentation Option 93343809
option_value string doc_option_47325767
price_adjustment_type string fixed
price_adjustment_value integer 10

Request Validations Or Notes

Field/Name Examples
option_value required, string, max 255
option_label required, string, max 255
price_adjustment_type optional, allowed: fixed, percentage
price_adjustment_value optional, number, min 0
sort_order optional, integer, min 0
is_default boolean
Success (200 OK)
{
    "data": {
        "id": 16,
        "is_default": false,
        "sort_order": 3,
        "question_id": 1,
        "option_label": "Documentation Option 93343809",
        "option_value": "doc_option_47325767",
        "price_adjustment_type": "fixed",
        "price_adjustment_value": 10
    },
    "message": "Data inserted successfully.",
    "success": true
}
GET /api/v1/forms/2

Get Form Details

Retrieve Form details.

Retrieves detailed information about a specific Form using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Z/5NOCjSWPoYQbt8fH+9yw+AXFyKXXjPdhQ6svVnqWkdZcLp3K1DE+xbRSGCxwKC
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Documentation Form",
        "steps": [
            {
                "id": 1,
                "title": "Documentation Step",
                "form_id": 2,
                "questions": [
                    {
                        "id": 2,
                        "label": "Documentation Delete Question 5o6Ii7",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 7,
                        "label": "Documentation Delete Question fW3U5E",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 20,
                        "label": "Documentation Delete Question 59xh5N",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 23,
                        "label": "Documentation Delete Question M8tXjc",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 25,
                        "label": "Documentation Delete Question s4ijOi",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 27,
                        "label": "Documentation Delete Question FpZKaX",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 0,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 1,
                        "label": "Documentation Question",
                        "tag_id": null,
                        "options": [
                            {
                                "id": 1,
                                "is_default": false,
                                "sort_order": 1,
                                "question_id": 1,
                                "option_label": "Documentation Option",
                                "option_value": "doc_option",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            },
                            {
                                "id": 16,
                                "is_default": false,
                                "sort_order": 3,
                                "question_id": 1,
                                "option_label": "Documentation Option 93343809",
                                "option_value": "doc_option_47325767",
                                "price_adjustment_type": "fixed",
                                "price_adjustment_value": 10
                            }
                        ],
                        "step_id": 1,
                        "field_type": "dropdown",
                        "sort_order": 1,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 22,
                        "label": "Documentation Create Question 97293857",
                        "tag_id": null,
                        "options": [],
                        "step_id": 1,
                        "field_type": "short_text",
                        "sort_order": 2,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 1
            },
            {
                "id": 21,
                "title": "Documentation Create Step 87876417",
                "form_id": 2,
                "questions": [],
                "step_number": 2
            },
            {
                "id": 2,
                "title": "Documentation Delete Step 9qezwj",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 7,
                "title": "Documentation Delete Step ARwFSX",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 18,
                "title": "Documentation Delete Step evatQQ",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 22,
                "title": "Documentation Delete Step IVI0lB",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 25,
                "title": "Documentation Delete Step 1DUusK",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 28,
                "title": "Documentation Delete Step ttFnbT",
                "form_id": 2,
                "questions": [],
                "step_number": 99
            },
            {
                "id": 12,
                "title": "Additional Info 15880251",
                "form_id": 2,
                "questions": [
                    {
                        "id": 12,
                        "label": "Occupancy Status 15880251",
                        "tag_id": null,
                        "options": [
                            {
                                "id": 8,
                                "is_default": true,
                                "sort_order": 1,
                                "question_id": 12,
                                "option_label": "Occupied",
                                "option_value": "occupied",
                                "price_adjustment_type": "percentage",
                                "price_adjustment_value": 5
                            },
                            {
                                "id": 9,
                                "is_default": false,
                                "sort_order": 2,
                                "question_id": 12,
                                "option_label": "Vacant",
                                "option_value": "vacant",
                                "price_adjustment_type": null,
                                "price_adjustment_value": 0
                            }
                        ],
                        "step_id": 12,
                        "field_type": "dropdown",
                        "sort_order": 1,
                        "description": null,
                        "is_required": true,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    },
                    {
                        "id": 13,
                        "label": "Year Built 15880251",
                        "tag_id": null,
                        "options": [],
                        "step_id": 12,
                        "field_type": "number",
                        "sort_order": 2,
                        "description": null,
                        "is_required": false,
                        "placeholder": null,
                        "pricing_type": null,
                        "pricing_unit": null,
                        "pricing_value": null
                    }
                ],
                "step_number": 100
            }
        ],
        "status": "draft",
        "category": null,
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 175,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/forms/2

Update Form

Update an existing Form.

Updates the specified Form with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Z/5NOCjSWPoYQbt8fH+9yw+AXFyKXXjPdhQ6svVnqWkdZcLp3K1DE+xbRSGCxwKC
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
currency string SAR
base_price integer 150

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
category_id optional, Closure
base_price optional, number, min 0
currency optional, string, size
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Documentation Form",
        "status": "draft",
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 150,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data updated successfully.",
    "success": true
}
PATCH /api/v1/forms/2

Partially Update Form

Update selected form fields.

Partially updates a form. Only the supplied fields are changed; all omitted form details remain unchanged.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Z/5NOCjSWPoYQbt8fH+9yw+AXFyKXXjPdhQ6svVnqWkdZcLp3K1DE+xbRSGCxwKC
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
base_price integer 175

Request Validations Or Notes

Field/Name Examples
name optional, string, max 255
category_id optional, Closure
base_price optional, number, min 0
currency optional, string, size
Success (200 OK)
{
    "data": {
        "id": 2,
        "name": "Documentation Form",
        "status": "draft",
        "currency": "SAR",
        "translate": {
            "name": {
                "ar": "",
                "en": ""
            },
            "description": {
                "ar": null,
                "en": null
            }
        },
        "base_price": 175,
        "created_at": "2026-10-19",
        "category_id": null,
        "description": null
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/forms/34

Delete Form

Delete a Form.

Deletes the specified Form from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Z/5NOCjSWPoYQbt8fH+9yw+AXFyKXXjPdhQ6svVnqWkdZcLp3K1DE+xbRSGCxwKC
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/steps/1

Get Step Details

Retrieve Step details.

Retrieves detailed information about a specific Step using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string ec8eyoVaaMrYfetrcGUWAvDvVQZTPn9WrBiQjcAODLP+V+3uDgJ1J7F/UA/k6LxW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "title": "Documentation Step",
        "form_id": 2,
        "questions": [
            {
                "id": 2,
                "label": "Documentation Delete Question 5o6Ii7",
                "tag_id": null,
                "options": [],
                "step_id": 1,
                "field_type": "short_text",
                "sort_order": 0,
                "description": null,
                "is_required": false,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            },
            {
                "id": 7,
                "label": "Documentation Delete Question fW3U5E",
                "tag_id": null,
                "options": [],
                "step_id": 1,
                "field_type": "short_text",
                "sort_order": 0,
                "description": null,
                "is_required": false,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            },
            {
                "id": 20,
                "label": "Documentation Delete Question 59xh5N",
                "tag_id": null,
                "options": [],
                "step_id": 1,
                "field_type": "short_text",
                "sort_order": 0,
                "description": null,
                "is_required": false,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            },
            {
                "id": 23,
                "label": "Documentation Delete Question M8tXjc",
                "tag_id": null,
                "options": [],
                "step_id": 1,
                "field_type": "short_text",
                "sort_order": 0,
                "description": null,
                "is_required": false,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            },
            {
                "id": 25,
                "label": "Documentation Delete Question s4ijOi",
                "tag_id": null,
                "options": [],
                "step_id": 1,
                "field_type": "short_text",
                "sort_order": 0,
                "description": null,
                "is_required": false,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            },
            {
                "id": 27,
                "label": "Documentation Delete Question FpZKaX",
                "tag_id": null,
                "options": [],
                "step_id": 1,
                "field_type": "short_text",
                "sort_order": 0,
                "description": null,
                "is_required": false,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            },
            {
                "id": 29,
                "label": "Documentation Delete Question KboKcm",
                "tag_id": null,
                "options": [],
                "step_id": 1,
                "field_type": "short_text",
                "sort_order": 0,
                "description": null,
                "is_required": false,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            },
            {
                "id": 1,
                "label": "Documentation Question",
                "tag_id": null,
                "options": [
                    {
                        "id": 1,
                        "is_default": false,
                        "sort_order": 1,
                        "question_id": 1,
                        "option_label": "Documentation Option",
                        "option_value": "doc_option",
                        "price_adjustment_type": null,
                        "price_adjustment_value": 0
                    },
                    {
                        "id": 16,
                        "is_default": false,
                        "sort_order": 3,
                        "question_id": 1,
                        "option_label": "Documentation Option 93343809",
                        "option_value": "doc_option_47325767",
                        "price_adjustment_type": "fixed",
                        "price_adjustment_value": 10
                    }
                ],
                "step_id": 1,
                "field_type": "dropdown",
                "sort_order": 1,
                "description": null,
                "is_required": true,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            },
            {
                "id": 22,
                "label": "Documentation Create Question 97293857",
                "tag_id": null,
                "options": [],
                "step_id": 1,
                "field_type": "short_text",
                "sort_order": 2,
                "description": null,
                "is_required": true,
                "placeholder": null,
                "pricing_type": null,
                "pricing_unit": null,
                "pricing_value": null
            }
        ],
        "step_number": 1
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/steps/1

Update Step

Update an existing Step.

Updates the specified Step with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string ec8eyoVaaMrYfetrcGUWAvDvVQZTPn9WrBiQjcAODLP+V+3uDgJ1J7F/UA/k6LxW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
title string Documentation Step Updated
step_number integer 1

Request Validations Or Notes

Field/Name Examples
title optional, string, max 255
step_number optional, integer, min 1
Success (200 OK)
{
    "data": {
        "id": 1,
        "title": "Documentation Step Updated",
        "form_id": 2,
        "step_number": 1
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/steps/31

Delete Step

Delete a Step.

Deletes the specified Step from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string ec8eyoVaaMrYfetrcGUWAvDvVQZTPn9WrBiQjcAODLP+V+3uDgJ1J7F/UA/k6LxW
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/questions/1

Get Question Details

Retrieve Question details.

Retrieves detailed information about a specific Question using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string QV+YQPxrX52SaombYdSunTDDpTzKpulMZ/7Hv1YEX9h36pSs8aQZPMxnljUFDBiD
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "tag": null,
        "label": "Documentation Question",
        "tag_id": null,
        "options": [
            {
                "id": 1,
                "is_default": false,
                "sort_order": 1,
                "question_id": 1,
                "option_label": "Documentation Option",
                "option_value": "doc_option",
                "price_adjustment_type": null,
                "price_adjustment_value": 0
            },
            {
                "id": 16,
                "is_default": false,
                "sort_order": 3,
                "question_id": 1,
                "option_label": "Documentation Option 93343809",
                "option_value": "doc_option_47325767",
                "price_adjustment_type": "fixed",
                "price_adjustment_value": 10
            }
        ],
        "step_id": 1,
        "field_type": "dropdown",
        "sort_order": 1,
        "description": null,
        "is_required": true,
        "placeholder": null,
        "pricing_type": null,
        "pricing_unit": null,
        "pricing_value": null
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/questions/1

Update Question

Update an existing Question.

Updates the specified Question with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string QV+YQPxrX52SaombYdSunTDDpTzKpulMZ/7Hv1YEX9h36pSs8aQZPMxnljUFDBiD
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
label string Documentation Question Updated
field_type string short_text
is_required boolean

Request Validations Or Notes

Field/Name Examples
label required, string, max 255
description optional, string
placeholder optional, string, max 255
field_type required, allowed: short_text, paragraph, number, radio, checkbox, dropdown, date, file
tag_id optional, exists tags,id
is_required boolean
sort_order optional, integer, min 0
pricing_type optional, allowed: fixed, percentage, multiplier, per_unit
pricing_value optional, number, min 0
pricing_unit optional, string, max 50
Success (200 OK)
{
    "data": {
        "id": 1,
        "label": "Documentation Question Updated",
        "tag_id": null,
        "step_id": 1,
        "field_type": "short_text",
        "sort_order": 1,
        "description": null,
        "is_required": false,
        "placeholder": null,
        "pricing_type": null,
        "pricing_unit": null,
        "pricing_value": null
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/questions/31

Delete Question

Delete a Question.

Deletes the specified Question from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string QV+YQPxrX52SaombYdSunTDDpTzKpulMZ/7Hv1YEX9h36pSs8aQZPMxnljUFDBiD
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}
GET /api/v1/options/1

Get Option Details

Retrieve Option details.

Retrieves detailed information about a specific Option using its unique identifier.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string nquiwAwxh3UjsWnAzLbVHy41bu+txiEA++W5EhGrvf9HAS/pmg3wmeMbKEPWRrWu
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 1,
        "is_default": false,
        "sort_order": 1,
        "question_id": 1,
        "option_label": "Documentation Option",
        "option_value": "doc_option",
        "price_adjustment_type": null,
        "price_adjustment_value": 0
    },
    "message": "Data retrieved successfully.",
    "success": true
}
PUT /api/v1/options/1

Update Option

Update an existing Option.

Updates the specified Option with the provided data. The system validates the request and applies the changes to the existing record.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string nquiwAwxh3UjsWnAzLbVHy41bu+txiEA++W5EhGrvf9HAS/pmg3wmeMbKEPWRrWu
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
option_label string Documentation Option Updated
option_value string doc_option_updated

Request Validations Or Notes

Field/Name Examples
option_value required, string, max 255
option_label required, string, max 255
price_adjustment_type optional, allowed: fixed, percentage
price_adjustment_value optional, number, min 0
sort_order optional, integer, min 0
is_default boolean
Success (200 OK)
{
    "data": {
        "id": 1,
        "is_default": false,
        "sort_order": 1,
        "question_id": 1,
        "option_label": "Documentation Option Updated",
        "option_value": "doc_option_updated",
        "price_adjustment_type": null,
        "price_adjustment_value": 0
    },
    "message": "Data updated successfully.",
    "success": true
}
DELETE /api/v1/options/1

Delete Option

Delete a Option.

Deletes the specified Option from the system using its unique identifier. Depending on the system configuration, the deletion may be permanent or soft deleted.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string nquiwAwxh3UjsWnAzLbVHy41bu+txiEA++W5EhGrvf9HAS/pmg3wmeMbKEPWRrWu
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": [],
    "message": "Data deleted successfully.",
    "success": true
}

Valuers

GET /api/v1/valuer-admin/valuers/2/profile

Get Managed Valuer Profile

Open a valuer profile.

A valuer admin opens the profile a valuer company publishes: name, logo, cover, rating, review count, location, the about-us section and the services the valuer offers. Unlike the public mobile profile, a suspended valuer is still reachable here so its profile can be corrected.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Xb9iNxgF+lBMmtpypVtH8yCA7FalacvwixI34yHip6SsCikMk1zrPTAZxOn2g3nc
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "logo": "valuers\/profile-co.png",
        "name": "Profile Co",
        "about": "

About Ridge Valuation<\/h2>

Ridge Valuation has served the northern region since 2009 and every report is signed off by a licensed valuer.<\/p>

  • Licensed by the Real Estate Authority<\/li>
  • Residential and commercial expertise<\/li>
  • Reports delivered in Arabic and English<\/li><\/ul>", "cover": "valuers\/profile-co-cover.png", "rating": 4.7, "location": { "city": "Test City", "country": "Documentation country" }, "services": [], "company_name": "Profile Co", "reviews_count": 215, "individual_name": null }, "message": "Data retrieved successfully.", "success": true }

PUT /api/v1/valuer-admin/valuers/2/about

Update Valuer About Us

Save a valuer about us section.

A valuer admin saves the about-us section of a valuer company. It is a long rich text that keeps the formatted markup the mobile app renders, and the mobile app reads the very same section through the valuer public profile.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Xb9iNxgF+lBMmtpypVtH8yCA7FalacvwixI34yHip6SsCikMk1zrPTAZxOn2g3nc
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key

Request Body

Field/Name Type Examples
about string <h2>About Ridge Valuation</h2><p>Ridge Valuation has served the northern region since 2009 and every report is signed off by a licensed valuer.</p><ul><li>Licensed by the Real Estate Authority</li><li>Residential and commercial expertise</li><li>Reports delivered in Arabic and English</li></ul>

Request Validations Or Notes

Field/Name Examples
about present, optional, string
Success (200 OK)
{
    "data": {
        "id": 2,
        "about": "

About Ridge Valuation<\/h2>

Ridge Valuation has served the northern region since 2009 and every report is signed off by a licensed valuer.<\/p>

  • Licensed by the Real Estate Authority<\/li>
  • Residential and commercial expertise<\/li>
  • Reports delivered in Arabic and English<\/li><\/ul>" }, "message": "Data updated successfully.", "success": true }

GET /api/v1/valuer-admin/valuers/2/about

Get Valuer About Us

Read a valuer about us section.

Returns the about-us section of a valuer company exactly as it was saved, markup included, so the admin can check the rich text before it reaches the mobile app.

Headers

Field/Name Type Examples
Accept string application/json
X-Tenant string Xb9iNxgF+lBMmtpypVtH8yCA7FalacvwixI34yHip6SsCikMk1zrPTAZxOn2g3nc
X-API-Token string X-API-Token Key
X-Subdomain string default-tenant
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 2,
        "about": "

About Ridge Valuation<\/h2>

Ridge Valuation has served the northern region since 2009 and every report is signed off by a licensed valuer.<\/p>

  • Licensed by the Real Estate Authority<\/li>
  • Residential and commercial expertise<\/li>
  • Reports delivered in Arabic and English<\/li><\/ul>" }, "message": "Data retrieved successfully.", "success": true }

Register Valuer

Valuer Registration

GET /api/v1/web/check-subdomain

Check Subdomain

Check subdomain availability.

Check whether a requested subdomain is available.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Query Parameters

Field/Name Type Examples
requested_subdomain string brand-new-co-z63jsr
Success (200 OK)
{
    "message": "Subdomain is available",
    "available": true
}
POST /api/v1/web/register

Register Valuer

Register a new valuer.

Register a new valuer provider with company information, required documents, and optionally the workspace address it wants to claim. An OTP is sent to the phone which must be verified before the request is submitted. A company that does not ask for an address is given one built from its company name, and an address another company already holds is refused with the message that it is not available together with three free alternatives built on the same name.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key

Request Body

Field/Name Type Examples
email string ahmadtest+eiiyvx@demo.com
phone string +966553943171
domain string demo-corp-eiiyvx
city_id integer 1
password string password123
country_id integer 1
company_name string Demo Corp eiiyvx
subscription string standard
business_type string corporate
valuation_type array [4]
contact_person_name string Ahmad Test
documents[owner_id] string input_file
password_confirmation string password123
documents[bank_account] string input_file
documents[taqeem_license] string input_file
documents[vat_certificate] string input_file
documents[audited_financials] string input_file
documents[professional_insurance] string input_file
documents[commercial_registration] string input_file

Request Validations Or Notes

Field/Name Examples
business_type required, enum: individual, corporate
subscription optional, enum: premium, standard, basic
company_name RequiredIf, optional, string, max 255, regex
individual_name RequiredIf, optional, string, max 255, regex
contact_person_name required, string, max 255, regex
email required, string, valid email, max 255, unique valuers
phone required, string, max 14, regex, unique valuers
password required, string, min 8, must match its *_confirmation field
country_id required, integer
city_id required, integer
valuation_type required, array, min 1
valuation_type[] required, integer, distinct, Exists
documents required, array
domain required, string, max 100, regex
documents.taqeem_license required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.commercial_registration required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.professional_insurance required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.owner_id required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.audited_financials required, file, file types: pdf, max 2048 KB (upload)
documents.vat_certificate required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.bank_account required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "otp": 1234
    },
    "message": "An OTP has been sent to your phone.",
    "success": true
}
POST /api/v1/web/register

Register Valuer (Individual)

Register a new valuer as an individual.

Register a new valuer provider as an individual instead of a company. The applicant gives their own name where a company gives its company name, together with the same contact details, required documents and optional workspace address. An OTP is sent to the phone which must be verified before the request is submitted, and an applicant that does not ask for an address is given one built from their name.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key

Request Body

Field/Name Type Examples
email string fahad+om6qbm@demo.com
phone string +966528878810
domain string fahad-om6qbm
city_id integer 1
password string password123
country_id integer 1
subscription string standard
business_type string individual
valuation_type array [4]
individual_name string Fahad Alqahtani
contact_person_name string Fahad Alqahtani
documents[owner_id] string input_file
password_confirmation string password123
documents[bank_account] string input_file
documents[taqeem_license] string input_file
documents[vat_certificate] string input_file
documents[audited_financials] string input_file
documents[professional_insurance] string input_file
documents[commercial_registration] string input_file

Request Validations Or Notes

Field/Name Examples
business_type required, enum: individual, corporate
subscription optional, enum: premium, standard, basic
company_name RequiredIf, optional, string, max 255, regex
individual_name RequiredIf, optional, string, max 255, regex
contact_person_name required, string, max 255, regex
email required, string, valid email, max 255, unique valuers
phone required, string, max 14, regex, unique valuers
password required, string, min 8, must match its *_confirmation field
country_id required, integer
city_id required, integer
valuation_type required, array, min 1
valuation_type[] required, integer, distinct, Exists
documents required, array
domain required, string, max 100, regex
documents.taqeem_license required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.commercial_registration required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.professional_insurance required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.owner_id required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.audited_financials required, file, file types: pdf, max 2048 KB (upload)
documents.vat_certificate required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
documents.bank_account required, file, file types: pdf,jpg,jpeg,png, max 2048 KB (upload)
Success (200 OK)
{
    "data": {
        "otp": 1234
    },
    "message": "An OTP has been sent to your phone.",
    "success": true
}
POST /api/v1/web/verify

Verify Valuer OTP (Wrong Code 1)

Verify with an incorrect code (try 1).

An incorrect code is refused and the number of tries left is counted down.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
otp string 0000
phone string +966553943171
Error Response
{
    "errors": {
        "otp": [
            "Invalid OTP. 2 attempts remaining."
        ]
    },
    "message": "Invalid OTP. 2 attempts remaining.",
    "success": false
}
POST /api/v1/web/verify

Verify Valuer OTP (Wrong Code 2)

Verify with an incorrect code (try 2).

An incorrect code is refused and the number of tries left is counted down.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
otp string 0000
phone string +966553943171
Error Response
{
    "errors": {
        "otp": [
            "Invalid OTP. 1 attempts remaining."
        ]
    },
    "message": "Invalid OTP. 1 attempts remaining.",
    "success": false
}
POST /api/v1/web/verify

Verify Valuer OTP (Wrong Code 3)

Verify with an incorrect code (last try).

The third incorrect code exhausts the allowed tries: the active code is invalidated and a new one must be requested before the registration can be completed.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
otp string 0000
phone string +966553943171
Error Response
{
    "errors": {
        "otp": [
            "Maximum verification attempts exceeded. Please request a new code."
        ]
    },
    "message": "Maximum verification attempts exceeded. Please request a new code.",
    "success": false
}
POST /api/v1/web/resend-otp

Resend Valuer OTP

Resend the registration code.

Request a new code while the registration is still pending. A code that was locked by too many incorrect tries is replaced straight away and the tries are reset; otherwise a short cooldown applies before another code can be sent. The pending registration is kept alive for as long as the new code is valid.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
phone string +966553943171
Success (200 OK)
{
    "data": {
        "otp": 1234
    },
    "message": "OTP resent successfully.",
    "success": true
}
POST /api/v1/web/verify

Verify Valuer OTP

Verify registration OTP.

Verify the OTP received on the phone to complete valuer registration. The registration is refused here as well, with the same message and free alternatives, if its workspace address was taken while the code was in flight. The code can be tried three times; after three incorrect tries it is invalidated, and a new one must be requested through resend before the registration can be completed.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key

Request Body

Field/Name Type Examples
otp string 1234
phone string +966553943171

Request Validations Or Notes

Field/Name Examples
phone required, string, max 20
otp required, string, max 6
Success (200 OK)
{
    "data": {
        "id": 6,
        "requested_subdomain": "demo-corp-eiiyvx"
    },
    "message": "Registration completed successfully.",
    "success": true
}

Public API

Authentication

POST /api/v1/web/login

Valuer Login (Foreign Workspace)

Refuse login from a foreign workspace.

A valuer signing in through a workspace it does not belong to is refused with a validation error, so a token is only ever issued on the workspace the account belongs to. Send the workspace subdomain in the X-Subdomain header; when the header is absent the check is skipped and the central login is preserved.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
X-Subdomain string wrong-workspace
Content-Type string application/json

Request Body

Field/Name Type Examples
email string demo.valuer@doctest.com
password string password123
Error Response
{
    "message": "This account does not belong to this workspace.",
    "success": false
}
POST /api/v1/web/login

Valuer Login

Valuer login.

Provider authenticates and receives a portal token.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Request Body

Field/Name Type Examples
email string demo.valuer@doctest.com
password string password123

Request Validations Or Notes

Field/Name Examples
email required, valid email, exists valuers,email
password required, string
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Portal Co",
        "ulid": null,
        "email": "demo.valuer@doctest.com",
        "status": null,
        "city_id": null,
        "tenant_id": 2,
        "country_id": null,
        "created_at": "2026-10-19T07:19:59.000000Z",
        "updated_at": "2026-10-19T07:21:25.000000Z",
        "admin_notes": null,
        "approved_at": null,
        "category_id": null,
        "valuer_type": null,
        "valuer_request": {
            "id": 5,
            "ulid": null,
            "email": "demo.valuer@doctest.com",
            "phone": "+966500000011",
            "avatar": null,
            "status": "approved",
            "city_id": 1,
            "country": "Test Country",
            "documents": [
                {
                    "id": 3,
                    "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/portal_taqeem_license.pdf",
                    "name": "taqeem_license",
                    "ulid": null,
                    "status": "accepted",
                    "admin_note": null,
                    "created_at": "2026-10-19T07:19:57.000000Z",
                    "extracted_value": null,
                    "rejection_reason": null
                }
            ],
            "tenant_id": 2,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "updated_at": "2026-10-19T07:19:59.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": false,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "documents_all_approved": true
        },
        "authorized_contact_name": null
    },
    "token": "110|z85lmXWK8L0nDIJsDrSrRzPZrpYUB09GlQrgMbbW0e33dfe3"
}
GET /api/v1/web/me

Get Authenticated Valuer

Get authenticated valuer.

Return the authenticated provider profile.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "data": {
        "id": 3,
        "name": "Portal Co",
        "ulid": null,
        "email": "demo.valuer@doctest.com",
        "status": null,
        "city_id": null,
        "tenant_id": 2,
        "country_id": null,
        "created_at": "2026-10-19T07:19:59.000000Z",
        "updated_at": "2026-10-19T07:21:25.000000Z",
        "admin_notes": null,
        "approved_at": null,
        "category_id": null,
        "valuer_type": null,
        "valuer_request": {
            "id": 5,
            "ulid": null,
            "email": "demo.valuer@doctest.com",
            "phone": "+966500000011",
            "avatar": null,
            "status": "approved",
            "city_id": 1,
            "country": "Test Country",
            "documents": [
                {
                    "id": 3,
                    "file": "http:\/\/qeei_backend_admin.test\/storage\/valuer_documents\/demo\/portal_taqeem_license.pdf",
                    "name": "taqeem_license",
                    "ulid": null,
                    "status": "accepted",
                    "admin_note": null,
                    "created_at": "2026-10-19T07:19:57.000000Z",
                    "extracted_value": null,
                    "rejection_reason": null
                }
            ],
            "tenant_id": 2,
            "categories": [],
            "country_id": 1,
            "created_at": "2026-10-19T07:19:57.000000Z",
            "updated_at": "2026-10-19T07:19:59.000000Z",
            "admin_notes": null,
            "approved_at": null,
            "cover_image": null,
            "company_name": "Portal Co",
            "subscription": "standard",
            "business_type": "corporate",
            "active_members": 0,
            "can_be_approved": false,
            "individual_name": null,
            "national_address": {
                "city": "Test Country",
                "country": "Test Country"
            },
            "rejection_reason": null,
            "contact_person_name": "Lina Saad",
            "requested_subdomain": "portal-co-doc",
            "documents_all_approved": true
        },
        "authorized_contact_name": null
    }
}
POST /api/v1/web/logout

Valuer Logout

Valuer logout.

Provider revokes the current portal token.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Authorization string Authorization Key
Success (200 OK)
{
    "message": "Logged out successfully"
}

Locations

GET /api/v1/web/locations/country

Get Countries

List countries.

Public list of active countries.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "code": null,
            "type": "country",
            "name_ar": "دولة التوثيق",
            "name_en": "Documentation country",
            "is_active": true,
            "phone_code": null,
            "setting_id": null,
            "phone_length": null
        },
        {
            "id": 3,
            "code": "TC",
            "type": "country",
            "name_ar": "أختبار دولة",
            "name_en": "Test Country",
            "is_active": true,
            "phone_code": "999",
            "setting_id": null,
            "phone_length": 9
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/web/locations/city

Get Cities

List cities.

Public list of active cities.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Success (200 OK)
{
    "data": [
        {
            "id": 2,
            "code": null,
            "type": "country",
            "cities": [
                {
                    "id": 6,
                    "code": null,
                    "type": "city",
                    "name_ar": "مدينة التوثيق",
                    "name_en": "Documentation City",
                    "is_active": true,
                    "phone_code": null,
                    "setting_id": 2,
                    "phone_length": null
                }
            ],
            "name_ar": "دولة التوثيق",
            "name_en": "Documentation country",
            "is_active": true,
            "phone_code": null,
            "setting_id": null,
            "phone_length": null
        },
        {
            "id": 3,
            "code": "TC",
            "type": "country",
            "cities": [],
            "name_ar": "أختبار دولة",
            "name_en": "Test Country",
            "is_active": true,
            "phone_code": "999",
            "setting_id": null,
            "phone_length": 9
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/web/locations/country/2/cities

Get Cities By Country

List cities by country.

Public list of active cities belonging to a specific country.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Query Parameters

Field/Name Type Examples
country integer 2
Success (200 OK)
{
    "data": [
        {
            "id": 6,
            "code": null,
            "type": "city",
            "name_ar": "مدينة التوثيق",
            "name_en": "Documentation City",
            "is_active": true,
            "phone_code": null,
            "setting_id": 2,
            "phone_length": null
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true
}
GET /api/v1/web/locations/city/6/country

Get Country By City

Get country by city.

Public endpoint returning the country a given city belongs to.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json

Query Parameters

Field/Name Type Examples
city integer 6
Success (200 OK)
{
    "data": {
        "id": 2,
        "code": null,
        "type": "country",
        "name_ar": "دولة التوثيق",
        "name_en": "Documentation country",
        "is_active": true,
        "phone_code": null,
        "setting_id": null,
        "phone_length": null
    },
    "message": "Data retrieved successfully.",
    "success": true
}

Categories

GET /api/v1/web/categories

Get Valuer Categories

List valuer categories.

Public list of valuer categories used at registration.

Headers

Field/Name Type Examples
Accept string application/json
X-API-Token string X-API-Token Key
Content-Type string application/json
Success (200 OK)
{
    "data": [
        {
            "id": 1,
            "icon": "test-icon.png",
            "name": "Main Category",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "التصنيف الرئيسي",
                    "en": "Main Category"
                },
                "description": {
                    "ar": "التصنيف الرئيسي للوسوم",
                    "en": "Main category for tags"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Main category for tags"
        },
        {
            "id": 3,
            "icon": "icon-14890347.png",
            "name": "Test Category 14890347",
            "status": true,
            "valuers": 10,
            "translate": {
                "name": {
                    "ar": "تصنيف تجريبي 14890347",
                    "en": "Test Category 14890347"
                },
                "description": {
                    "ar": "وصف تجريبي",
                    "en": "Test description"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Test description"
        },
        {
            "id": 4,
            "icon": "real_estate",
            "name": "Real Estate Appraisal",
            "status": true,
            "valuers": 0,
            "translate": {
                "name": {
                    "ar": "تقييم عقاري",
                    "en": "Real Estate Appraisal"
                },
                "description": {
                    "ar": "تقييم عقاري",
                    "en": "Real Estate Appraisal"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Real Estate Appraisal"
        },
        {
            "id": 5,
            "icon": "profile-co-icon.png",
            "name": "Property",
            "status": true,
            "valuers": 1,
            "translate": {
                "name": {
                    "ar": "عقارات",
                    "en": "Property"
                },
                "description": {
                    "ar": "عقارات",
                    "en": "Property"
                }
            },
            "created_at": "2026-10-19",
            "service_no": 1,
            "description": "Property"
        }
    ],
    "message": "Data retrieved successfully.",
    "success": true,
    "pagination": {
        "total": 4,
        "per_page": 10,
        "last_page": 1,
        "current_page": 1
    }
}