MENU navbar-image

Introduction

Comprehensive API documentation for P-Adviser real estate platform

Welcome to the P-Adviser API documentation. This comprehensive guide provides all the necessary information to interact with our real estate platform's API. You can use our API to access property listings, manage reservations, handle payments, and much more.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Obtain your token by authenticating via the /auth/login endpoint.

AI - Chat Assistant

Chat assistant powered by OpenAI with streaming and contextual responses.

Create a new unique AI session

requires authentication

Generate a new 50-character unique session ID for the AI conversation.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/ai/session/create" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/ai/session/create"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/ai/session/create';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "session_id": "vfu3KshGHDJsl3984nckDkslqpZmfjFkslqoWQdpebdJPsLAmqe"
}
 

Request      

GET api/ai/session/create

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Ask the AI Assistant (Streaming response)

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/ai/chat_stream2" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"userMessage\": \"\\\"What are the best properties in Dubai?\\\"\",
    \"session_id\": \"\\\"asdkj21lkj9aslkdj2192\\\"\"
}"
const url = new URL(
    "http://localhost:8000/api/ai/chat_stream2"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "userMessage": "\"What are the best properties in Dubai?\"",
    "session_id": "\"asdkj21lkj9aslkdj2192\""
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/ai/chat_stream2';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'userMessage' => '"What are the best properties in Dubai?"',
            'session_id' => '"asdkj21lkj9aslkdj2192"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


stream {
  "message": "AI response chunks in real-time..."
}
 

Request      

GET api/ai/chat_stream2

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

userMessage   string   

The user's question or input. Example: "What are the best properties in Dubai?"

session_id   string  optional  

optional The session ID if continuing an existing conversation. Example: "asdkj21lkj9aslkdj2192"

AI - Conversations

APIs for managing AI Conversations

Get all conversation sessions for a user

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/aiconversations/users/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/aiconversations/users/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/aiconversations/users/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Conversations Retreived Successfully",
    "data": []
}
 

Request      

GET api/aiconversations/users/{user_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Create a new conversation

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/aiconversations/}" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 12,
    \"prompt\": \"\\\"Hello AI\\\"\"
}"
const url = new URL(
    "http://localhost:8000/api/aiconversations/}"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 12,
    "prompt": "\"Hello AI\""
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/aiconversations/}';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'user_id' => 12,
            'prompt' => '"Hello AI"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{
    "message": "Conversations added Successfully",
    "data": {}
}
 

Request      

POST api/aiconversations/}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   integer   

ID of the user. Example: 12

prompt   string   

The user message or input. Example: "Hello AI"

Show all conversations of a specific session

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/aiconversations/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/aiconversations/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/aiconversations/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Conversations Retreived Successfully",
    "data": []
}
 

Example response (404):


{
    "message": "No conversations found",
    "data": []
}
 

Request      

GET api/aiconversations/{session_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

session_id   string   

The ID of the session. Example: architecto

id   integer   

Session ID Example: 16

Delete a conversation session

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/aiconversations/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/aiconversations/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/aiconversations/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (404):


{
    "message": "Conversation Not Found"
}
 

Request      

DELETE api/aiconversations/{session_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

session_id   string   

The ID of the session. Example: architecto

id   integer   

Session ID Example: 16

AI - Voice Bot

Start AI VoiceBot Session

requires authentication

This endpoint connects to OpenAI's real-time WebSocket for streaming AI voice/text responses using contextual real estate knowledge in UAE and Egypt.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/ai/voice_stream" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"userMessage\": \"\\\"Tell me about properties in Dubai\\\"\",
    \"session_id\": \"\\\"abc123xyz456\\\"\"
}"
const url = new URL(
    "http://localhost:8000/api/ai/voice_stream"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "userMessage": "\"Tell me about properties in Dubai\"",
    "session_id": "\"abc123xyz456\""
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/ai/voice_stream';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'userMessage' => '"Tell me about properties in Dubai"',
            'session_id' => '"abc123xyz456"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "AI streaming response chunks via SSE"
}
 

Request      

GET api/ai/voice_stream

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

userMessage   string   

The message to send to the AI assistant. Example: "Tell me about properties in Dubai"

session_id   string  optional  

The current session identifier. Example: "abc123xyz456"

Start AI VoiceBot Session

requires authentication

This endpoint connects to OpenAI's real-time WebSocket for streaming AI voice/text responses using contextual real estate knowledge in UAE and Egypt.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/ai/transcribe" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"userMessage\": \"\\\"Tell me about properties in Dubai\\\"\",
    \"session_id\": \"\\\"abc123xyz456\\\"\"
}"
const url = new URL(
    "http://localhost:8000/api/ai/transcribe"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "userMessage": "\"Tell me about properties in Dubai\"",
    "session_id": "\"abc123xyz456\""
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/ai/transcribe';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'userMessage' => '"Tell me about properties in Dubai"',
            'session_id' => '"abc123xyz456"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "AI streaming response chunks via SSE"
}
 

Request      

GET api/ai/transcribe

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

userMessage   string   

The message to send to the AI assistant. Example: "Tell me about properties in Dubai"

session_id   string  optional  

The current session identifier. Example: "abc123xyz456"

Dashboard - Address

Get list of all addresses This endpoint returns all dashboard addresses.

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/addresses" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/addresses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/addresses';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

[
    {
        "address_id": 1,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 1,
        "entity_type": "user",
        "address_line_1": "123 Main St",
        "address_line_2": "Apt 4B",
        "city": "New York",
        "state": "NY",
        "postal_code": "10001",
        "country": "USA",
        "is_primary": 1,
        "phone_number": "1234567890",
        "created_at": "2025-03-24T07:00:44.000000Z",
        "updated_at": "2025-03-24T07:00:44.000000Z",
        "deleted_at": null,
        "area_id": 1,
        "area": {
            "area_id": 1,
            "area_name": "Deira",
            "region": "Old Dubai",
            "latitude": "25.27110000",
            "longitude": "55.30750000",
            "description": "N: Arabian Gulf, S: Dubai Creek, E: Sharjah, W: Al Ras",
            "population": null,
            "major_landmarks": [
                "Spice Souk",
                " Gold Souk"
            ],
            "created_at": null,
            "updated_at": null,
            "deleted_at": null,
            "dld_area_id": 1
        }
    },
    {
        "address_id": 2,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 2,
        "entity_type": "user",
        "address_line_1": "456 Elm St",
        "address_line_2": null,
        "city": "Los Angeles",
        "state": "CA",
        "postal_code": "90001",
        "country": "USA",
        "is_primary": 0,
        "phone_number": "9876543210",
        "created_at": "2025-03-24T07:00:44.000000Z",
        "updated_at": "2025-03-24T07:00:44.000000Z",
        "deleted_at": null,
        "area_id": 2,
        "area": {
            "area_id": 2,
            "area_name": "Bur Dubai",
            "region": "Historical Dubai",
            "latitude": "25.25000000",
            "longitude": "55.30000000",
            "description": "N: Dubai Creek, S: Sheikh Zayed Rd, E: Dubai Creek, W: Jumeirah",
            "population": null,
            "major_landmarks": [
                "Al Fahidi Historical District"
            ],
            "created_at": null,
            "updated_at": null,
            "deleted_at": null,
            "dld_area_id": 2
        }
    },
    {
        "address_id": 3,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 3,
        "entity_type": "project",
        "address_line_1": "789 Oak Ave",
        "address_line_2": "Suite 12",
        "city": "Chicago",
        "state": "IL",
        "postal_code": "60601",
        "country": "USA",
        "is_primary": 1,
        "phone_number": "1122334455",
        "created_at": "2025-03-24T07:00:44.000000Z",
        "updated_at": "2025-03-24T07:00:44.000000Z",
        "deleted_at": null,
        "area_id": 1,
        "area": {
            "area_id": 1,
            "area_name": "Deira",
            "region": "Old Dubai",
            "latitude": "25.27110000",
            "longitude": "55.30750000",
            "description": "N: Arabian Gulf, S: Dubai Creek, E: Sharjah, W: Al Ras",
            "population": null,
            "major_landmarks": [
                "Spice Souk",
                " Gold Souk"
            ],
            "created_at": null,
            "updated_at": null,
            "deleted_at": null,
            "dld_area_id": 1
        }
    },
    {
        "address_id": 4,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 890,
        "entity_type": "project",
        "address_line_1": "2725 Declan Street Suite 083",
        "address_line_2": null,
        "city": "Lake Jesse",
        "state": "Kansas",
        "postal_code": "62883-7402",
        "country": "Bahamas",
        "is_primary": 1,
        "phone_number": "683317633",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 5,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 675,
        "entity_type": "user",
        "address_line_1": "624 Dickinson Unions Suite 682",
        "address_line_2": "Suite 215",
        "city": "Schuppefort",
        "state": "New Hampshire",
        "postal_code": "42801-6305",
        "country": "Swaziland",
        "is_primary": 0,
        "phone_number": "877860515",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 6,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 204,
        "entity_type": "project",
        "address_line_1": "9653 Kolby Island Suite 825",
        "address_line_2": null,
        "city": "Rebekahfurt",
        "state": "Arizona",
        "postal_code": "15230-1739",
        "country": "Botswana",
        "is_primary": 0,
        "phone_number": "863423956",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 7,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 493,
        "entity_type": "user",
        "address_line_1": "98647 Kerluke Cliffs Suite 672",
        "address_line_2": null,
        "city": "West Rogers",
        "state": "Louisiana",
        "postal_code": "75809-6071",
        "country": "Cote d'Ivoire",
        "is_primary": 0,
        "phone_number": "410635718",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 8,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 610,
        "entity_type": "project",
        "address_line_1": "5887 Dickens Pass",
        "address_line_2": "Apt. 344",
        "city": "Lefflerburgh",
        "state": "Hawaii",
        "postal_code": "11470-5902",
        "country": "Norfolk Island",
        "is_primary": 0,
        "phone_number": "469317122",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 9,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 95,
        "entity_type": "project",
        "address_line_1": "9279 Shanahan Lock",
        "address_line_2": null,
        "city": "South Zion",
        "state": "Kansas",
        "postal_code": "64437-0811",
        "country": "Georgia",
        "is_primary": 0,
        "phone_number": "685018221",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 10,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 332,
        "entity_type": "project",
        "address_line_1": "17303 Mills Fort",
        "address_line_2": null,
        "city": "Bodeside",
        "state": "Oregon",
        "postal_code": "93367",
        "country": "Grenada",
        "is_primary": 1,
        "phone_number": "379524321",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 11,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 253,
        "entity_type": "developer",
        "address_line_1": "5441 Dach Tunnel",
        "address_line_2": "Apt. 195",
        "city": "Christiansenborough",
        "state": "Connecticut",
        "postal_code": "12346-3889",
        "country": "Indonesia",
        "is_primary": 1,
        "phone_number": "699594249",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 12,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 933,
        "entity_type": "developer",
        "address_line_1": "2209 Jamison Unions",
        "address_line_2": null,
        "city": "Garrickville",
        "state": "Wyoming",
        "postal_code": "46980-0287",
        "country": "Uruguay",
        "is_primary": 1,
        "phone_number": "546128875",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 13,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 158,
        "entity_type": "developer",
        "address_line_1": "677 Beahan Haven",
        "address_line_2": "Apt. 154",
        "city": "Dietrichside",
        "state": "Rhode Island",
        "postal_code": "63012-9235",
        "country": "Cyprus",
        "is_primary": 1,
        "phone_number": "495825107",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 14,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 998,
        "entity_type": "user",
        "address_line_1": "4011 Zieme Knolls",
        "address_line_2": null,
        "city": "Prohaskafort",
        "state": "New Hampshire",
        "postal_code": "9892",
        "country": "Gabon",
        "is_primary": 0,
        "phone_number": "359577453",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 15,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 277,
        "entity_type": "user",
        "address_line_1": "1971 Nicolas Summit Apt. 244",
        "address_line_2": "Apt. 190",
        "city": "North Ahmedchester",
        "state": "Connecticut",
        "postal_code": "98066",
        "country": "Guernsey",
        "is_primary": 1,
        "phone_number": "920790950",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 16,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 12,
        "entity_type": "project",
        "address_line_1": "615 Courtney Crest Apt. 714",
        "address_line_2": "Suite 447",
        "city": "East Elouise",
        "state": "Colorado",
        "postal_code": "28656",
        "country": "New Zealand",
        "is_primary": 1,
        "phone_number": "373672491",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 17,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 415,
        "entity_type": "developer",
        "address_line_1": "30381 Alene Wall Apt. 821",
        "address_line_2": "Apt. 149",
        "city": "Port Nayeli",
        "state": "Missouri",
        "postal_code": "05581-8190",
        "country": "Gabon",
        "is_primary": 0,
        "phone_number": "525483198",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 18,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 58,
        "entity_type": "user",
        "address_line_1": "966 Gilda Islands Apt. 121",
        "address_line_2": null,
        "city": "Port Claudie",
        "state": "Hawaii",
        "postal_code": "31677",
        "country": "Peru",
        "is_primary": 1,
        "phone_number": "580118292",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 19,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 226,
        "entity_type": "project",
        "address_line_1": "7883 Hayes Tunnel",
        "address_line_2": null,
        "city": "Port Clarabelleburgh",
        "state": "Illinois",
        "postal_code": "28596-0995",
        "country": "Serbia",
        "is_primary": 0,
        "phone_number": "748634083",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 20,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 250,
        "entity_type": "user",
        "address_line_1": "21095 Lebsack Ramp",
        "address_line_2": null,
        "city": "Ilianaside",
        "state": "North Carolina",
        "postal_code": "36679",
        "country": "Syrian Arab Republic",
        "is_primary": 1,
        "phone_number": "277105346",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 21,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 874,
        "entity_type": "project",
        "address_line_1": "426 Dedric Stravenue Suite 332",
        "address_line_2": null,
        "city": "Sawaynchester",
        "state": "Oklahoma",
        "postal_code": "75796-5731",
        "country": "Gibraltar",
        "is_primary": 1,
        "phone_number": "918402265",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 22,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 213,
        "entity_type": "user",
        "address_line_1": "108 Syble Spur",
        "address_line_2": null,
        "city": "Johnberg",
        "state": "District of Columbia",
        "postal_code": "73206",
        "country": "Lithuania",
        "is_primary": 0,
        "phone_number": "784063113",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 23,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 474,
        "entity_type": "developer",
        "address_line_1": "37091 Fay Greens",
        "address_line_2": null,
        "city": "Vadaland",
        "state": "Alabama",
        "postal_code": "4570",
        "country": "Armenia",
        "is_primary": 1,
        "phone_number": "809107293",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 24,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 118,
        "entity_type": "project",
        "address_line_1": "45497 Tanya Hills",
        "address_line_2": "Apt. 343",
        "city": "Port Liliane",
        "state": "Alaska",
        "postal_code": "89020",
        "country": "Croatia",
        "is_primary": 0,
        "phone_number": "511318622",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 25,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 352,
        "entity_type": "project",
        "address_line_1": "37857 Simonis Villages",
        "address_line_2": "Apt. 072",
        "city": "Baileyfurt",
        "state": "Vermont",
        "postal_code": "18438",
        "country": "Myanmar",
        "is_primary": 1,
        "phone_number": "477156823",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 26,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 153,
        "entity_type": "developer",
        "address_line_1": "997 Arielle Terrace Apt. 215",
        "address_line_2": null,
        "city": "Herzogview",
        "state": "Michigan",
        "postal_code": "15661",
        "country": "Saint Vincent and the Grenadines",
        "is_primary": 0,
        "phone_number": "673612865",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 27,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 635,
        "entity_type": "project",
        "address_line_1": "298 Bauch Ports Apt. 460",
        "address_line_2": "Apt. 219",
        "city": "Lake Lauriane",
        "state": "Wyoming",
        "postal_code": "24812-2892",
        "country": "Wallis and Futuna",
        "is_primary": 1,
        "phone_number": "744299448",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 28,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 56,
        "entity_type": "user",
        "address_line_1": "4106 Carolyn Highway Suite 753",
        "address_line_2": "Apt. 094",
        "city": "New Chesley",
        "state": "North Dakota",
        "postal_code": "36097-0904",
        "country": "Korea",
        "is_primary": 1,
        "phone_number": "155839958",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 29,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 895,
        "entity_type": "developer",
        "address_line_1": "6060 Waldo Trafficway Suite 068",
        "address_line_2": "Suite 574",
        "city": "South Haroldberg",
        "state": "North Dakota",
        "postal_code": "83399",
        "country": "South Africa",
        "is_primary": 1,
        "phone_number": "763458080",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 30,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 961,
        "entity_type": "project",
        "address_line_1": "89618 Judy Unions Suite 882",
        "address_line_2": null,
        "city": "West Bennieberg",
        "state": "Florida",
        "postal_code": "05550-8182",
        "country": "Ecuador",
        "is_primary": 1,
        "phone_number": "815586209",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 31,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 840,
        "entity_type": "developer",
        "address_line_1": "47903 Oberbrunner Isle",
        "address_line_2": null,
        "city": "Port Rosellaside",
        "state": "District of Columbia",
        "postal_code": "74036",
        "country": "Madagascar",
        "is_primary": 0,
        "phone_number": "761339634",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 32,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 990,
        "entity_type": "project",
        "address_line_1": "789 Brandyn Dam",
        "address_line_2": null,
        "city": "West Juston",
        "state": "Alabama",
        "postal_code": "03831-7098",
        "country": "South Georgia and the South Sandwich Islands",
        "is_primary": 0,
        "phone_number": "938672789",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 33,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 131,
        "entity_type": "project",
        "address_line_1": "405 Prohaska Circles Apt. 985",
        "address_line_2": null,
        "city": "West Kadinshire",
        "state": "Maine",
        "postal_code": "94841-3776",
        "country": "Iceland",
        "is_primary": 1,
        "phone_number": "197540075",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 34,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 530,
        "entity_type": "user",
        "address_line_1": "702 Johathan Park",
        "address_line_2": null,
        "city": "North Robinborough",
        "state": "Wisconsin",
        "postal_code": "92066-7317",
        "country": "Cape Verde",
        "is_primary": 0,
        "phone_number": "274427712",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 35,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 174,
        "entity_type": "developer",
        "address_line_1": "321 Vandervort Square",
        "address_line_2": "Suite 610",
        "city": "Robinborough",
        "state": "Maryland",
        "postal_code": "64706-5220",
        "country": "Ireland",
        "is_primary": 1,
        "phone_number": "745193259",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 36,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 351,
        "entity_type": "user",
        "address_line_1": "2215 Tillman Key",
        "address_line_2": null,
        "city": "North Mikaylahaven",
        "state": "Alaska",
        "postal_code": "53963",
        "country": "Saint Pierre and Miquelon",
        "is_primary": 1,
        "phone_number": "176177179",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 37,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 578,
        "entity_type": "project",
        "address_line_1": "601 Wayne Points Apt. 173",
        "address_line_2": "Suite 804",
        "city": "Lake Danial",
        "state": "Nevada",
        "postal_code": "04009-8891",
        "country": "Nigeria",
        "is_primary": 1,
        "phone_number": "358820269",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    },
    {
        "address_id": 38,
        "city_id": null,
        "state_id": null,
        "country_id": null,
        "entity_id": 615,
        "entity_type": "user",
        "address_line_1": "81287 Sylvan Stravenue Apt. 380",
        "address_line_2": "Apt. 356",
        "city": "Janiyamouth",
        "state": "Texas",
        "postal_code": "73014",
        "country": "Guyana",
        "is_primary": 1,
        "phone_number": "540846876",
        "created_at": "2025-03-24T07:00:45.000000Z",
        "updated_at": "2025-03-24T07:00:45.000000Z",
        "deleted_at": null,
        "area_id": null,
        "area": null
    }
]
 

Request      

GET api/dashboard/addresses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Create a new address

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/addresses" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"entity_id\": 16,
    \"entity_type\": \"architecto\",
    \"address_line_1\": \"n\",
    \"address_line_2\": \"g\",
    \"city\": \"z\",
    \"state\": \"m\",
    \"postal_code\": \"iyvdljnikhwaykcm\",
    \"country\": \"y\",
    \"is_primary\": true,
    \"phone_number\": \"u\",
    \"area_id\": 16,
    \"name\": \"Home\",
    \"city_id\": 3
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/addresses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "entity_id": 16,
    "entity_type": "architecto",
    "address_line_1": "n",
    "address_line_2": "g",
    "city": "z",
    "state": "m",
    "postal_code": "iyvdljnikhwaykcm",
    "country": "y",
    "is_primary": true,
    "phone_number": "u",
    "area_id": 16,
    "name": "Home",
    "city_id": 3
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/addresses';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'entity_id' => 16,
            'entity_type' => 'architecto',
            'address_line_1' => 'n',
            'address_line_2' => 'g',
            'city' => 'z',
            'state' => 'm',
            'postal_code' => 'iyvdljnikhwaykcm',
            'country' => 'y',
            'is_primary' => true,
            'phone_number' => 'u',
            'area_id' => 16,
            'name' => 'Home',
            'city_id' => 3,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/dashboard/addresses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

entity_id   integer   

Example: 16

entity_type   string   

Example: architecto

address_line_1   string   

Must not be greater than 255 characters. Example: n

address_line_2   string  optional  

Must not be greater than 255 characters. Example: g

city   string   

Must not be greater than 100 characters. Example: z

state   string   

Must not be greater than 100 characters. Example: m

postal_code   string   

Must not be greater than 20 characters. Example: iyvdljnikhwaykcm

country   string   

Must not be greater than 100 characters. Example: y

is_primary   boolean  optional  

Example: true

phone_number   string   

Must not be greater than 15 characters. Example: u

area_id   integer  optional  

The id of an existing record in the areas table. Example: 16

name   string   

The name of the address. Example: Home

city_id   integer   

The ID of the city. Example: 3

Get a single address

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/addresses/1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/addresses/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/addresses/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "address_id": 1,
    "city_id": null,
    "state_id": null,
    "country_id": null,
    "entity_id": 1,
    "entity_type": "user",
    "address_line_1": "123 Main St",
    "address_line_2": "Apt 4B",
    "city": "New York",
    "state": "NY",
    "postal_code": "10001",
    "country": "USA",
    "is_primary": 1,
    "phone_number": "1234567890",
    "created_at": "2025-03-24T07:00:44.000000Z",
    "updated_at": "2025-03-24T07:00:44.000000Z",
    "deleted_at": null,
    "area_id": 1,
    "area": {
        "area_id": 1,
        "area_name": "Deira",
        "region": "Old Dubai",
        "latitude": "25.27110000",
        "longitude": "55.30750000",
        "description": "N: Arabian Gulf, S: Dubai Creek, E: Sharjah, W: Al Ras",
        "population": null,
        "major_landmarks": [
            "Spice Souk",
            " Gold Souk"
        ],
        "created_at": null,
        "updated_at": null,
        "deleted_at": null,
        "dld_area_id": 1
    }
}
 

Request      

GET api/dashboard/addresses/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the address. Example: 1

Update an existing address

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/addresses/1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"address_line_1\": \"b\",
    \"address_line_2\": \"n\",
    \"city\": \"g\",
    \"state\": \"z\",
    \"postal_code\": \"miyvdljnikhwaykc\",
    \"country\": \"m\",
    \"is_primary\": false,
    \"phone_number\": \"y\",
    \"area_id\": 16,
    \"name\": \"Work\",
    \"city_id\": 2
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/addresses/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "address_line_1": "b",
    "address_line_2": "n",
    "city": "g",
    "state": "z",
    "postal_code": "miyvdljnikhwaykc",
    "country": "m",
    "is_primary": false,
    "phone_number": "y",
    "area_id": 16,
    "name": "Work",
    "city_id": 2
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/addresses/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'address_line_1' => 'b',
            'address_line_2' => 'n',
            'city' => 'g',
            'state' => 'z',
            'postal_code' => 'miyvdljnikhwaykc',
            'country' => 'm',
            'is_primary' => false,
            'phone_number' => 'y',
            'area_id' => 16,
            'name' => 'Work',
            'city_id' => 2,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/dashboard/addresses/{id}

PATCH api/dashboard/addresses/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the address. Example: 1

Body Parameters

entity_id   string  optional  
entity_type   string  optional  
address_line_1   string   

Must not be greater than 255 characters. Example: b

address_line_2   string  optional  

Must not be greater than 255 characters. Example: n

city   string   

Must not be greater than 100 characters. Example: g

state   string   

Must not be greater than 100 characters. Example: z

postal_code   string   

Must not be greater than 20 characters. Example: miyvdljnikhwaykc

country   string   

Must not be greater than 100 characters. Example: m

is_primary   boolean  optional  

Example: false

phone_number   string   

Must not be greater than 15 characters. Example: y

area_id   integer  optional  

The id of an existing record in the areas table. Example: 16

name   string  optional  

The new name. Example: Work

city_id   integer  optional  

The ID of the city. Example: 2

Delete an address

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/addresses/1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/addresses/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/addresses/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/dashboard/addresses/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the address. Example: 1

Dashboard - Charts

Get all charts This endpoint retrieves all chart records available for the dashboard.

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/charts" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/charts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/charts';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": "success",
  "message": "Charts retrieved successfully!",
  "data": [
    {
      "id": 1,
      "name": "Revenue Chart",
      "type": "bar",
      "data": {...}
    }
  ]
}
 

Request      

GET api/dashboard/charts

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store multiple charts This endpoint allows you to store multiple charts at once.

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/charts" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"charts\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/charts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "charts": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/charts';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'charts' => [
                'architecto',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{
  "status": "success",
  "message": "Charts created successfully!",
  "data": [...]
}
 

Request      

POST api/dashboard/charts

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

charts   string[]   

List of chart objects to store.

title   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Example: Eius et animi quos velit et.

type_chart   string   

Example: architecto

name   string   

Name of the chart. Example: Revenue Chart

type   string   

Type of the chart (e.g., bar, line). Example: bar

data   string[]   

Chart data object.

Dashboard - Payment Plans

Bulk Create Payment Plans Store multiple payment plans in one request.

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/paymentPlans/bulk/add" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Eius et animi quos velit et.\",
    \"total_cost\": 60,
    \"status\": \"active\",
    \"entity_type\": \"property\",
    \"entities\": [
        {
            \"entity_id\": 16
        }
    ],
    \"plans\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/paymentPlans/bulk/add"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Eius et animi quos velit et.",
    "total_cost": 60,
    "status": "active",
    "entity_type": "property",
    "entities": [
        {
            "entity_id": 16
        }
    ],
    "plans": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/paymentPlans/bulk/add';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'b',
            'description' => 'Eius et animi quos velit et.',
            'total_cost' => 60,
            'status' => 'active',
            'entity_type' => 'property',
            'entities' => [
                [
                    'entity_id' => 16,
                ],
            ],
            'plans' => [
                'architecto',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{
  "status": "success",
  "message": "Payment Plan created successfully",
  "data": [...]
}
 

Request      

POST api/dashboard/paymentPlans/bulk/add

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Example: Eius et animi quos velit et.

total_cost   number  optional  

Must be at least 0. Example: 60

status   string   

Example: active

Must be one of:
  • active
  • inactive
entity_type   string   

Example: property

Must be one of:
  • developer
  • project
  • property
entities   object[]   

Must have at least 1 items.

entity_id   integer   

Example: 16

plans   string[]   

Array of plans to store.

name   string   

Plan name. Example: Installment 24 Months

months   integer   

Number of months. Example: 24

down_payment   integer   

Initial payment. Example: 300000

Dashboard - Project Features

APIs for managing features of a project

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/projects/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/16/features/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/projects/{project_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

project_id   integer   

Example: 16

feature_id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/projects/features" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"project_id\": \"architecto\",
    \"features\": [
        {
            \"feature_id\": \"architecto\",
            \"value\": \"n\",
            \"description\": \"Animi quos velit et fugiat.\"
        }
    ]
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/features"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "project_id": "architecto",
    "features": [
        {
            "feature_id": "architecto",
            "value": "n",
            "description": "Animi quos velit et fugiat."
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/features';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'project_id' => 'architecto',
            'features' => [
                [
                    'feature_id' => 'architecto',
                    'value' => 'n',
                    'description' => 'Animi quos velit et fugiat.',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/projects/features

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

project_id   string   

The project_id of an existing record in the projects table. Example: architecto

features   object[]   
feature_id   string   

The feature_id of an existing record in the features table. Example: architecto

value   string  optional  

Must not be greater than 255 characters. Example: n

description   string  optional  

Must not be greater than 500 characters. Example: Animi quos velit et fugiat.

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/projects/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"value\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "value": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/16/features/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'value' => 'b',
            'description' => 'Et animi quos velit et fugiat.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/projects/{project_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

project_id   integer   

Example: 16

feature_id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

value   string  optional  

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 500 characters. Example: Et animi quos velit et fugiat.

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/projects/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/16/features/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/projects/{project_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

project_id   integer   

Example: 16

feature_id   integer   

Example: 16

Dashboard - Project Media

APIs for managing project media (images, videos, etc.)

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/projects/medias/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/medias/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/medias/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/projects/medias/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/projects/medias" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/medias"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/medias';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/projects/medias

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/projects/medias/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/medias/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/medias/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/projects/medias/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

Example: 16

request   integer   

Example: 16

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/projects/medias/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/medias/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/medias/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/projects/medias/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

Example: 16

Dashboard - Project Milestones

Get All Project Milestones Returns a list of all project milestones.

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/milestones" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/milestones"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/milestones';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": "success",
  "message": "Project Milestones retrieved successfully",
  "data": [
    {
      "id": 1,
      "name": "Foundation",
      "project_id": 2,
      "date": "2025-07-10"
    },
    ...
  ]
}
 

Request      

GET api/dashboard/milestones

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Create Project Milestone

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/milestones" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"project_id\": 2,
    \"milestone_name\": \"n\",
    \"description\": \"Eius et animi quos velit et.\",
    \"status\": \"completed\",
    \"actual_start_date\": \"2025-06-26T01:53:32\",
    \"actual_end_date\": \"2051-07-20\",
    \"planned_start_date\": \"2025-06-26T01:53:32\",
    \"planned_end_date\": \"2051-07-20\",
    \"completion_percentage\": 22,
    \"name\": \"Foundation\",
    \"date\": \"2025-07-10\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/milestones"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "project_id": 2,
    "milestone_name": "n",
    "description": "Eius et animi quos velit et.",
    "status": "completed",
    "actual_start_date": "2025-06-26T01:53:32",
    "actual_end_date": "2051-07-20",
    "planned_start_date": "2025-06-26T01:53:32",
    "planned_end_date": "2051-07-20",
    "completion_percentage": 22,
    "name": "Foundation",
    "date": "2025-07-10"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/milestones';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'project_id' => 2,
            'milestone_name' => 'n',
            'description' => 'Eius et animi quos velit et.',
            'status' => 'completed',
            'actual_start_date' => '2025-06-26T01:53:32',
            'actual_end_date' => '2051-07-20',
            'planned_start_date' => '2025-06-26T01:53:32',
            'planned_end_date' => '2051-07-20',
            'completion_percentage' => 22,
            'name' => 'Foundation',
            'date' => '2025-07-10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{
    "status": "success",
    "message": "Project Milestone created successfully",
    "data": {
        "id": 3,
        "name": "Plumbing",
        "project_id": 2,
        "date": "2025-08-01"
    }
}
 

Request      

POST api/dashboard/milestones

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

project_id   integer   

Related project ID. Example: 2

milestone_name   string   

Must not be greater than 255 characters. Example: n

description   string  optional  

Example: Eius et animi quos velit et.

status   string   

Example: completed

Must be one of:
  • pending
  • in_progress
  • completed
actual_start_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

actual_end_date   string  optional  

Must be a valid date. Must be a date after or equal to actual_start_date. Example: 2051-07-20

planned_start_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

planned_end_date   string  optional  

Must be a valid date. Must be a date after or equal to planned_start_date. Example: 2051-07-20

completion_percentage   number  optional  

Must be at least 0. Must not be greater than 100. Example: 22

name   string   

Name of the milestone. Example: Foundation

date   date   

Milestone date. Example: 2025-07-10

Get Specific Milestone

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/milestones/1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/milestones/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/milestones/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "message": "Project Milestone retrieved successfully",
    "data": {
        "id": 1,
        "name": "Foundation",
        "project_id": 2,
        "date": "2025-07-10"
    }
}
 

Request      

GET api/dashboard/milestones/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the milestone. Example: 1

Update Project Milestone

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/milestones/3" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"project_id\": 2,
    \"milestone_name\": \"b\",
    \"description\": \"Eius et animi quos velit et.\",
    \"status\": \"in_progress\",
    \"actual_start_date\": \"2025-06-26T01:53:32\",
    \"actual_end_date\": \"2051-07-20\",
    \"planned_start_date\": \"2025-06-26T01:53:32\",
    \"planned_end_date\": \"2051-07-20\",
    \"completion_percentage\": 22,
    \"name\": \"Electrical Work\",
    \"date\": \"2025-08-20\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/milestones/3"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "project_id": 2,
    "milestone_name": "b",
    "description": "Eius et animi quos velit et.",
    "status": "in_progress",
    "actual_start_date": "2025-06-26T01:53:32",
    "actual_end_date": "2051-07-20",
    "planned_start_date": "2025-06-26T01:53:32",
    "planned_end_date": "2051-07-20",
    "completion_percentage": 22,
    "name": "Electrical Work",
    "date": "2025-08-20"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/milestones/3';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'project_id' => 2,
            'milestone_name' => 'b',
            'description' => 'Eius et animi quos velit et.',
            'status' => 'in_progress',
            'actual_start_date' => '2025-06-26T01:53:32',
            'actual_end_date' => '2051-07-20',
            'planned_start_date' => '2025-06-26T01:53:32',
            'planned_end_date' => '2051-07-20',
            'completion_percentage' => 22,
            'name' => 'Electrical Work',
            'date' => '2025-08-20',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "message": "Project Milestone updated successfully",
    "data": {
        "id": 3,
        "name": "Electrical Work",
        "project_id": 2,
        "date": "2025-08-20"
    }
}
 

Request      

PUT api/dashboard/milestones/{id}

PATCH api/dashboard/milestones/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

ID of the milestone to update. Example: 3

Body Parameters

project_id   integer   

Related project ID. Example: 2

milestone_name   string  optional  

Must not be greater than 255 characters. Example: b

description   string  optional  

Example: Eius et animi quos velit et.

status   string  optional  

Example: in_progress

Must be one of:
  • pending
  • in_progress
  • completed
actual_start_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

actual_end_date   string  optional  

Must be a valid date. Must be a date after or equal to actual_start_date. Example: 2051-07-20

planned_start_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

planned_end_date   string  optional  

Must be a valid date. Must be a date after or equal to planned_start_date. Example: 2051-07-20

completion_percentage   number  optional  

Must be at least 0. Must not be greater than 100. Example: 22

name   string   

Updated milestone name. Example: Electrical Work

date   date   

Updated date. Example: 2025-08-20

Delete Project Milestone

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/milestones/3" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/milestones/3"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/milestones/3';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "message": "Project Milestone deleted successfully"
}
 

Request      

DELETE api/dashboard/milestones/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the milestone to delete. Example: 3

Dashboard - Projects

Get All Cities (for Projects)

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/cities" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/cities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/cities';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": "success",
  "message": "Cities retrieved successfully",
  "data": [
    {
      "id": 1,
      "name": "Dubai"
    },
    ...
  ]
}
 

Request      

GET api/dashboard/cities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Dashboard - Property

APIs for managing Property

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/properties" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/properties

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/properties/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/properties/{property_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

property_id   string   

The ID of the property. Example: architecto

id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/properties" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"property_name\": \"b\",
    \"property_type_id\": \"architecto\",
    \"property_subtype_id\": \"architecto\",
    \"project_id\": \"architecto\",
    \"plot_size\": 39,
    \"bua_size\": 84,
    \"size\": 12,
    \"bedrooms\": 77,
    \"bathrooms\": 8,
    \"parking_spaces\": 76,
    \"price\": 60,
    \"status\": \"architecto\",
    \"availability_status\": \"available\",
    \"construction_status\": \"ready\",
    \"1\": \"n\",
    \"maid_room\": false,
    \"2\": \"architecto\",
    \"finishing_status\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"4\": \"v\",
    \"5\": \"architecto\",
    \"7\": \"n\",
    \"8\": \"architecto\",
    \"10\": \"n\",
    \"11\": \"architecto\",
    \"13\": \"n\",
    \"14\": \"architecto\",
    \"16\": \"n\",
    \"17\": \"architecto\",
    \"18\": \"semi-finished\",
    \"19\": \"semi-furnished\",
    \"20\": \"freehold\",
    \"21\": \"inactive\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_name": "b",
    "property_type_id": "architecto",
    "property_subtype_id": "architecto",
    "project_id": "architecto",
    "plot_size": 39,
    "bua_size": 84,
    "size": 12,
    "bedrooms": 77,
    "bathrooms": 8,
    "parking_spaces": 76,
    "price": 60,
    "status": "architecto",
    "availability_status": "available",
    "construction_status": "ready",
    "1": "n",
    "maid_room": false,
    "2": "architecto",
    "finishing_status": "architecto",
    "description": "Eius et animi quos velit et.",
    "4": "v",
    "5": "architecto",
    "7": "n",
    "8": "architecto",
    "10": "n",
    "11": "architecto",
    "13": "n",
    "14": "architecto",
    "16": "n",
    "17": "architecto",
    "18": "semi-finished",
    "19": "semi-furnished",
    "20": "freehold",
    "21": "inactive"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'property_name' => 'b',
            'property_type_id' => 'architecto',
            'property_subtype_id' => 'architecto',
            'project_id' => 'architecto',
            'plot_size' => 39,
            'bua_size' => 84,
            'size' => 12,
            'bedrooms' => 77,
            'bathrooms' => 8,
            'parking_spaces' => 76,
            'price' => 60,
            'status' => 'architecto',
            'availability_status' => 'available',
            'construction_status' => 'ready',
            1 => 'n',
            'maid_room' => false,
            'architecto',
            'finishing_status' => 'architecto',
            'description' => 'Eius et animi quos velit et.',
            4 => 'v',
            'architecto',
            7 => 'n',
            'architecto',
            10 => 'n',
            'architecto',
            13 => 'n',
            'architecto',
            16 => 'n',
            'architecto',
            'semi-finished',
            'semi-furnished',
            'freehold',
            'inactive',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/properties

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

property_name   string   

Must not be greater than 255 characters. Example: b

property_type_id   string   

The id of an existing record in the property_types table. Example: architecto

property_subtype_id   string   

The id of an existing record in the property_subtypes table. Example: architecto

project_id   string   

The project_id of an existing record in the projects table. Example: architecto

location_id   string  optional  

The location_id of an existing record in the locations table.

building_id   string  optional  

The building_id of an existing record in the buildings table.

plot_size   number  optional  

Must be at least 0. Example: 39

bua_size   number  optional  

Must be at least 0. Example: 84

size   number   

Must be at least 0. Example: 12

bedrooms   integer  optional  

Must be at least 0. Example: 77

bathrooms   integer  optional  

Must be at least 0. Example: 8

parking_spaces   integer  optional  

Must be at least 0. Example: 76

price   number   

Must be at least 0. Example: 60

status   string   

Example: architecto

0   string  optional  
availability_status   string   

Example: available

Must be one of:
  • available
  • reserved
  • sold
construction_status   string   

Example: ready

Must be one of:
  • off-plan
  • under-construction
  • ready
ownership_type   string  optional  
1   string  optional  

Must not be greater than 100 characters. Example: n

maid_room   boolean  optional  

Example: false

furnish_status   string  optional  
2   string  optional  

Example: architecto

finishing_status   string   

Example: architecto

3   string  optional  
description   string  optional  

Example: Eius et animi quos velit et.

reference_listed   string  optional  
4   string  optional  

Must not be greater than 50 characters. Example: v

5   string  optional  

Example: architecto

6   string  optional  
broker_license   string  optional  
7   string  optional  

Must not be greater than 255 characters. Example: n

8   string  optional  

Example: architecto

9   string  optional  
agent_license   string  optional  
10   string  optional  

Must not be greater than 50 characters. Example: n

11   string  optional  

Example: architecto

12   string  optional  
zone_name   string  optional  
13   string  optional  

Must not be greater than 50 characters. Example: n

14   string  optional  

Example: architecto

15   string  optional  
dld_permit_number   string  optional  
16   string  optional  

Must not be greater than 100 characters. Example: n

17   string  optional  

Example: architecto

18   string  optional  

Example: semi-finished

Must be one of:
  • finished
  • semi-finished
  • unfinished
dld_barcode   string  optional  
19   string  optional  

Example: semi-furnished

Must be one of:
  • furnished
  • semi-furnished
  • unfurnished
20   string  optional  

Example: freehold

Must be one of:
  • freehold
  • leasehold
21   string  optional  

Example: inactive

Must be one of:
  • active
  • inactive

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/properties/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"property_name\": \"b\",
    \"plot_size\": 39,
    \"bua_size\": 84,
    \"size\": 12,
    \"bedrooms\": 77,
    \"bathrooms\": 8,
    \"parking_spaces\": 76,
    \"price\": 60,
    \"status\": \"architecto\",
    \"availability_status\": \"available\",
    \"construction_status\": \"ready\",
    \"1\": \"n\",
    \"maid_room\": false,
    \"2\": \"architecto\",
    \"finishing_status\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"4\": \"v\",
    \"5\": \"architecto\",
    \"7\": \"n\",
    \"8\": \"architecto\",
    \"10\": \"n\",
    \"11\": \"architecto\",
    \"13\": \"n\",
    \"14\": \"architecto\",
    \"16\": \"n\",
    \"17\": \"architecto\",
    \"18\": \"semi-finished\",
    \"19\": \"furnished\",
    \"20\": \"leasehold\",
    \"21\": \"inactive\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_name": "b",
    "plot_size": 39,
    "bua_size": 84,
    "size": 12,
    "bedrooms": 77,
    "bathrooms": 8,
    "parking_spaces": 76,
    "price": 60,
    "status": "architecto",
    "availability_status": "available",
    "construction_status": "ready",
    "1": "n",
    "maid_room": false,
    "2": "architecto",
    "finishing_status": "architecto",
    "description": "Eius et animi quos velit et.",
    "4": "v",
    "5": "architecto",
    "7": "n",
    "8": "architecto",
    "10": "n",
    "11": "architecto",
    "13": "n",
    "14": "architecto",
    "16": "n",
    "17": "architecto",
    "18": "semi-finished",
    "19": "furnished",
    "20": "leasehold",
    "21": "inactive"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'property_name' => 'b',
            'plot_size' => 39,
            'bua_size' => 84,
            'size' => 12,
            'bedrooms' => 77,
            'bathrooms' => 8,
            'parking_spaces' => 76,
            'price' => 60,
            'status' => 'architecto',
            'availability_status' => 'available',
            'construction_status' => 'ready',
            1 => 'n',
            'maid_room' => false,
            'architecto',
            'finishing_status' => 'architecto',
            'description' => 'Eius et animi quos velit et.',
            4 => 'v',
            'architecto',
            7 => 'n',
            'architecto',
            10 => 'n',
            'architecto',
            13 => 'n',
            'architecto',
            16 => 'n',
            'architecto',
            'semi-finished',
            'furnished',
            'leasehold',
            'inactive',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/properties/{property_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

property_id   string   

The ID of the property. Example: architecto

request   integer   

Example: 16

id   integer   

Example: 16

Body Parameters

property_name   string  optional  

Must not be greater than 255 characters. Example: b

property_type_id   string  optional  

The id of an existing record in the property_types table.

property_subtype_id   string  optional  

The id of an existing record in the property_subtypes table.

project_id   string  optional  

The project_id of an existing record in the projects table.

location_id   string  optional  

The location_id of an existing record in the locations table.

building_id   string  optional  

The building_id of an existing record in the buildings table.

plot_size   number  optional  

Must be at least 0. Example: 39

bua_size   number  optional  

Must be at least 0. Example: 84

size   number  optional  

Must be at least 0. Example: 12

bedrooms   integer  optional  

Must be at least 0. Example: 77

bathrooms   integer  optional  

Must be at least 0. Example: 8

parking_spaces   integer  optional  

Must be at least 0. Example: 76

price   number  optional  

Must be at least 0. Example: 60

status   string   

Example: architecto

0   string  optional  
availability_status   string  optional  

Example: available

Must be one of:
  • available
  • reserved
  • sold
construction_status   string  optional  

Example: ready

Must be one of:
  • off-plan
  • under-construction
  • ready
ownership_type   string  optional  
1   string  optional  

Must not be greater than 100 characters. Example: n

maid_room   boolean  optional  

Example: false

furnish_status   string  optional  
2   string  optional  

Example: architecto

finishing_status   string   

Example: architecto

3   string  optional  
description   string  optional  

Example: Eius et animi quos velit et.

reference_listed   string  optional  
4   string  optional  

Must not be greater than 50 characters. Example: v

5   string  optional  

Example: architecto

6   string  optional  
broker_license   string  optional  
7   string  optional  

Must not be greater than 255 characters. Example: n

8   string  optional  

Example: architecto

9   string  optional  
agent_license   string  optional  
10   string  optional  

Must not be greater than 50 characters. Example: n

11   string  optional  

Example: architecto

12   string  optional  
zone_name   string  optional  
13   string  optional  

Must not be greater than 50 characters. Example: n

14   string  optional  

Example: architecto

15   string  optional  
dld_permit_number   string  optional  
16   string  optional  

Must not be greater than 100 characters. Example: n

17   string  optional  

Example: architecto

18   string  optional  

Example: semi-finished

Must be one of:
  • finished
  • semi-finished
  • unfinished
dld_barcode   string  optional  
19   string  optional  

Example: furnished

Must be one of:
  • furnished
  • semi-furnished
  • unfurnished
20   string  optional  

Example: leasehold

Must be one of:
  • freehold
  • leasehold
21   string  optional  

Example: inactive

Must be one of:
  • active
  • inactive

POST api/dashboard/properties/bulk/update

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/properties/bulk/update" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/bulk/update"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/bulk/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/dashboard/properties/bulk/update

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/properties/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/properties/{property_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

property_id   string   

The ID of the property. Example: architecto

id   integer   

Example: 16

Dashboard - PropertyFeature

APIs for managing PropertyFeature

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/properties/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/16/features/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/properties/{property_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

property_id   integer   

Example: 16

feature_id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/properties/features" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"property_id\": \"architecto\",
    \"features\": [
        {
            \"feature_id\": \"architecto\",
            \"value\": \"n\"
        }
    ]
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/features"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_id": "architecto",
    "features": [
        {
            "feature_id": "architecto",
            "value": "n"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/features';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'property_id' => 'architecto',
            'features' => [
                [
                    'feature_id' => 'architecto',
                    'value' => 'n',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/properties/features

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

property_id   string   

The property_id of an existing record in the properties table. Example: architecto

features   object[]   
feature_id   string   

The feature_id of an existing record in the features table. Example: architecto

value   string  optional  

Must not be greater than 255 characters. Example: n

POST api/dashboard/properties/features/bulk/add

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/properties/features/bulk/add" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/features/bulk/add"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/features/bulk/add';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/dashboard/properties/features/bulk/add

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/properties/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"value\": \"b\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "value": "b"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/16/features/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'value' => 'b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/properties/{property_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

property_id   integer   

Example: 16

feature_id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

value   string  optional  

Must not be greater than 255 characters. Example: b

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/properties/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/16/features/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/properties/{property_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

property_id   integer   

Example: 16

feature_id   integer   

Example: 16

Dashboard - PropertyMedia

APIs for managing PropertyMedia

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/properties/medias/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/medias/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/medias/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/properties/medias/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/properties/medias" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/medias"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/medias';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/properties/medias

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/properties/medias/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/medias/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/medias/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/properties/medias/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

Example: 16

request   integer   

Example: 16

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/properties/medias/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/properties/medias/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/properties/medias/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/properties/medias/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

Example: 16

Dashboard - PropertySubtype

APIs for managing PropertySubtype

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/propertySubtypes" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertySubtypes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertySubtypes';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/propertySubtypes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/propertySubtypes" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"property_type_id\": \"architecto\",
    \"name\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"status\": \"inactive\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertySubtypes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_type_id": "architecto",
    "name": "architecto",
    "description": "Eius et animi quos velit et.",
    "status": "inactive"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertySubtypes';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'property_type_id' => 'architecto',
            'name' => 'architecto',
            'description' => 'Eius et animi quos velit et.',
            'status' => 'inactive',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/propertySubtypes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

property_type_id   string   

The id of an existing record in the property_types table. Example: architecto

name   string   

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

status   string   

Example: inactive

Must be one of:
  • active
  • inactive

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/propertySubtypes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertySubtypes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertySubtypes/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/propertySubtypes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/propertySubtypes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"property_type_id\": \"architecto\",
    \"name\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"status\": \"inactive\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertySubtypes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_type_id": "architecto",
    "name": "architecto",
    "description": "Eius et animi quos velit et.",
    "status": "inactive"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertySubtypes/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'property_type_id' => 'architecto',
            'name' => 'architecto',
            'description' => 'Eius et animi quos velit et.',
            'status' => 'inactive',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/propertySubtypes/{id}

PATCH api/dashboard/propertySubtypes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

property_type_id   string   

The id of an existing record in the property_types table. Example: architecto

name   string   

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

status   string   

Example: inactive

Must be one of:
  • active
  • inactive

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/propertySubtypes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertySubtypes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertySubtypes/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/propertySubtypes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Dashboard - PropertyType

APIs for managing PropertyType

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/propertyTypes" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertyTypes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertyTypes';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/propertyTypes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/propertyTypes" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"status\": \"inactive\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertyTypes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "architecto",
    "description": "Eius et animi quos velit et.",
    "status": "inactive"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertyTypes';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'architecto',
            'description' => 'Eius et animi quos velit et.',
            'status' => 'inactive',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/propertyTypes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

name   string   

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

status   string   

Example: inactive

Must be one of:
  • active
  • inactive

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/propertyTypes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertyTypes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertyTypes/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/propertyTypes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/propertyTypes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"status\": \"active\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertyTypes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "architecto",
    "description": "Eius et animi quos velit et.",
    "status": "active"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertyTypes/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'architecto',
            'description' => 'Eius et animi quos velit et.',
            'status' => 'active',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/propertyTypes/{id}

PATCH api/dashboard/propertyTypes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

name   string   

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

status   string   

Example: active

Must be one of:
  • active
  • inactive

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/propertyTypes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/propertyTypes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/propertyTypes/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/propertyTypes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Dashboard - Reservation

APIs for managing Reservation

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/reservations" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/reservations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reservations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/reservations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/reservations" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": \"architecto\",
    \"property_id\": \"architecto\",
    \"reservation_status\": \"PENDING\",
    \"reservation_date\": \"2025-06-26T01:53:32\",
    \"expiry_date\": \"2025-06-26T01:53:32\",
    \"payment_plan_id\": \"architecto\",
    \"reservation_fee\": 4326.41688,
    \"service_fee\": 4326.41688,
    \"vat\": 4326.41688,
    \"comments\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/reservations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": "architecto",
    "property_id": "architecto",
    "reservation_status": "PENDING",
    "reservation_date": "2025-06-26T01:53:32",
    "expiry_date": "2025-06-26T01:53:32",
    "payment_plan_id": "architecto",
    "reservation_fee": 4326.41688,
    "service_fee": 4326.41688,
    "vat": 4326.41688,
    "comments": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reservations';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'user_id' => 'architecto',
            'property_id' => 'architecto',
            'reservation_status' => 'PENDING',
            'reservation_date' => '2025-06-26T01:53:32',
            'expiry_date' => '2025-06-26T01:53:32',
            'payment_plan_id' => 'architecto',
            'reservation_fee' => 4326.41688,
            'service_fee' => 4326.41688,
            'vat' => 4326.41688,
            'comments' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/reservations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

user_id   string   

The user_id of an existing record in the users table. Example: architecto

property_id   string   

The property_id of an existing record in the properties table. Example: architecto

reservation_status   string   

Example: PENDING

Must be one of:
  • PENDING
  • CONFIRMED
  • CANCELLED
  • EXPIRED
reservation_date   string   

Must be a valid date. Example: 2025-06-26T01:53:32

expiry_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

payment_plan_id   string   

The payment_plan_id of an existing record in the payment_plans table. Example: architecto

reservation_fee   number   

Example: 4326.41688

service_fee   number   

Example: 4326.41688

vat   number   

Example: 4326.41688

comments   string  optional  

Example: architecto

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/reservations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/reservations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reservations/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/reservations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/reservations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reservation_status\": \"PENDING\",
    \"reservation_date\": \"2025-06-26T01:53:32\",
    \"expiry_date\": \"2025-06-26T01:53:32\",
    \"reservation_fee\": 4326.41688,
    \"service_fee\": 4326.41688,
    \"vat\": 4326.41688,
    \"comments\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/reservations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reservation_status": "PENDING",
    "reservation_date": "2025-06-26T01:53:32",
    "expiry_date": "2025-06-26T01:53:32",
    "reservation_fee": 4326.41688,
    "service_fee": 4326.41688,
    "vat": 4326.41688,
    "comments": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reservations/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'reservation_status' => 'PENDING',
            'reservation_date' => '2025-06-26T01:53:32',
            'expiry_date' => '2025-06-26T01:53:32',
            'reservation_fee' => 4326.41688,
            'service_fee' => 4326.41688,
            'vat' => 4326.41688,
            'comments' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/reservations/{id}

PATCH api/dashboard/reservations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

reservation_status   string  optional  

Example: PENDING

Must be one of:
  • PENDING
  • CONFIRMED
  • CANCELLED
  • EXPIRED
reservation_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

expiry_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

reservation_fee   number  optional  

Example: 4326.41688

service_fee   number  optional  

Example: 4326.41688

vat   number  optional  

Example: 4326.41688

comments   string  optional  

Example: architecto

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/reservations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/reservations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reservations/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/reservations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Dashboard - Review

APIs for managing Review

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/reviews" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/reviews"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reviews';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/reviews

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/reviews" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": \"architecto\",
    \"rating\": 2,
    \"review_text\": \"architecto\",
    \"is_anonymous\": false,
    \"status\": \"approved\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/reviews"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": "architecto",
    "rating": 2,
    "review_text": "architecto",
    "is_anonymous": false,
    "status": "approved"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reviews';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'user_id' => 'architecto',
            'rating' => 2,
            'review_text' => 'architecto',
            'is_anonymous' => false,
            'status' => 'approved',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/reviews

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

user_id   string   

The user_id of an existing record in the users table. Example: architecto

unit_id   string  optional  

The property_id of an existing record in the properties table.

project_id   string  optional  

The project_id of an existing record in the projects table.

developer_id   string  optional  

The developer_id of an existing record in the developers table.

location_id   string  optional  

The location_id of an existing record in the locations table.

rating   number   

Must be between 1.0 and 5.0. Example: 2

review_text   string  optional  

Example: architecto

is_anonymous   boolean  optional  

Example: false

status   string   

Example: approved

Must be one of:
  • pending
  • approved
  • rejected
  • deleted

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/reviews/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/reviews/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reviews/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/reviews/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/reviews/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rating\": 2,
    \"review_text\": \"architecto\",
    \"is_anonymous\": false,
    \"status\": \"deleted\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/reviews/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "rating": 2,
    "review_text": "architecto",
    "is_anonymous": false,
    "status": "deleted"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reviews/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'rating' => 2,
            'review_text' => 'architecto',
            'is_anonymous' => false,
            'status' => 'deleted',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/reviews/{id}

PATCH api/dashboard/reviews/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

user_id   string  optional  

The id of an existing record in the users table.

unit_id   string  optional  

The property_id of an existing record in the properties table.

project_id   string  optional  

The project_id of an existing record in the projects table.

developer_id   string  optional  

The developer_id of an existing record in the developers table.

location_id   string  optional  

The location_id of an existing record in the locations table.

rating   number   

Must be between 1.0 and 5.0. Example: 2

review_text   string  optional  

Example: architecto

is_anonymous   boolean  optional  

Example: false

status   string   

Example: deleted

Must be one of:
  • pending
  • approved
  • rejected
  • deleted

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/reviews/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/reviews/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/reviews/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/reviews/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Dashboard - Role

APIs for managing Role

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/roles" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/roles';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/roles

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/roles/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/roles/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/roles/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/roles/{role_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   string   

The ID of the role. Example: architecto

id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/roles" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_name\": \"b\",
    \"role_type\": \"developer\",
    \"description\": \"Eius et animi quos velit et.\",
    \"default_permissions\": \"architecto\",
    \"is_active\": true
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_name": "b",
    "role_type": "developer",
    "description": "Eius et animi quos velit et.",
    "default_permissions": "architecto",
    "is_active": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/roles';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'role_name' => 'b',
            'role_type' => 'developer',
            'description' => 'Eius et animi quos velit et.',
            'default_permissions' => 'architecto',
            'is_active' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/roles

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

role_name   string   

Must not be greater than 50 characters. Example: b

role_type   string   

Example: developer

Must be one of:
  • user
  • admin
  • developer
  • agent
  • consultant
description   string  optional  

Example: Eius et animi quos velit et.

default_permissions   string  optional  

Example: architecto

is_active   boolean  optional  

Example: true

permissions   object  optional  

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/roles/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_name\": \"b\",
    \"role_type\": \"user\",
    \"description\": \"Eius et animi quos velit et.\",
    \"default_permissions\": \"architecto\",
    \"is_active\": true
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/roles/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_name": "b",
    "role_type": "user",
    "description": "Eius et animi quos velit et.",
    "default_permissions": "architecto",
    "is_active": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/roles/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'role_name' => 'b',
            'role_type' => 'user',
            'description' => 'Eius et animi quos velit et.',
            'default_permissions' => 'architecto',
            'is_active' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/roles/{role_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   string   

The ID of the role. Example: architecto

request   integer   

Example: 16

id   integer   

Example: 16

Body Parameters

role_name   string   

Must not be greater than 50 characters. Example: b

role_type   string   

Example: user

Must be one of:
  • user
  • admin
  • developer
  • agent
  • consultant
description   string  optional  

Example: Eius et animi quos velit et.

default_permissions   string  optional  

Example: architecto

is_active   boolean  optional  

Example: true

permissions   object  optional  

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/roles/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/roles/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/roles/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/roles/{role_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   string   

The ID of the role. Example: architecto

id   integer   

Example: 16

POST api/dashboard/roles/permissions

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/roles/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/roles/permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/roles/permissions';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/dashboard/roles/permissions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

DELETE api/dashboard/roles/{role_id}/permissions/{permission_id}

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/roles/architecto/permissions/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/roles/architecto/permissions/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/roles/architecto/permissions/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/dashboard/roles/{role_id}/permissions/{permission_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   string   

The ID of the role. Example: architecto

permission_id   string   

The ID of the permission. Example: architecto

Dashboard - User

APIs for managing User

GET api/dashboard/users

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/users" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/users';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "status": "success",
    "message": "Users fetched successfully",
    "data": [
        {
            "user_id": 1,
            "first_name": "Muhammed",
            "last_name": "Salama",
            "email": "devmuhammedsalama@gmail.com",
            "phone_number": "01111570436",
            "profile_picture": null,
            "status": "active",
            "description": "Sample user description",
            "created_at": "2025-06-25T21:53:06.000000Z",
            "updated_at": "2025-06-25T21:53:06.000000Z",
            "deleted_at": null,
            "role_id": 1,
            "verification": "phone",
            "device_token": null,
            "firebase_uid": null,
            "role": {
                "role_id": 1,
                "role_name": "admin",
                "role_type": "admin",
                "description": "Regular admin with limited permissions.",
                "default_permissions": null,
                "is_active": true,
                "created_at": "2025-06-25T21:53:06.000000Z",
                "updated_at": "2025-06-25T21:53:06.000000Z"
            }
        },
        {
            "user_id": 2,
            "first_name": "amira",
            "last_name": "kotb",
            "email": "amirakotb16270@yahoo.com",
            "phone_number": "01099530314",
            "profile_picture": "1742826696_bf7e9322-f502-4c3e-91ae-b2cfdac4af25.jpg",
            "status": "active",
            "description": null,
            "created_at": "2025-06-25T21:53:07.000000Z",
            "updated_at": "2025-06-25T21:53:07.000000Z",
            "deleted_at": null,
            "role_id": 1,
            "verification": "phone",
            "device_token": null,
            "firebase_uid": null,
            "role": {
                "role_id": 1,
                "role_name": "admin",
                "role_type": "admin",
                "description": "Regular admin with limited permissions.",
                "default_permissions": null,
                "is_active": true,
                "created_at": "2025-06-25T21:53:06.000000Z",
                "updated_at": "2025-06-25T21:53:06.000000Z"
            }
        },
        {
            "user_id": 3,
            "first_name": "amir",
            "last_name": "kotb",
            "email": "c@c.co",
            "phone_number": "01099530317",
            "profile_picture": null,
            "status": "banned",
            "description": null,
            "created_at": "2025-06-25T21:53:07.000000Z",
            "updated_at": "2025-06-25T21:53:07.000000Z",
            "deleted_at": null,
            "role_id": 2,
            "verification": "phone",
            "device_token": null,
            "firebase_uid": null,
            "role": {
                "role_id": 2,
                "role_name": "agent",
                "role_type": "agent",
                "description": "Agent user with very limited permissions.",
                "default_permissions": null,
                "is_active": true,
                "created_at": "2025-06-25T21:53:06.000000Z",
                "updated_at": "2025-06-25T21:53:06.000000Z"
            }
        }
    ]
}
 

Request      

GET api/dashboard/users

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/dashboard/users

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/users" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"b\",
    \"last_name\": \"n\",
    \"email\": \"ashly64@example.com\",
    \"phone_number\": \"v\",
    \"password\": \"BNvYgxwmi\\/#iw\\/kX\",
    \"role_id\": \"architecto\",
    \"0\": \"active\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "b",
    "last_name": "n",
    "email": "ashly64@example.com",
    "phone_number": "v",
    "password": "BNvYgxwmi\/#iw\/kX",
    "role_id": "architecto",
    "0": "active"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/users';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'first_name' => 'b',
            'last_name' => 'n',
            'email' => 'ashly64@example.com',
            'phone_number' => 'v',
            'password' => 'BNvYgxwmi/#iw/kX',
            'role_id' => 'architecto',
            'active',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/dashboard/users

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

first_name   string   

Must not be greater than 50 characters. Example: b

last_name   string   

Must not be greater than 50 characters. Example: n

email   string   

Must be a valid email address. Example: ashly64@example.com

phone_number   string   

Must not be greater than 15 characters. Example: v

password   string   

Must be at least 6 characters. Example: BNvYgxwmi/#iw/kX

role_id   string   

The role_id of an existing record in the roles table. Example: architecto

status   string  optional  
0   string  optional  

Example: active

Must be one of:
  • active
  • inactive
  • banned

GET api/dashboard/users/{id}

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/users/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/users/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/users/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "No query results for model [App\\Models\\User\\User] architecto"
}
 

Request      

GET api/dashboard/users/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the user. Example: architecto

PUT api/dashboard/users/{id}

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/users/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/users/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/users/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/dashboard/users/{id}

PATCH api/dashboard/users/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the user. Example: architecto

DELETE api/dashboard/users/{id}

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/users/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/users/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/users/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/dashboard/users/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the user. Example: architecto

General Endpoints

POST api/auth/login

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/login" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/auth/login"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/login';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/login

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/auth/register

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/register" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/auth/register"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/register';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/register

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

public function SendRestLinkEmail(Request $request) { $request->validate([ 'email' => 'required|email', ]);

requires authentication

if (!$request->email) { return $this->sendResponse(false, 'You must enter email ', [], 400); return $this->sendErrorResponse('You must enter email ', [], 400); }

$key = Str::lower('forgot-password|' . $request->email); if (RateLimiter::tooManyAttempts($key, 3)) { return $this->sendResponse(false, 'Too many attempts. Please try again later.', [], 429); return $this->sendErrorResponse('Too many attempts. Please try again later.', [], 429); }

RateLimiter::hit($key, 60);

$user = User::where('email', $request->email)->first();

if (!$user) { return $this->sendErrorResponse('User not found', [], 404); }

if ($user->user_provider) { if ($user->status !== 'active') { return $this->sendErrorResponse('Social account is not active', [], 403); } } else { if (!$user->email || $user->status !== 'active') { return $this->sendResponse(false, 'Email is not verified or account not active', [], 403); return $this->sendErrorResponse('Email is not verified or account not active', [], 403); } }

if ($user->email) { $otp = rand(100000, 999999); DB::table('password_reset_tokens')->updateOrInsert( ['email' => $user->email], ['otp' => $otp, 'created_at' => now()] );

Mail::to($user->email)->send(new ResetPasswordMail($otp));

return $this->sendResponse(true, 'Your OTP has been sent to your email', [], 200); }

return $this->sendErrorResponse(false, 'No valid email found', [], 400); }

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/forget-password" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\"
}"
const url = new URL(
    "http://localhost:8000/api/auth/forget-password"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/forget-password';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'gbailey@example.net',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/forget-password

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

Must be a valid email address. Example: gbailey@example.net

POST api/auth/reset-password

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/reset-password" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reset_token\": \"architecto\",
    \"password\": \"]|{+-0pBNvYg\",
    \"email\": \"aschuster@example.com\",
    \"phone_number\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/auth/reset-password"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reset_token": "architecto",
    "password": "]|{+-0pBNvYg",
    "email": "aschuster@example.com",
    "phone_number": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/reset-password';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'reset_token' => 'architecto',
            'password' => ']|{+-0pBNvYg',
            'email' => 'aschuster@example.com',
            'phone_number' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/reset-password

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

reset_token   string   

Example: architecto

password   string   

Must be at least 6 characters. Example: ]|{+-0pBNvYg

email   string  optional  

Must be a valid email address. Example: aschuster@example.com

phone_number   string  optional  

Example: architecto

POST api/auth/verify-token

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/verify-token" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/auth/verify-token"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/verify-token';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/verify-token

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/auth/verify-exist-user

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/verify-exist-user" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"phone_number\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/auth/verify-exist-user"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "phone_number": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/verify-exist-user';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'gbailey@example.net',
            'phone_number' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/verify-exist-user

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

Must be a valid email address. Example: gbailey@example.net

phone_number   string   

Example: architecto

POST api/auth/send-email-verification-otp

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/send-email-verification-otp" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\"
}"
const url = new URL(
    "http://localhost:8000/api/auth/send-email-verification-otp"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/send-email-verification-otp';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'gbailey@example.net',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/send-email-verification-otp

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

Must be a valid email address. Example: gbailey@example.net

POST api/auth/verify-email-otp

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/verify-email-otp" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"otp\": 4326.41688,
    \"email\": \"rempel.chadrick@example.org\"
}"
const url = new URL(
    "http://localhost:8000/api/auth/verify-email-otp"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "otp": 4326.41688,
    "email": "rempel.chadrick@example.org"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/verify-email-otp';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'otp' => 4326.41688,
            'email' => 'rempel.chadrick@example.org',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/verify-email-otp

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

otp   number   

Example: 4326.41688

email   string   

Must be a valid email address. Example: rempel.chadrick@example.org

POST api/auth/resend-email-otp

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/resend-email-otp" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/auth/resend-email-otp"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/resend-email-otp';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/resend-email-otp

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/auth/social

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/social" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"provider_name\": \"facebook\"
}"
const url = new URL(
    "http://localhost:8000/api/auth/social"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "provider_name": "facebook"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/social';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'provider_name' => 'facebook',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/social

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

provider_name   string   

Example: facebook

Must be one of:
  • google
  • apple
  • facebook

POST api/auth/verify

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/verify" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/auth/verify"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/verify';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/verify

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/auth/logout

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/auth/logout" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/auth/logout"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/logout';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/logout

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/auth/profile

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/auth/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/auth/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/auth/profile';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/auth/profile

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/refresh

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/refresh" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/refresh"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/refresh';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/refresh

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/user

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/user" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "first_name=b"\
    --form "last_name=n"\
    --form "phone_number=gzmiyvdljnikhway"\
    --form "password=#iw/kXaz<m5L[)~=NG"\
    --form "status=inactive"\
    --form "description=Eius et animi quos velit et."\
    --form "profile_picture=@/tmp/phpjfobve16566pctY7H3b" 
const url = new URL(
    "http://localhost:8000/api/user"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('first_name', 'b');
body.append('last_name', 'n');
body.append('phone_number', 'gzmiyvdljnikhway');
body.append('password', '#iw/kXaz<m5L[)~=NG');
body.append('status', 'inactive');
body.append('description', 'Eius et animi quos velit et.');
body.append('profile_picture', document.querySelector('input[name="profile_picture"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/user';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'first_name',
                'contents' => 'b'
            ],
            [
                'name' => 'last_name',
                'contents' => 'n'
            ],
            [
                'name' => 'phone_number',
                'contents' => 'gzmiyvdljnikhway'
            ],
            [
                'name' => 'password',
                'contents' => '#iw/kXaz<m5L[)~=NG'
            ],
            [
                'name' => 'status',
                'contents' => 'inactive'
            ],
            [
                'name' => 'description',
                'contents' => 'Eius et animi quos velit et.'
            ],
            [
                'name' => 'profile_picture',
                'contents' => fopen('/tmp/phpjfobve16566pctY7H3b', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/user

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

first_name   string  optional  

Must not be greater than 255 characters. Example: b

last_name   string  optional  

Must not be greater than 255 characters. Example: n

email   string  optional  
phone_number   string  optional  

Must match the regex /^+?[1-9]\d{1,14}$/. Must not be greater than 20 characters. Example: gzmiyvdljnikhway

password   string  optional  

Must be at least 6 characters. Example: #iw/kXaz<m5L[)~=NG

profile_picture   file  optional  

Must be an image. Must not be greater than 2048 kilobytes. Example: /tmp/phpjfobve16566pctY7H3b

status   string  optional  

Example: inactive

Must be one of:
  • active
  • inactive
  • suspended
description   string  optional  

Example: Eius et animi quos velit et.

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/locations" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/locations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/locations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/locations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/locations" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"location_id\": 16,
    \"google_map_link\": \"n\",
    \"north_side\": \"g\",
    \"south_side\": \"z\",
    \"east_side\": \"m\",
    \"west_side\": \"i\",
    \"landmark\": \"y\",
    \"description\": \"Eius et animi quos velit et.\",
    \"latitude\": -89,
    \"longitude\": -179,
    \"area_id\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/locations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "location_id": 16,
    "google_map_link": "n",
    "north_side": "g",
    "south_side": "z",
    "east_side": "m",
    "west_side": "i",
    "landmark": "y",
    "description": "Eius et animi quos velit et.",
    "latitude": -89,
    "longitude": -179,
    "area_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/locations';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'location_id' => 16,
            'google_map_link' => 'n',
            'north_side' => 'g',
            'south_side' => 'z',
            'east_side' => 'm',
            'west_side' => 'i',
            'landmark' => 'y',
            'description' => 'Eius et animi quos velit et.',
            'latitude' => -89,
            'longitude' => -179,
            'area_id' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/locations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

location_id   integer  optional  

The location_id of an existing record in the locations table. Example: 16

google_map_link   string  optional  

Must be a valid URL. Must not be greater than 2048 characters. Example: n

north_side   string  optional  

Must not be greater than 255 characters. Example: g

south_side   string  optional  

Must not be greater than 255 characters. Example: z

east_side   string  optional  

Must not be greater than 255 characters. Example: m

west_side   string  optional  

Must not be greater than 255 characters. Example: i

landmark   string  optional  

Must not be greater than 255 characters. Example: y

description   string  optional  

Example: Eius et animi quos velit et.

latitude   number  optional  

Must be between -90 and 90. Example: -89

longitude   number  optional  

Must be between -180 and 180. Example: -179

area_id   string   

The area_id of an existing record in the areas table. Example: architecto

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/locations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/locations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/locations/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/locations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/locations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"location_id\": 16,
    \"google_map_link\": \"n\",
    \"north_side\": \"g\",
    \"south_side\": \"z\",
    \"east_side\": \"m\",
    \"west_side\": \"i\",
    \"landmark\": \"y\",
    \"description\": \"Eius et animi quos velit et.\",
    \"latitude\": -89,
    \"longitude\": -179,
    \"area_id\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/locations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "location_id": 16,
    "google_map_link": "n",
    "north_side": "g",
    "south_side": "z",
    "east_side": "m",
    "west_side": "i",
    "landmark": "y",
    "description": "Eius et animi quos velit et.",
    "latitude": -89,
    "longitude": -179,
    "area_id": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/locations/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'location_id' => 16,
            'google_map_link' => 'n',
            'north_side' => 'g',
            'south_side' => 'z',
            'east_side' => 'm',
            'west_side' => 'i',
            'landmark' => 'y',
            'description' => 'Eius et animi quos velit et.',
            'latitude' => -89,
            'longitude' => -179,
            'area_id' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/locations/{id}

PATCH api/dashboard/locations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

location_id   integer  optional  

The location_id of an existing record in the locations table. Example: 16

google_map_link   string  optional  

Must be a valid URL. Must not be greater than 2048 characters. Example: n

north_side   string  optional  

Must not be greater than 255 characters. Example: g

south_side   string  optional  

Must not be greater than 255 characters. Example: z

east_side   string  optional  

Must not be greater than 255 characters. Example: m

west_side   string  optional  

Must not be greater than 255 characters. Example: i

landmark   string  optional  

Must not be greater than 255 characters. Example: y

description   string  optional  

Example: Eius et animi quos velit et.

latitude   number  optional  

Must be between -90 and 90. Example: -89

longitude   number  optional  

Must be between -180 and 180. Example: -179

area_id   string   

The area_id of an existing record in the areas table. Example: architecto

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/locations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/locations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/locations/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/locations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/features" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/features"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/features';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/features

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/features" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"feature_name\": \"b\",
    \"is_amenity\": false,
    \"icons\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/features"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "feature_name": "b",
    "is_amenity": false,
    "icons": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/features';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'feature_name' => 'b',
            'is_amenity' => false,
            'icons' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/features

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

feature_name   string   

Must not be greater than 500 characters. Example: b

is_amenity   boolean  optional  

Example: false

icons   string  optional  

Example: architecto

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/features/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/features/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"feature_name\": \"b\",
    \"is_amenity\": true,
    \"icons\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "feature_name": "b",
    "is_amenity": true,
    "icons": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/features/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'feature_name' => 'b',
            'is_amenity' => true,
            'icons' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/features/{id}

PATCH api/dashboard/features/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

feature_name   string   

Must not be greater than 500 characters. Example: b

is_amenity   boolean  optional  

Example: true

icons   string  optional  

Example: architecto

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/features/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/features/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/dldAreas" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/dldAreas"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/dldAreas';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/dldAreas

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/dldAreas" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"dld_area_name\": \"architecto\",
    \"latitude\": 4326.41688,
    \"longitude\": 4326.41688,
    \"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/dldAreas"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "dld_area_name": "architecto",
    "latitude": 4326.41688,
    "longitude": 4326.41688,
    "description": "Eius et animi quos velit et."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/dldAreas';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'dld_area_name' => 'architecto',
            'latitude' => 4326.41688,
            'longitude' => 4326.41688,
            'description' => 'Eius et animi quos velit et.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/dldAreas

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

dld_area_name   string   

Example: architecto

latitude   number  optional  

Example: 4326.41688

longitude   number  optional  

Example: 4326.41688

description   string  optional  

Example: Eius et animi quos velit et.

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/dldAreas/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/dldAreas/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/dldAreas/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/dldAreas/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/dldAreas/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"dld_area_name\": \"architecto\",
    \"latitude\": 4326.41688,
    \"longitude\": 4326.41688,
    \"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/dldAreas/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "dld_area_name": "architecto",
    "latitude": 4326.41688,
    "longitude": 4326.41688,
    "description": "Eius et animi quos velit et."
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/dldAreas/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'dld_area_name' => 'architecto',
            'latitude' => 4326.41688,
            'longitude' => 4326.41688,
            'description' => 'Eius et animi quos velit et.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/dldAreas/{id}

PATCH api/dashboard/dldAreas/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

dld_area_name   string   

Example: architecto

latitude   number  optional  

Example: 4326.41688

longitude   number  optional  

Example: 4326.41688

description   string  optional  

Example: Eius et animi quos velit et.

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/dldAreas/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/dldAreas/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/dldAreas/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/dldAreas/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/areas" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/areas"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/areas';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/areas

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/areas" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"area_name\": \"b\",
    \"region\": \"n\",
    \"latitude\": 4326.41688,
    \"longitude\": 4326.41688,
    \"description\": \"Eius et animi quos velit et.\",
    \"population\": 16,
    \"dld_area_id\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/areas"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "area_name": "b",
    "region": "n",
    "latitude": 4326.41688,
    "longitude": 4326.41688,
    "description": "Eius et animi quos velit et.",
    "population": 16,
    "dld_area_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/areas';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'area_name' => 'b',
            'region' => 'n',
            'latitude' => 4326.41688,
            'longitude' => 4326.41688,
            'description' => 'Eius et animi quos velit et.',
            'population' => 16,
            'dld_area_id' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/areas

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

area_name   string   

Must not be greater than 255 characters. Example: b

region   string  optional  

Must not be greater than 255 characters. Example: n

latitude   number  optional  

Example: 4326.41688

longitude   number  optional  

Example: 4326.41688

description   string  optional  

Example: Eius et animi quos velit et.

population   integer  optional  

Example: 16

major_landmarks   object  optional  
dld_area_id   string   

The dld_area_id of an existing record in the dld_areas table. Example: architecto

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/areas/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/areas/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/areas/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/areas/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/areas/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"area_name\": \"b\",
    \"region\": \"n\",
    \"latitude\": 4326.41688,
    \"longitude\": 4326.41688,
    \"description\": \"Eius et animi quos velit et.\",
    \"population\": 16,
    \"dld_area_id\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/areas/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "area_name": "b",
    "region": "n",
    "latitude": 4326.41688,
    "longitude": 4326.41688,
    "description": "Eius et animi quos velit et.",
    "population": 16,
    "dld_area_id": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/areas/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'area_name' => 'b',
            'region' => 'n',
            'latitude' => 4326.41688,
            'longitude' => 4326.41688,
            'description' => 'Eius et animi quos velit et.',
            'population' => 16,
            'dld_area_id' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/areas/{id}

PATCH api/dashboard/areas/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

area_name   string   

Must not be greater than 255 characters. Example: b

region   string  optional  

Must not be greater than 255 characters. Example: n

latitude   number  optional  

Example: 4326.41688

longitude   number  optional  

Example: 4326.41688

description   string  optional  

Example: Eius et animi quos velit et.

population   integer  optional  

Example: 16

major_landmarks   object  optional  
dld_area_id   string   

The dld_area_id of an existing record in the dld_areas table. Example: architecto

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/areas/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/areas/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/areas/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/areas/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/buildings" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/buildings"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/buildings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/buildings

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/buildings" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"building_name\": \"b\",
    \"project_id\": \"architecto\",
    \"total_floors\": 16,
    \"total_units\": 16,
    \"construction_status\": \"ready\",
    \"completion_date\": \"2025-06-26T01:53:32\",
    \"description\": \"Eius et animi quos velit et.\",
    \"latitude\": 4326.41688,
    \"longitude\": 4326.41688,
    \"building_type\": \"commercial\",
    \"built_type\": \"compound\",
    \"parking_spaces\": 16
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/buildings"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "building_name": "b",
    "project_id": "architecto",
    "total_floors": 16,
    "total_units": 16,
    "construction_status": "ready",
    "completion_date": "2025-06-26T01:53:32",
    "description": "Eius et animi quos velit et.",
    "latitude": 4326.41688,
    "longitude": 4326.41688,
    "building_type": "commercial",
    "built_type": "compound",
    "parking_spaces": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/buildings';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'building_name' => 'b',
            'project_id' => 'architecto',
            'total_floors' => 16,
            'total_units' => 16,
            'construction_status' => 'ready',
            'completion_date' => '2025-06-26T01:53:32',
            'description' => 'Eius et animi quos velit et.',
            'latitude' => 4326.41688,
            'longitude' => 4326.41688,
            'building_type' => 'commercial',
            'built_type' => 'compound',
            'parking_spaces' => 16,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/buildings

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

building_name   string   

Must not be greater than 255 characters. Example: b

project_id   string   

The project_id of an existing record in the projects table. Example: architecto

location_id   string  optional  

The location_id of an existing record in the locations table.

total_floors   integer  optional  

Example: 16

total_units   integer  optional  

Example: 16

construction_status   string   

Example: ready

Must be one of:
  • off-plan
  • under-construction
  • ready
completion_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

description   string  optional  

Example: Eius et animi quos velit et.

latitude   number  optional  

Example: 4326.41688

longitude   number  optional  

Example: 4326.41688

building_type   string   

Example: commercial

Must be one of:
  • residential
  • commercial
  • mixed-use
built_type   string   

Example: compound

Must be one of:
  • building
  • compound
parking_spaces   integer  optional  

Example: 16

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/buildings/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/buildings/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/buildings/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/buildings/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/buildings/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"building_name\": \"b\",
    \"total_floors\": 16,
    \"total_units\": 16,
    \"construction_status\": \"under-construction\",
    \"completion_date\": \"2025-06-26T01:53:32\",
    \"description\": \"Eius et animi quos velit et.\",
    \"latitude\": 4326.41688,
    \"longitude\": 4326.41688,
    \"building_type\": \"mixed-use\",
    \"built_type\": \"building\",
    \"parking_spaces\": 16
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/buildings/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "building_name": "b",
    "total_floors": 16,
    "total_units": 16,
    "construction_status": "under-construction",
    "completion_date": "2025-06-26T01:53:32",
    "description": "Eius et animi quos velit et.",
    "latitude": 4326.41688,
    "longitude": 4326.41688,
    "building_type": "mixed-use",
    "built_type": "building",
    "parking_spaces": 16
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/buildings/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'building_name' => 'b',
            'total_floors' => 16,
            'total_units' => 16,
            'construction_status' => 'under-construction',
            'completion_date' => '2025-06-26T01:53:32',
            'description' => 'Eius et animi quos velit et.',
            'latitude' => 4326.41688,
            'longitude' => 4326.41688,
            'building_type' => 'mixed-use',
            'built_type' => 'building',
            'parking_spaces' => 16,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/buildings/{id}

PATCH api/dashboard/buildings/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

building_name   string  optional  

Must not be greater than 255 characters. Example: b

project_id   string  optional  

The project_id of an existing record in the projects table.

location_id   string  optional  

The location_id of an existing record in the locations table.

total_floors   integer  optional  

Example: 16

total_units   integer  optional  

Example: 16

construction_status   string  optional  

Example: under-construction

Must be one of:
  • off-plan
  • under-construction
  • ready
completion_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

description   string  optional  

Example: Eius et animi quos velit et.

latitude   number  optional  

Example: 4326.41688

longitude   number  optional  

Example: 4326.41688

building_type   string  optional  

Example: mixed-use

Must be one of:
  • residential
  • commercial
  • mixed-use
built_type   string  optional  

Example: building

Must be one of:
  • building
  • compound
parking_spaces   integer  optional  

Example: 16

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/buildings/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/buildings/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/buildings/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/buildings/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/projects" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/projects

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/projects/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/projects/{project_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

project_id   string   

The ID of the project. Example: architecto

id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/projects" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"project_name\": \"b\",
    \"status\": \"ongoing\",
    \"project_type\": \"mixed-use\",
    \"launch_date\": \"2025-06-26T01:53:32\",
    \"completion_date\": \"2051-07-20\",
    \"developer_id\": \"architecto\",
    \"location\": {
        \"google_map_link\": \"b\",
        \"north_side\": \"n\",
        \"south_side\": \"g\",
        \"east_side\": \"z\",
        \"west_side\": \"m\",
        \"landmark\": \"i\",
        \"description\": \"Eius et animi quos velit et.\",
        \"latitude\": -89,
        \"longitude\": -179
    },
    \"available_units\": \"architecto\",
    \"total_units\": \"architecto\",
    \"price_range\": \"architecto\",
    \"price_range_SQ\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "project_name": "b",
    "status": "ongoing",
    "project_type": "mixed-use",
    "launch_date": "2025-06-26T01:53:32",
    "completion_date": "2051-07-20",
    "developer_id": "architecto",
    "location": {
        "google_map_link": "b",
        "north_side": "n",
        "south_side": "g",
        "east_side": "z",
        "west_side": "m",
        "landmark": "i",
        "description": "Eius et animi quos velit et.",
        "latitude": -89,
        "longitude": -179
    },
    "available_units": "architecto",
    "total_units": "architecto",
    "price_range": "architecto",
    "price_range_SQ": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'project_name' => 'b',
            'status' => 'ongoing',
            'project_type' => 'mixed-use',
            'launch_date' => '2025-06-26T01:53:32',
            'completion_date' => '2051-07-20',
            'developer_id' => 'architecto',
            'location' => [
                'google_map_link' => 'b',
                'north_side' => 'n',
                'south_side' => 'g',
                'east_side' => 'z',
                'west_side' => 'm',
                'landmark' => 'i',
                'description' => 'Eius et animi quos velit et.',
                'latitude' => -89,
                'longitude' => -179,
            ],
            'available_units' => 'architecto',
            'total_units' => 'architecto',
            'price_range' => 'architecto',
            'price_range_SQ' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/projects

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

project_name   string   

Must not be greater than 255 characters. Example: b

status   string   

Example: ongoing

Must be one of:
  • ongoing
  • completed
  • upcoming
project_type   string   

Example: mixed-use

Must be one of:
  • residential
  • commercial
  • mixed-use
launch_date   string   

Must be a valid date. Example: 2025-06-26T01:53:32

completion_date   string  optional  

Must be a valid date. Must be a date after or equal to launch_date. Example: 2051-07-20

milestone_id   string  optional  

The milestone_id of an existing record in the project_milestones table.

developer_id   string   

The developer_id of an existing record in the developers table. Example: architecto

location   object   
google_map_link   string  optional  

Must be a valid URL. Must not be greater than 2048 characters. Example: b

north_side   string  optional  

Must not be greater than 255 characters. Example: n

south_side   string  optional  

Must not be greater than 255 characters. Example: g

east_side   string  optional  

Must not be greater than 255 characters. Example: z

west_side   string  optional  

Must not be greater than 255 characters. Example: m

landmark   string  optional  

Must not be greater than 255 characters. Example: i

description   string  optional  

Example: Eius et animi quos velit et.

latitude   number  optional  

Must be between -90 and 90. Example: -89

longitude   number  optional  

Must be between -180 and 180. Example: -179

area_id   string  optional  
city_id   string  optional  
available_units   string   

Example: architecto

total_units   string   

Example: architecto

price_range   string   

Example: architecto

price_range_SQ   string   

Example: architecto

description   string  optional  
project_size   string  optional  
phase   string  optional  

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/projects/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"project_name\": \"b\",
    \"status\": \"completed\",
    \"project_type\": \"commercial\",
    \"launch_date\": \"2025-06-26T01:53:32\",
    \"completion_date\": \"2051-07-20\",
    \"location\": {
        \"google_map_link\": \"n\",
        \"north_side\": \"g\",
        \"south_side\": \"z\",
        \"east_side\": \"m\",
        \"west_side\": \"i\",
        \"landmark\": \"y\",
        \"description\": \"Eius et animi quos velit et.\",
        \"latitude\": -89,
        \"longitude\": -179
    }
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "project_name": "b",
    "status": "completed",
    "project_type": "commercial",
    "launch_date": "2025-06-26T01:53:32",
    "completion_date": "2051-07-20",
    "location": {
        "google_map_link": "n",
        "north_side": "g",
        "south_side": "z",
        "east_side": "m",
        "west_side": "i",
        "landmark": "y",
        "description": "Eius et animi quos velit et.",
        "latitude": -89,
        "longitude": -179
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'project_name' => 'b',
            'status' => 'completed',
            'project_type' => 'commercial',
            'launch_date' => '2025-06-26T01:53:32',
            'completion_date' => '2051-07-20',
            'location' => [
                'google_map_link' => 'n',
                'north_side' => 'g',
                'south_side' => 'z',
                'east_side' => 'm',
                'west_side' => 'i',
                'landmark' => 'y',
                'description' => 'Eius et animi quos velit et.',
                'latitude' => -89,
                'longitude' => -179,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/projects/{project_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

project_id   string   

The ID of the project. Example: architecto

request   integer   

Example: 16

id   integer   

Example: 16

Body Parameters

project_name   string  optional  

Must not be greater than 255 characters. Example: b

status   string  optional  

Example: completed

Must be one of:
  • ongoing
  • completed
  • upcoming
project_type   string  optional  

Example: commercial

Must be one of:
  • residential
  • commercial
  • mixed-use
launch_date   string  optional  

Must be a valid date. Example: 2025-06-26T01:53:32

completion_date   string  optional  

Must be a valid date. Must be a date after or equal to launch_date. Example: 2051-07-20

milestone_id   string  optional  

The milestone_id of an existing record in the project_milestones table.

developer_id   string  optional  

The developer_id of an existing record in the developers table.

location   object  optional  
google_map_link   string  optional  

Must be a valid URL. Must not be greater than 2048 characters. Example: n

north_side   string  optional  

Must not be greater than 255 characters. Example: g

south_side   string  optional  

Must not be greater than 255 characters. Example: z

east_side   string  optional  

Must not be greater than 255 characters. Example: m

west_side   string  optional  

Must not be greater than 255 characters. Example: i

landmark   string  optional  

Must not be greater than 255 characters. Example: y

description   string  optional  

Example: Eius et animi quos velit et.

latitude   number  optional  

Must be between -90 and 90. Example: -89

longitude   number  optional  

Must be between -180 and 180. Example: -179

area_id   string  optional  
city_id   string  optional  
available_units   string  optional  
total_units   string  optional  
price_range   string  optional  
price_range_SQ   string  optional  
description   string  optional  
project_size   string  optional  
phase   string  optional  

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/projects/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/projects/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/projects/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/projects/{project_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

project_id   string   

The ID of the project. Example: architecto

id   integer   

Example: 16

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/developers" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/developers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/developers

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/developers/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/developers/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/developers/{developer_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

developer_id   string   

The ID of the developer. Example: architecto

id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/developers" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "email=gbailey@example.net"\
    --form "name=m"\
    --form "phone_number=i"\
    --form "website=http://www.okon.com/accusantium-harum-mollitia-modi-deserunt-aut-ab"\
    --form "description=Eius et animi quos velit et."\
    --form "status=active"\
    --form "logo=@/tmp/phpu00vaod9vfc52ZRl74X" 
const url = new URL(
    "http://localhost:8000/api/dashboard/developers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('email', 'gbailey@example.net');
body.append('name', 'm');
body.append('phone_number', 'i');
body.append('website', 'http://www.okon.com/accusantium-harum-mollitia-modi-deserunt-aut-ab');
body.append('description', 'Eius et animi quos velit et.');
body.append('status', 'active');
body.append('logo', document.querySelector('input[name="logo"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'email',
                'contents' => 'gbailey@example.net'
            ],
            [
                'name' => 'name',
                'contents' => 'm'
            ],
            [
                'name' => 'phone_number',
                'contents' => 'i'
            ],
            [
                'name' => 'website',
                'contents' => 'http://www.okon.com/accusantium-harum-mollitia-modi-deserunt-aut-ab'
            ],
            [
                'name' => 'description',
                'contents' => 'Eius et animi quos velit et.'
            ],
            [
                'name' => 'status',
                'contents' => 'active'
            ],
            [
                'name' => 'logo',
                'contents' => fopen('/tmp/phpu00vaod9vfc52ZRl74X', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/developers

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

email   string   

Must be a valid email address. Example: gbailey@example.net

name   string   

Must not be greater than 255 characters. Example: m

phone_number   string   

Must not be greater than 15 characters. Example: i

website   string  optional  

Must be a valid URL. Example: http://www.okon.com/accusantium-harum-mollitia-modi-deserunt-aut-ab

logo   file  optional  

Must be an image. Must not be greater than 2048 kilobytes. Example: /tmp/phpu00vaod9vfc52ZRl74X

description   string  optional  

Example: Eius et animi quos velit et.

status   string   

Example: active

Must be one of:
  • active
  • inactive

Update existing resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/developers/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "email=gbailey@example.net"\
    --form "name=m"\
    --form "phone_number=i"\
    --form "website=http://www.okon.com/accusantium-harum-mollitia-modi-deserunt-aut-ab"\
    --form "description=Eius et animi quos velit et."\
    --form "status=inactive"\
    --form "logo=@/tmp/phpkm0hqq39m7cgci962Hz" 
const url = new URL(
    "http://localhost:8000/api/dashboard/developers/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('email', 'gbailey@example.net');
body.append('name', 'm');
body.append('phone_number', 'i');
body.append('website', 'http://www.okon.com/accusantium-harum-mollitia-modi-deserunt-aut-ab');
body.append('description', 'Eius et animi quos velit et.');
body.append('status', 'inactive');
body.append('logo', document.querySelector('input[name="logo"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers/architecto';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'email',
                'contents' => 'gbailey@example.net'
            ],
            [
                'name' => 'name',
                'contents' => 'm'
            ],
            [
                'name' => 'phone_number',
                'contents' => 'i'
            ],
            [
                'name' => 'website',
                'contents' => 'http://www.okon.com/accusantium-harum-mollitia-modi-deserunt-aut-ab'
            ],
            [
                'name' => 'description',
                'contents' => 'Eius et animi quos velit et.'
            ],
            [
                'name' => 'status',
                'contents' => 'inactive'
            ],
            [
                'name' => 'logo',
                'contents' => fopen('/tmp/phpkm0hqq39m7cgci962Hz', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/developers/{developer_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

developer_id   string   

The ID of the developer. Example: architecto

request   integer   

Example: 16

id   integer   

Example: 16

Body Parameters

email   string   

Must be a valid email address. Example: gbailey@example.net

name   string   

Must not be greater than 255 characters. Example: m

phone_number   string   

Must not be greater than 15 characters. Example: i

website   string  optional  

Must be a valid URL. Example: http://www.okon.com/accusantium-harum-mollitia-modi-deserunt-aut-ab

logo   file  optional  

Must be an image. Must not be greater than 2048 kilobytes. Example: /tmp/phpkm0hqq39m7cgci962Hz

description   string  optional  

Example: Eius et animi quos velit et.

status   string   

Example: inactive

Must be one of:
  • active
  • inactive

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/developers/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/developers/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/developers/{developer_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

developer_id   integer   

Example: 16

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/developers/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/developers/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers/16/features/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/developers/{developer_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

developer_id   integer   

Example: 16

feature_id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/developers/features" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"developer_id\": \"architecto\",
    \"features\": [
        {
            \"feature_id\": \"architecto\",
            \"value\": \"n\"
        }
    ]
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/developers/features"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "developer_id": "architecto",
    "features": [
        {
            "feature_id": "architecto",
            "value": "n"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers/features';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'developer_id' => 'architecto',
            'features' => [
                [
                    'feature_id' => 'architecto',
                    'value' => 'n',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/developers/features

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

developer_id   string   

The developer_id of an existing record in the developers table. Example: architecto

features   object[]   
feature_id   string   

The feature_id of an existing record in the features table. Example: architecto

value   string  optional  

Must not be greater than 255 characters. Example: n

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/developers/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"value\": \"b\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/developers/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "value": "b"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers/16/features/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'value' => 'b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/developers/{developer_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

developer_id   integer   

Example: 16

feature_id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

value   string  optional  

Must not be greater than 255 characters. Example: b

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/developers/16/features/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/developers/16/features/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/developers/16/features/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/developers/{developer_id}/features/{feature_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

developer_id   integer   

Example: 16

feature_id   integer   

Example: 16

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/permissions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/permissions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"description\": \"Eius et animi quos velit et.\",
    \"permission_name\": \"v\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "description": "Eius et animi quos velit et.",
    "permission_name": "v"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/permissions';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'description' => 'Eius et animi quos velit et.',
            'permission_name' => 'v',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/permissions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

description   string  optional  

Example: Eius et animi quos velit et.

permission_name   string   

Must not be greater than 100 characters. Example: v

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/permissions/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/permissions/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/permissions/16';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/permissions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/permissions/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"description\": \"Eius et animi quos velit et.\",
    \"permission_name\": \"v\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/permissions/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "description": "Eius et animi quos velit et.",
    "permission_name": "v"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/permissions/16';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'description' => 'Eius et animi quos velit et.',
            'permission_name' => 'v',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/permissions/{id}

PATCH api/dashboard/permissions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

request   integer   

Example: 16

Body Parameters

description   string  optional  

Example: Eius et animi quos velit et.

permission_name   string  optional  

Must not be greater than 100 characters. Example: v

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/permissions/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/permissions/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/permissions/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/permissions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 16

Get list of resources

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/paymentPlans" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/paymentPlans"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/paymentPlans';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/paymentPlans

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show single resource

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/dashboard/paymentPlans/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/paymentPlans/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/paymentPlans/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

GET api/dashboard/paymentPlans/{payment_plan_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

payment_plan_id   string   

The ID of the payment plan. Example: architecto

id   integer   

Example: 16

Store new resource

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/dashboard/paymentPlans" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Eius et animi quos velit et.\",
    \"total_cost\": 60,
    \"status\": \"active\",
    \"entity_type\": \"project\",
    \"entities\": [
        {
            \"entity_id\": 16
        }
    ]
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/paymentPlans"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Eius et animi quos velit et.",
    "total_cost": 60,
    "status": "active",
    "entity_type": "project",
    "entities": [
        {
            "entity_id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/paymentPlans';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'b',
            'description' => 'Eius et animi quos velit et.',
            'total_cost' => 60,
            'status' => 'active',
            'entity_type' => 'project',
            'entities' => [
                [
                    'entity_id' => 16,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

POST api/dashboard/paymentPlans

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

request   integer   

Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Example: Eius et animi quos velit et.

total_cost   number  optional  

Must be at least 0. Example: 60

status   string   

Example: active

Must be one of:
  • active
  • inactive
entity_type   string   

Example: project

Must be one of:
  • developer
  • project
  • property
entities   object[]   

Must have at least 1 items.

entity_id   integer   

Example: 16

Update existing resource

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8000/api/dashboard/paymentPlans/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Eius et animi quos velit et.\",
    \"total_cost\": 60,
    \"status\": \"active\"
}"
const url = new URL(
    "http://localhost:8000/api/dashboard/paymentPlans/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Eius et animi quos velit et.",
    "total_cost": 60,
    "status": "active"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/paymentPlans/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'b',
            'description' => 'Eius et animi quos velit et.',
            'total_cost' => 60,
            'status' => 'active',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

PUT api/dashboard/paymentPlans/{payment_plan_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

payment_plan_id   string   

The ID of the payment plan. Example: architecto

request   integer   

Example: 16

id   integer   

Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Example: Eius et animi quos velit et.

total_cost   number  optional  

Must be at least 0. Example: 60

status   string   

Example: active

Must be one of:
  • active
  • inactive

Delete resource

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8000/api/dashboard/paymentPlans/architecto/entities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/dashboard/paymentPlans/architecto/entities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/dashboard/paymentPlans/architecto/entities/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request      

DELETE api/dashboard/paymentPlans/{payment_plan_id}/entities/{entity_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

payment_plan_id   string   

The ID of the payment plan. Example: architecto

entity_id   integer   

Example: 16

payment_id   integer   

Example: 16

iOS - Chat

Send a new chat message

requires authentication

Sends a message from one user to another.

Example request:
curl --request POST \
    "http://localhost:8000/api/chat/send" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sender_id\": 1,
    \"receiver_id\": 2,
    \"message_text\": \"architecto\",
    \"message_type\": \"image\",
    \"attachment_url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",
    \"entity_type\": \"property\",
    \"message\": \"\\\"Hello, how are you?\\\"\"
}"
const url = new URL(
    "http://localhost:8000/api/chat/send"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sender_id": 1,
    "receiver_id": 2,
    "message_text": "architecto",
    "message_type": "image",
    "attachment_url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
    "entity_type": "property",
    "message": "\"Hello, how are you?\""
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/chat/send';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'sender_id' => 1,
            'receiver_id' => 2,
            'message_text' => 'architecto',
            'message_type' => 'image',
            'attachment_url' => 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html',
            'entity_type' => 'property',
            'message' => '"Hello, how are you?"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Message sent successfully",
    "data": {
        "id": 123,
        "sender_id": 1,
        "receiver_id": 2,
        "message": "Hello, how are you?",
        "created_at": "2025-06-25T10:00:00"
    }
}
 

Request      

POST api/chat/send

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

sender_id   integer   

The ID of the user sending the message. Example: 1

receiver_id   integer   

The ID of the receiver. Example: 2

message_text   string   

Example: architecto

message_type   string   

Example: image

Must be one of:
  • text
  • image
  • video
  • document
  • audio
attachment_url   string  optional  

Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

entity_type   string   

Example: property

Must be one of:
  • project
  • property
  • developer
entity_id   string  optional  

This field is required when entity_type is project, property, or developer.

message   string   

The message content. Example: "Hello, how are you?"

Get chat history between two users

requires authentication

Returns all messages exchanged between the given sender and receiver.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/chat/history/architecto/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/chat/history/architecto/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/chat/history/architecto/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "messages": [
        {
            "id": 1,
            "sender_id": 1,
            "receiver_id": 2,
            "message": "Hello",
            "read": false,
            "created_at": "2025-06-25T10:00:00"
        }
    ]
}
 

Request      

GET api/chat/history/{sender_id}/{receiver_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

sender_id   string   

The ID of the sender. Example: architecto

receiver_id   string   

The ID of the receiver. Example: architecto

senderId   integer   

ID of the sender. Example: 1

receiverId   integer   

ID of the receiver. Example: 2

Mark chat messages as read

requires authentication

Marks all unread messages from the sender to the receiver as read.

Example request:
curl --request POST \
    "http://localhost:8000/api/chat/mark-as-read/architecto/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/chat/mark-as-read/architecto/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/chat/mark-as-read/architecto/architecto';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Messages marked as read"
}
 

Request      

POST api/chat/mark-as-read/{sender_id}/{receiver_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

sender_id   string   

The ID of the sender. Example: architecto

receiver_id   string   

The ID of the receiver. Example: architecto

senderId   integer   

ID of the sender. Example: 1

receiverId   integer   

ID of the receiver. Example: 2

Get chat contacts

requires authentication

Returns a list of users that the given user has chatted with.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/chat/contacts/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/chat/contacts/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/chat/contacts/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "contacts": [
        {
            "user_id": 2,
            "name": "Ahmed",
            "last_message": "See you soon!",
            "unread_count": 0
        }
    ]
}
 

Request      

GET api/chat/contacts/{sender_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

sender_id   string   

The ID of the sender. Example: architecto

userId   integer   

ID of the user. Example: 1

Get all chats

requires authentication

Returns all chat records in the system (admin view).

Example request:
curl --request GET \
    --get "http://localhost:8000/api/chat/all" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/chat/all"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/chat/all';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "chats": [...]
}
 

Request      

GET api/chat/all

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

iOS - Developers

Get list of developers

requires authentication

Returns a paginated list of all available developers.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/all-developers?page=1&per_page=10&city=Dubai" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/all-developers"
);

const params = {
    "page": "1",
    "per_page": "10",
    "city": "Dubai",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/all-developers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '10',
            'city' => 'Dubai',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Emaar",
            "logo": "https://example.com/emaar.png",
            "city": "Dubai"
        }
    ]
}
 

Request      

GET api/all-developers

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

page   integer  optional  

The page number. Example: 1

per_page   integer  optional  

Number of items per page. Example: 10

city   string  optional  

Filter by city. Example: Dubai

Get developer details

requires authentication

Returns detailed information about a specific developer.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/developer/1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/developer/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/developer/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": 1,
    "name": "Emaar",
    "description": "One of the top real estate developers in UAE.",
    "projects": [
        {
            "id": 10,
            "name": "Dubai Hills",
            "status": "active"
        }
    ]
}
 

Example response (404):


{
    "message": "Developer not found"
}
 

Request      

GET api/developer/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the developer. Example: 1

iOS - Favourites

Add to favourites

requires authentication

Adds a project or unit to the authenticated user's favourites.

Example request:
curl --request POST \
    "http://localhost:8000/api/addtofavourite" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"entity_type\": \"project\",
    \"entity_id\": 15
}"
const url = new URL(
    "http://localhost:8000/api/addtofavourite"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "entity_type": "project",
    "entity_id": 15
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/addtofavourite';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'entity_type' => 'project',
            'entity_id' => 15,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Added to favourites successfully",
    "data": {
        "user_id": 1,
        "entity_type": "project",
        "entity_id": 15
    }
}
 

Example response (400):


{
    "message": "Already in favourites"
}
 

Request      

POST api/addtofavourite

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

entity_type   string   

The type of item. Must be 'project' or 'unit'. Example: project

entity_id   integer   

The ID of the item to add. Example: 15

Get user favourites

requires authentication

Retrieves all favourite projects and units for the authenticated user.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/favourites" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/favourites"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/favourites';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "entity_type": "project",
            "entity_id": 15,
            "name": "Dubai Hills"
        },
        {
            "entity_type": "unit",
            "entity_id": 22,
            "name": "Apartment 3B"
        }
    ]
}
 

Request      

GET api/favourites

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Remove from favourites

requires authentication

Removes a project or unit from the authenticated user's favourites.

Example request:
curl --request POST \
    "http://localhost:8000/api/favourites/remove" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"entity_type\": \"unit\",
    \"entity_id\": 22
}"
const url = new URL(
    "http://localhost:8000/api/favourites/remove"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "entity_type": "unit",
    "entity_id": 22
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/favourites/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'entity_type' => 'unit',
            'entity_id' => 22,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Removed from favourites successfully"
}
 

Example response (404):


{
    "message": "Item not found in favourites"
}
 

Request      

POST api/favourites/remove

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

entity_type   string   

The type of item. Must be 'project' or 'unit'. Example: unit

entity_id   integer   

The ID of the item to remove. Example: 22

iOS - Locations

Get project units by project ID

requires authentication

Retrieves all properties/units associated with a specific project ID.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/project/architecto/units" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/project/architecto/units"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/project/architecto/units';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": {
        "total_units": 2,
        "units": [
            {
                "property_id": 101,
                "property_name": "2BHK Marina View",
                "bedrooms": 2,
                "latitude": 25.1111,
                "longitude": 55.2222,
                "area_name": "Dubai Marina",
                "city_name": "Dubai",
                "country_name": "UAE",
                "completion_date": "2025-01-01",
                "price": 2500000,
                "media_urls": "url1,url2"
            }
        ]
    },
    "error": null
}
 

Request      

GET api/project/{id}/units

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the project. Example: architecto

projectId   integer   

ID of the project. Example: 9

Get locations within tile bounds

requires authentication

Retrieves a list of locations based on map tile coordinates (x, y, and zoom) using OpenStreetMap tile logic.

Example request:
curl --request POST \
    "http://localhost:8000/api/loc?x=1523&y=2681&zoom=12" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/loc"
);

const params = {
    "x": "1523",
    "y": "2681",
    "zoom": "12",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/loc';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'x' => '1523',
            'y' => '2681',
            'zoom' => '12',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": [
        {
            "id": 1,
            "latitude": 25.276987,
            "longitude": 55.296249,
            "area_name": "Dubai Marina"
        }
    ],
    "error": null
}
 

Request      

POST api/loc

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

x   integer   

Tile X coordinate. Example: 1523

y   integer   

Tile Y coordinate. Example: 2681

zoom   integer   

Zoom level. Example: 12

Get locations within tile bounds

requires authentication

Retrieves a list of locations based on map tile coordinates (x, y, and zoom) using OpenStreetMap tile logic.

Example request:
curl --request POST \
    "http://localhost:8000/api/maplocations?x=1523&y=2681&zoom=12" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/maplocations"
);

const params = {
    "x": "1523",
    "y": "2681",
    "zoom": "12",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/maplocations';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'x' => '1523',
            'y' => '2681',
            'zoom' => '12',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": [
        {
            "id": 1,
            "latitude": 25.276987,
            "longitude": 55.296249,
            "area_name": "Dubai Marina"
        }
    ],
    "error": null
}
 

Request      

POST api/maplocations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

x   integer   

Tile X coordinate. Example: 1523

y   integer   

Tile Y coordinate. Example: 2681

zoom   integer   

Zoom level. Example: 12

Get projects within tile bounds

requires authentication

Retrieves active projects that fall within a specified map tile (based on x, y, and zoom).

Example request:
curl --request POST \
    "http://localhost:8000/api/projects-by-zoom?x=1523&y=2681&zoom=12" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/projects-by-zoom"
);

const params = {
    "x": "1523",
    "y": "2681",
    "zoom": "12",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/projects-by-zoom';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'x' => '1523',
            'y' => '2681',
            'zoom' => '12',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": [
        {
            "project_id": 5,
            "project_name": "Palm Jumeirah Villas",
            "price_range": "AED 3M - AED 10M",
            "latitude": 25.112233,
            "longitude": 55.332211,
            "media_urls": "url1,url2"
        }
    ],
    "error": null
}
 

Request      

POST api/projects-by-zoom

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

x   integer   

Tile X coordinate. Example: 1523

y   integer   

Tile Y coordinate. Example: 2681

zoom   integer   

Zoom level. Example: 12

Get units by zoom level and filters

requires authentication

Retrieves units/properties filtered by tile coordinates, area, features, price, size, etc.

Example request:
curl --request POST \
    "http://localhost:8000/api/units-by-zoom-level?x=1523&y=2681&zoom=12&areas%5B%5D=Dubai+Marina&features%5B%5D=Balcony&price_from=1000000&price_to=5000000&bedrooms%5B%5D=2&bathrooms%5B%5D=2&unit_from=100&unit_to=300&country=UAE&city=Dubai&developer=EMAAR&completion_date=2025&finishing_status=Fully+Finished&unit_type=Apartment" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/units-by-zoom-level"
);

const params = {
    "x": "1523",
    "y": "2681",
    "zoom": "12",
    "areas[]": "Dubai Marina",
    "features[]": "Balcony",
    "price_from": "1000000",
    "price_to": "5000000",
    "bedrooms[]": "2",
    "bathrooms[]": "2",
    "unit_from": "100",
    "unit_to": "300",
    "country": "UAE",
    "city": "Dubai",
    "developer": "EMAAR",
    "completion_date": "2025",
    "finishing_status": "Fully Finished",
    "unit_type": "Apartment",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/units-by-zoom-level';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'x' => '1523',
            'y' => '2681',
            'zoom' => '12',
            'areas[]' => 'Dubai Marina',
            'features[]' => 'Balcony',
            'price_from' => '1000000',
            'price_to' => '5000000',
            'bedrooms[]' => '2',
            'bathrooms[]' => '2',
            'unit_from' => '100',
            'unit_to' => '300',
            'country' => 'UAE',
            'city' => 'Dubai',
            'developer' => 'EMAAR',
            'completion_date' => '2025',
            'finishing_status' => 'Fully Finished',
            'unit_type' => 'Apartment',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": 200,
  "data": [
    {
      "property_id": 203,
      "property_name": "Skyline Residence",
      "price": 2000000,
      "developer_name": "DAMAC",
      "latitude": 25.19,
      ...
    }
  ],
  "error": null
}
 

Request      

POST api/units-by-zoom-level

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

x   integer   

Tile X coordinate. Example: 1523

y   integer   

Tile Y coordinate. Example: 2681

zoom   integer   

Zoom level. Example: 12

areas[]   string  optional  

Optional. Filter by area names. Example: Dubai Marina

features[]   string  optional  

Optional. Filter by feature names. Example: Balcony

price_from   integer  optional  

Optional. Minimum price. Example: 1000000

price_to   integer  optional  

Optional. Maximum price. Example: 5000000

bedrooms[]   integer  optional  

Optional. Filter by number of bedrooms. Example: 2

bathrooms[]   integer  optional  

Optional. Filter by number of bathrooms. Example: 2

unit_from   integer  optional  

Optional. Minimum unit size. Example: 100

unit_to   integer  optional  

Optional. Maximum unit size. Example: 300

country   string  optional  

Optional. Filter by country name. Example: UAE

city   string  optional  

Optional. Filter by city name. Example: Dubai

developer   string  optional  

Optional. Developer name (LIKE search). Example: EMAAR

completion_date   string  optional  

Optional. Filter by completion date. Example: 2025

finishing_status   string  optional  

Optional. Filter by finishing status. Example: Fully Finished

unit_type   string  optional  

Optional. Filter by property type. Example: Apartment

Search for locations

requires authentication

Searches for locations using a keyword and returns paginated results including property and location info.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/locationsearch?keyword=Marina&page=1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/locationsearch"
);

const params = {
    "keyword": "Marina",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/locationsearch';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'keyword' => 'Marina',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "data": [...],
  "current_page": 1,
  "per_page": 10,
  "total": 20
}
 

Request      

GET api/locationsearch

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

keyword   string   

Search keyword. Example: Marina

page   integer  optional  

Page number for pagination. Example: 1

iOS - Meeting Requests

Request a new meeting

requires authentication

Allows a user to create a new meeting request.

Example request:
curl --request POST \
    "http://localhost:8000/api/requests" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"property_id\": 42,
    \"user_id\": 12,
    \"preferred_date\": \"2025-07-01\",
    \"notes\": \"Please arrange a virtual tour.\"
}"
const url = new URL(
    "http://localhost:8000/api/requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_id": 42,
    "user_id": 12,
    "preferred_date": "2025-07-01",
    "notes": "Please arrange a virtual tour."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/requests';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'property_id' => 42,
            'user_id' => 12,
            'preferred_date' => '2025-07-01',
            'notes' => 'Please arrange a virtual tour.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": 200,
  "message": "Meeting request created successfully",
  "data": {
    "meeting_request_id": 7,
    "status": "pending",
    ...
  }
}
 

Request      

POST api/requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

property_id   integer   

The ID of the property. Example: 42

user_id   integer   

The ID of the user requesting the meeting. Example: 12

preferred_date   string   

Preferred date of the meeting. Format: YYYY-MM-DD. Example: 2025-07-01

notes   string  optional  

Optional. Additional notes from the user. Example: Please arrange a virtual tour.

Accept meeting request (Admin)

requires authentication

Allows an admin to accept a meeting request.

Example request:
curl --request POST \
    "http://localhost:8000/api/approve-meeting" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"admin_id\": 1,
    \"scheduled_time\": \"2025-07-01T15:00:00Z\"
}"
const url = new URL(
    "http://localhost:8000/api/approve-meeting"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "admin_id": 1,
    "scheduled_time": "2025-07-01T15:00:00Z"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/approve-meeting';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'admin_id' => 1,
            'scheduled_time' => '2025-07-01T15:00:00Z',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": 200,
  "message": "Meeting request accepted",
  "data": {
    "meeting_request_id": 7,
    "status": "accepted",
    ...
  }
}
 

Request      

POST api/approve-meeting

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

meetingRequestId   integer   

The ID of the meeting request. Example: 7

Body Parameters

admin_id   integer   

The ID of the admin accepting the request. Example: 1

scheduled_time   string   

Time of the meeting in ISO 8601 format. Example: 2025-07-01T15:00:00Z

Get all active meeting requests

requires authentication

Returns a list of all active/pending meeting requests.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/all-request" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/all-request"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/all-request';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": [
        {
            "meeting_request_id": 7,
            "user": {
                "id": 12,
                "name": "John Doe"
            },
            "property_id": 42,
            "status": "pending"
        }
    ]
}
 

Request      

GET api/all-request

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

iOS - Payments

Get all invoices

requires authentication

Retrieves a list of all invoices in the system.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/payments/all" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/payments/all"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/payments/all';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "message": "Invoices retrieved successfully",
    "data": [
        {
            "invoice_id": 101,
            "user_id": 1,
            "amount": 15000,
            "payment_method": "bank_transfer",
            "payment_date": "2025-06-25"
        }
    ]
}
 

Request      

GET api/payments/all

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get invoices for a specific user

requires authentication

Retrieves all invoices uploaded by a specific user.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/payments/user/1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/payments/user/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/payments/user/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "message": "User invoices retrieved successfully",
    "data": [
        {
            "invoice_id": 102,
            "amount": 12000,
            "payment_method": "card",
            "payment_date": "2025-06-20"
        }
    ]
}
 

Request      

GET api/payments/user/{userId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

userId   integer   

ID of the user. Example: 1

Get invoice by ID

requires authentication

Retrieves a specific invoice by its ID.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/payments/invoice/101" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/payments/invoice/101"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/payments/invoice/101';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "message": "Invoice retrieved successfully",
    "data": {
        "invoice_id": 101,
        "user_id": 1,
        "amount": 15000,
        "payment_method": "bank_transfer",
        "payment_date": "2025-06-25"
    }
}
 

Request      

GET api/payments/invoice/{invoiceId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

invoiceId   integer   

The ID of the invoice. Example: 101

iOS - Projects

Search for projects

requires authentication

Search projects by keyword, area, developer, or city.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/searchproject?keyword=Marina" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/searchproject"
);

const params = {
    "keyword": "Marina",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/searchproject';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'keyword' => 'Marina',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": 200,
  "data": [
    {
      "project_id": 4,
      "project_name": "Marina Gate",
      ...
    }
  ]
}
 

Request      

GET api/searchproject

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

keyword   string   

The keyword to search projects. Example: Marina

Get all projects

requires authentication

Returns a list of all available projects with optional filters.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/all-projects?city=Dubai&developer=EMAAR&price_from=1000000&price_to=5000000" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/all-projects"
);

const params = {
    "city": "Dubai",
    "developer": "EMAAR",
    "price_from": "1000000",
    "price_to": "5000000",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/all-projects';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'city' => 'Dubai',
            'developer' => 'EMAAR',
            'price_from' => '1000000',
            'price_to' => '5000000',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": 200,
  "data": [
    {
      "project_id": 1,
      "project_name": "Palm Views",
      "developer": "Nakheel",
      "price_range": "1,000,000 - 2,500,000",
      ...
    }
  ]
}
 

Request      

GET api/all-projects

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

city   string  optional  

Optional. Filter by city name. Example: Dubai

developer   string  optional  

Optional. Filter by developer name. Example: EMAAR

price_from   integer  optional  

Optional. Minimum price. Example: 1000000

price_to   integer  optional  

Optional. Maximum price. Example: 5000000

Get project details by ID

requires authentication

Shows the details of a single project including units and metadata.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/getProject/1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/getProject/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/getProject/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": 200,
  "data": {
    "project_id": 1,
    "project_name": "Palm Views",
    "description": "A luxurious residential waterfront project...",
    ...
  }
}
 

Request      

GET api/getProject/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the project. Example: 1

Get homepage data

requires authentication

Fetches data for the iOS app homepage including featured projects, top developers, and offers.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/home-page-data" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/home-page-data"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/home-page-data';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": 200,
  "data": {
    "featured_projects": [...],
    "top_developers": [...],
    ...
  }
}
 

Request      

GET api/home-page-data

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

iOS - Reservations

Reserve a Unit

requires authentication

Allows the user to make a reservation on a property unit.

Example request:
curl --request POST \
    "http://localhost:8000/api/reserve-unit" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 5,
    \"property_id\": 42,
    \"reservation_date\": \"2025-07-01\",
    \"notes\": \"Please reserve ASAP.\"
}"
const url = new URL(
    "http://localhost:8000/api/reserve-unit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 5,
    "property_id": 42,
    "reservation_date": "2025-07-01",
    "notes": "Please reserve ASAP."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/reserve-unit';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'user_id' => 5,
            'property_id' => 42,
            'reservation_date' => '2025-07-01',
            'notes' => 'Please reserve ASAP.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "message": "Reservation created successfully",
    "data": {
        "reservation_id": 1,
        "status": "pending"
    }
}
 

Request      

POST api/reserve-unit

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   integer   

The ID of the user reserving. Example: 5

property_id   integer   

The ID of the property being reserved. Example: 42

reservation_date   string   

The reservation date (YYYY-MM-DD). Example: 2025-07-01

notes   string  optional  

optional Any additional notes. Example: Please reserve ASAP.

Show a specific reservation

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/booking-reserve-unit/5" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/booking-reserve-unit/5"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/booking-reserve-unit/5';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "You must log in first."
}
 

Request      

GET api/booking-reserve-unit/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the reservation. Example: 5

Upload reservation contract photo

requires authentication

Upload a photo related to the reservation.

Example request:
curl --request POST \
    "http://localhost:8000/api/upload-photo" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "reservation_id=3"\
    --form "image=@/tmp/php1d8pvai1q93n3z5gjFZ" 
const url = new URL(
    "http://localhost:8000/api/upload-photo"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('reservation_id', '3');
body.append('image', document.querySelector('input[name="image"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/upload-photo';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'reservation_id',
                'contents' => '3'
            ],
            [
                'name' => 'image',
                'contents' => fopen('/tmp/php1d8pvai1q93n3z5gjFZ', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Photo uploaded successfully"
}
 

Request      

POST api/upload-photo

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

reservation_id   integer   

ID of the reservation. Example: 3

image   file   

Image file of the contract. Example: /tmp/php1d8pvai1q93n3z5gjFZ

Get All Reservations

requires authentication

Fetches all reservations in the system. Can be used for listing reservations by admin or general context.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/all-reservation-unit" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/all-reservation-unit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/all-reservation-unit';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": [
        {
            "reservation_id": 1,
            "user_id": 5,
            "property_id": 42,
            "status": "pending",
            "created_at": "2025-06-25T12:00:00Z"
        }
    ],
    "error": null
}
 

Request      

GET api/all-reservation-unit

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show reserved unit details

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/show-detalis-reservedunit/42" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/show-detalis-reservedunit/42"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/show-detalis-reservedunit/42';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "You must log in first."
}
 

Request      

GET api/show-detalis-reservedunit/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the reserved unit. Example: 42

Get sales offer details

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/get-sales-offer" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/get-sales-offer"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/get-sales-offer';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "You must login"
}
 

Request      

GET api/get-sales-offer

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Upload bank transfer photo

requires authentication

Upload a photo of the bank transfer receipt.

Example request:
curl --request POST \
    "http://localhost:8000/api/upload-tranfer-photo" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "reservation_id=5"\
    --form "image=@/tmp/phpfb95dki18rh58tvcmU5" 
const url = new URL(
    "http://localhost:8000/api/upload-tranfer-photo"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('reservation_id', '5');
body.append('image', document.querySelector('input[name="image"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/upload-tranfer-photo';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'reservation_id',
                'contents' => '5'
            ],
            [
                'name' => 'image',
                'contents' => fopen('/tmp/phpfb95dki18rh58tvcmU5', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/upload-tranfer-photo

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

reservation_id   integer   

ID of reservation. Example: 5

image   file   

Bank transfer receipt image. Example: /tmp/phpfb95dki18rh58tvcmU5

Upload identification photo

requires authentication

Uploads a national ID/passport image for the reservation.

Example request:
curl --request POST \
    "http://localhost:8000/api/upload-identification-photo" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "reservation_id=5"\
    --form "image=@/tmp/php7cdoc7861m52ehYrE0C" 
const url = new URL(
    "http://localhost:8000/api/upload-identification-photo"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('reservation_id', '5');
body.append('image', document.querySelector('input[name="image"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/upload-identification-photo';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'reservation_id',
                'contents' => '5'
            ],
            [
                'name' => 'image',
                'contents' => fopen('/tmp/php7cdoc7861m52ehYrE0C', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/upload-identification-photo

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

reservation_id   integer   

The reservation ID. Example: 5

image   file   

The image file. Example: /tmp/php7cdoc7861m52ehYrE0C

Update sales offer

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/update-sales-offer-status" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/update-sales-offer-status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/update-sales-offer-status';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/update-sales-offer-status

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Update Device Token (Notifications)

requires authentication

Used for push notifications.

Example request:
curl --request POST \
    "http://localhost:8000/api/update-device-token" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 5,
    \"device_token\": \"fcmTokenHere123\"
}"
const url = new URL(
    "http://localhost:8000/api/update-device-token"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 5,
    "device_token": "fcmTokenHere123"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/update-device-token';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'user_id' => 5,
            'device_token' => 'fcmTokenHere123',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/update-device-token

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   integer   

User ID. Example: 5

device_token   string   

Token. Example: fcmTokenHere123

Approve reservation updates (Admin)

requires authentication

Example request:
curl --request POST \
    "http://localhost:8000/api/approve-reservation" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/approve-reservation"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/approve-reservation';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/approve-reservation

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get All Reservations (Admin)

requires authentication

Retrieves all reservations in the system. Typically used by admin users.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/all-reservations" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/all-reservations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/all-reservations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": [
        {
            "reservation_id": 1,
            "user_id": 5,
            "property_id": 42,
            "status": "pending",
            "created_at": "2025-06-25T12:00:00Z"
        }
    ],
    "error": null
}
 

Request      

GET api/all-reservations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Approve Reservation (Admin)

requires authentication

Admin approval for a reservation.

Example request:
curl --request PUT \
    "http://localhost:8000/api/approve-reservation/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"approved_by\": 1,
    \"notes\": \"Verified and approved.\"
}"
const url = new URL(
    "http://localhost:8000/api/approve-reservation/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "approved_by": 1,
    "notes": "Verified and approved."
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/approve-reservation/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'approved_by' => 1,
            'notes' => 'Verified and approved.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/approve-reservation/{reservation_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

reservation_id   string   

The ID of the reservation. Example: architecto

reservationId   integer   

The reservation ID. Example: 5

Body Parameters

approved_by   integer   

The admin ID. Example: 1

notes   string  optional  

optional Notes for the approval. Example: Verified and approved.

Make a sales offer

requires authentication

User can submit an offer for the unit.

Example request:
curl --request POST \
    "http://localhost:8000/api/make-sales-offer" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reservation_id\": 5,
    \"offer_amount\": 850000
}"
const url = new URL(
    "http://localhost:8000/api/make-sales-offer"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reservation_id": 5,
    "offer_amount": 850000
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/make-sales-offer';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'reservation_id' => 5,
            'offer_amount' => 850000.0,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/make-sales-offer

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

reservation_id   integer   

ID of the reservation. Example: 5

offer_amount   number   

The offered price. Example: 850000

Approve Reservation (Admin)

requires authentication

Admin approval for a reservation.

Example request:
curl --request POST \
    "http://localhost:8000/api/approve-reservation/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"approved_by\": 1,
    \"notes\": \"Verified and approved.\"
}"
const url = new URL(
    "http://localhost:8000/api/approve-reservation/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "approved_by": 1,
    "notes": "Verified and approved."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/approve-reservation/architecto';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'approved_by' => 1,
            'notes' => 'Verified and approved.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/approve-reservation/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the approve reservation. Example: architecto

reservationId   integer   

The reservation ID. Example: 5

Body Parameters

approved_by   integer   

The admin ID. Example: 1

notes   string  optional  

optional Notes for the approval. Example: Verified and approved.

Upload sales purchase photo

requires authentication

Upload signed sales purchase agreement image.

Example request:
curl --request POST \
    "http://localhost:8000/api/upload-sales-purchase" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "reservation_id=3"\
    --form "image=@/tmp/phpr31pq0cimdse933RsIQ" 
const url = new URL(
    "http://localhost:8000/api/upload-sales-purchase"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('reservation_id', '3');
body.append('image', document.querySelector('input[name="image"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/upload-sales-purchase';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'reservation_id',
                'contents' => '3'
            ],
            [
                'name' => 'image',
                'contents' => fopen('/tmp/phpr31pq0cimdse933RsIQ', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/upload-sales-purchase

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

reservation_id   integer   

ID of the reservation. Example: 3

image   file   

Image file. Example: /tmp/phpr31pq0cimdse933RsIQ

Dashboard data for reservations

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8000/api/show-reservation" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/show-reservation"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/show-reservation';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthorized",
    "status": 401
}
 

Request      

GET api/show-reservation

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

iOS - Reviews

Submit a Review

requires authentication

Allows a user to submit a review for a unit or project.

Example request:
curl --request POST \
    "http://localhost:8000/api/make-review" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"entity_id\": 12,
    \"entity_type\": \"PROPERTIES\",
    \"rating\": 4,
    \"comment\": \"Very good unit with great view\"
}"
const url = new URL(
    "http://localhost:8000/api/make-review"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "entity_id": 12,
    "entity_type": "PROPERTIES",
    "rating": 4,
    "comment": "Very good unit with great view"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/make-review';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'entity_id' => 12,
            'entity_type' => 'PROPERTIES',
            'rating' => 4,
            'comment' => 'Very good unit with great view',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": {
        "review_id": 10,
        "user_id": 2,
        "entity_id": 12,
        "entity_type": "PROPERTIES",
        "rating": 4,
        "comment": "Very good unit with great view",
        "created_at": "2025-06-25T15:00:00Z"
    },
    "error": null
}
 

Request      

POST api/make-review

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

entity_id   integer   

The ID of the unit/project being reviewed. Example: 12

entity_type   string   

The type of the entity being reviewed (e.g., "PROPERTIES", "PROJECTS"). Example: PROPERTIES

rating   integer   

Rating out of 5. Example: 4

comment   string  optional  

optional A comment from the user. Example: Very good unit with great view

iOS - Units

Search Properties

requires authentication

Search for properties using advanced filters.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/prop?keyword=Marina&bedrooms=2&price_from=1000000&price_to=5000000" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/prop"
);

const params = {
    "keyword": "Marina",
    "bedrooms": "2",
    "price_from": "1000000",
    "price_to": "5000000",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/prop';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'keyword' => 'Marina',
            'bedrooms' => '2',
            'price_from' => '1000000',
            'price_to' => '5000000',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": 200,
  "data": [...],
  "error": null
}
 

Request      

GET api/prop

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

keyword   string  optional  

Optional. Keyword to search. Example: Marina

bedrooms   integer  optional  

Optional. Number of bedrooms. Example: 2

price_from   integer  optional  

Optional. Minimum price. Example: 1000000

price_to   integer  optional  

Optional. Maximum price. Example: 5000000

Show Property Details

requires authentication

Get full details of a single property by ID.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/unit/5" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/unit/5"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/unit/5';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": {
        "property_id": 5,
        "property_name": "Luxury Apartment",
        "price": 1500000,
        "features": [
            "Balcony",
            "Sea View"
        ]
    },
    "error": null
}
 

Request      

GET api/unit/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the property. Example: 5

Show Property Details

requires authentication

Get full details of a single property by ID.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/properties/5" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/properties/5"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/properties/5';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": {
        "property_id": 5,
        "property_name": "Luxury Apartment",
        "price": 1500000,
        "features": [
            "Balcony",
            "Sea View"
        ]
    },
    "error": null
}
 

Request      

GET api/properties/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the property. Example: 5

Get All Properties

requires authentication

Retrieves all property listings with optional filters.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/getproprty?city=Dubai&area=Marina" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/getproprty"
);

const params = {
    "city": "Dubai",
    "area": "Marina",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/getproprty';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'city' => 'Dubai',
            'area' => 'Marina',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": [
        {
            "property_id": 1,
            "property_name": "Modern Villa",
            "price": 2500000,
            "bedrooms": 4,
            "location": "Dubai Marina"
        }
    ],
    "error": null
}
 

Request      

GET api/getproprty

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

city   string  optional  

Optional. Filter by city. Example: Dubai

area   string  optional  

Optional. Filter by area. Example: Marina

Get Property Features

requires authentication

Retrieves a list of available features to filter properties.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/amenities" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/amenities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/amenities';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "features": [
        "Balcony",
        "Pool",
        "Sea View"
    ]
}
 

Request      

GET api/amenities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get Property Types

requires authentication

Retrieves available property types (e.g. Apartment, Villa).

Example request:
curl --request GET \
    --get "http://localhost:8000/api/property-type" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/property-type"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/property-type';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "types": [
        "Apartment",
        "Villa",
        "Studio"
    ]
}
 

Request      

GET api/property-type

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get Property Types

requires authentication

Retrieves available property types (e.g. Apartment, Villa).

Example request:
curl --request GET \
    --get "http://localhost:8000/api/propertyype" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/propertyype"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/propertyype';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "types": [
        "Apartment",
        "Villa",
        "Studio"
    ]
}
 

Request      

GET api/propertyype

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get Developers

requires authentication

Retrieves a list of all developers.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/getdevloper" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/getdevloper"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/getdevloper';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "developers": [
        {
            "id": 1,
            "name": "EMAAR"
        }
    ]
}
 

Request      

GET api/getdevloper

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Track Unit View

requires authentication

Tracks when a user views a property.

Example request:
curl --request POST \
    "http://localhost:8000/api/track-view" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"property_id\": 8
}"
const url = new URL(
    "http://localhost:8000/api/track-view"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_id": 8
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/track-view';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'property_id' => 8,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "message": "View tracked successfully"
}
 

Request      

POST api/track-view

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

property_id   integer   

The ID of the viewed property. Example: 8

Log User Action

requires authentication

Logs an action the user has performed.

Example request:
curl --request POST \
    "http://localhost:8000/api/log-user-action" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"action\": \"viewed_property\"
}"
const url = new URL(
    "http://localhost:8000/api/log-user-action"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "action": "viewed_property"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/log-user-action';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'action' => 'viewed_property',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "logged"
}
 

Request      

POST api/log-user-action

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

action   string   

The action performed. Example: viewed_property

Get Price Range

requires authentication

Get the minimum and maximum price across all properties.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/price-range" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/price-range"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/price-range';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "min": 500000,
    "max": 10000000
}
 

Request      

GET api/price-range

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get All Locations

requires authentication

Returns a list of all unique locations.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/location-list" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/location-list"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/location-list';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "locations": [
        {
            "latitude": 25.2048,
            "longitude": 55.2708,
            "area": "Downtown"
        }
    ]
}
 

Request      

GET api/location-list

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get Property Subtypes

requires authentication

Get subtypes under a selected property type.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/property-sup-type?type_id=2" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/property-sup-type"
);

const params = {
    "type_id": "2",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/property-sup-type';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'type_id' => '2',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "subtypes": [
        "Penthouse",
        "Loft"
    ]
}
 

Request      

GET api/property-sup-type

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

type_id   integer  optional  

The ID of the property type. Example: 2

Get Filtered Property Counts

requires authentication

Returns the number of properties that match current filters.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/get-counts?city=Dubai&area=Marina" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/get-counts"
);

const params = {
    "city": "Dubai",
    "area": "Marina",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/get-counts';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'city' => 'Dubai',
            'area' => 'Marina',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "count": 45
}
 

Request      

GET api/get-counts

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

city   string  optional  

Optional. Example: Dubai

area   string  optional  

Optional. Example: Marina

Get Unit Size Range

requires authentication

Returns the smallest and largest unit size in the system.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/get-unit-range" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/get-unit-range"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/get-unit-range';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "min": 50,
    "max": 1000
}
 

Request      

GET api/get-unit-range

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Search by Keyword

requires authentication

Performs a search based on a keyword for properties or locations.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/search-by-keyword?keyword=Marina" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/search-by-keyword"
);

const params = {
    "keyword": "Marina",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/search-by-keyword';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'keyword' => 'Marina',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": 200,
    "data": [
        {
            "property_id": 12,
            "property_name": "Marina View Tower"
        }
    ]
}
 

Request      

GET api/search-by-keyword

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

keyword   string   

The keyword to search for. Example: Marina

Get Countries

requires authentication

Returns the list of countries for filtering.

Example request:
curl --request GET \
    --get "http://localhost:8000/api/get-location" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/get-location"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8000/api/get-location';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "countries": [
        "UAE",
        "Egypt",
        "Saudi Arabia"
    ]
}
 

Request      

GET api/get-location

Headers

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json