MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

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

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

You can retrieve your token by use and point "User Authentication > Get User Authentication Token".

Amenities Default

Amenities Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/amenities/details/7a1cdd72-8781-31ca-b19c-4aebdbb00728" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/amenities/details/7a1cdd72-8781-31ca-b19c-4aebdbb00728"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/amenities/details/7a1cdd72-8781-31ca-b19c-4aebdbb00728';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Amenities Detail",
    "data": {
        "id": "d2185b19-eddc-44ac-86d0-59aeefbfdaee",
        "name": "Air conditioning",
        "description": "Air conditioning",
        "category": {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        }
    }
}
 

Request   

GET api/v1/master/amenities/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Amenities. Example: 7a1cdd72-8781-31ca-b19c-4aebdbb00728

Amenities Datatables

Example request:
curl --request POST \
    "http://localhost/api/v1/master/amenities/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/amenities/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/amenities/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 173,
    "recordsFiltered": 173,
    "data": [
        {
            "id": "30e404b3-f8af-4401-9a92-7dcc7f9c9e48",
            "name": "Adapter",
            "description": "Adapter",
            "category_name": "Room Amenities",
            "category_id": "ffed46c7-290c-4dcf-a608-4cfaa423560e"
        },
        {
            "id": "d2185b19-eddc-44ac-86d0-59aeefbfdaee",
            "name": "Air conditioning",
            "description": "Air conditioning",
            "category_name": "Room Amenities",
            "category_id": "ffed46c7-290c-4dcf-a608-4cfaa423560e"
        },
        {
            "id": "2d580e6e-7376-43bc-be53-6b39181fc0a8",
            "name": "Air conditioning single room",
            "description": "Air conditioning single room",
            "category_name": "Room Amenities",
            "category_id": "ffed46c7-290c-4dcf-a608-4cfaa423560e"
        }
    ]
}
 

Request   

POST api/v1/master/amenities/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Amenities

Example request:
curl --request POST \
    "http://localhost/api/v1/master/amenities" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"consequatur\",
    \"name\": \"quasi\",
    \"description\": \"Nostrum veritatis quis temporibus harum.\"
}"
const url = new URL(
    "http://localhost/api/v1/master/amenities"
);

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

let body = {
    "property_id": "consequatur",
    "name": "quasi",
    "description": "Nostrum veritatis quis temporibus harum."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/amenities';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'consequatur',
            'name' => 'quasi',
            'description' => 'Nostrum veritatis quis temporibus harum.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update Amenities Data",
    "data": {
        "id": "8c491bb9-c8d3-4477-841e-bc9a37178d78",
        "name": "amenities test udpate",
        "description": "test amenities data udpate",
        "category": {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        }
    }
}
 

Request   

POST api/v1/master/amenities

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: consequatur

name   string     

Name of Amenities Example: quasi

description   string     

Description of Amenities Example: Nostrum veritatis quis temporibus harum.

Remove Amenities

Example request:
curl --request POST \
    "http://localhost/api/v1/master/amenities/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"delectus\"
}"
const url = new URL(
    "http://localhost/api/v1/master/amenities/remove"
);

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

let body = {
    "id": "delectus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/amenities/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'delectus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Amenities",
    "data": []
}
 

Request   

POST api/v1/master/amenities/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Amenities Example: delectus

Option Amenities Input

Example request:
curl --request POST \
    "http://localhost/api/v1/master/amenities/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"category\"
}"
const url = new URL(
    "http://localhost/api/v1/master/amenities/dropdown/list"
);

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

let body = {
    "mode": "category"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/amenities/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'category',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/master/amenities/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: category

Must be one of:
  • category

Backoffice AP Report

AP Aging List Data

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-payable/aging-list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"soluta\",
    \"reference_no\": \"sed\",
    \"start_date\": \"sed\",
    \"end_date\": \"incidunt\",
    \"page_no\": 3
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-payable/aging-list"
);

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

let body = {
    "property_id": "soluta",
    "reference_no": "sed",
    "start_date": "sed",
    "end_date": "incidunt",
    "page_no": 3
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-payable/aging-list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'soluta',
            'reference_no' => 'sed',
            'start_date' => 'sed',
            'end_date' => 'incidunt',
            'page_no' => 3,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Room Rate Detail",
    "data": {
        "option": {
            "tax_and_service_list": [
                {
                    "label": "Room Rate Tax 11 and Service 10",
                    "key": "5d80d7db-f029-44b8-9864-44f3607e2417"
                }
            ],
            "rate_plan_list": [
                {
                    "key": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "label": "Room And Breakfast Rate",
                    "start_date": "2024-08-03",
                    "end_date": "2024-08-03",
                    "min_night": 1,
                    "max_night": 1,
                    "max_adult": 2,
                    "max_pax": 4,
                    "room_rate": 100000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "rate_plan_type": {
                        "id": "2ec584a2-18a8-46ec-ac5a-51597eae3055",
                        "name": "STANDAR"
                    },
                    "tax_and_service": {
                        "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "name": "Room Rate Tax 11 and Service 10"
                    },
                    "currency": {
                        "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                        "name": "Indonesian rupiah",
                        "code": "IDR",
                        "symbol": "Rp"
                    }
                }
            ]
        },
        "detail": {
            "booking_id": "20116992-4e7d-46d6-8688-3bda65b5b782",
            "booking_room_id": "8b8f158b-263e-4244-a9d3-444b65dbe512",
            "room_type_id": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
            "room_id": "e7541067-7551-4905-b13a-e7f026a06a48",
            "arival": "2024-09-23",
            "depature": "2024-09-26",
            "rate_plan_default": {
                "id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "name": "Room And Breakfast Rate"
            },
            "tax_and_service_default": {
                "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "name": "Room Rate Tax 11 and Service 10"
            },
            "rate_list": [
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-23",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-24",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-25",
                    "rate": 200000
                }
            ],
            "total_amount": 485995.07999999996,
            "total_service": 54545.46,
            "total_tax": 59459.46,
            "total_rate": 0,
            "currency": {
                "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                "name": "Indonesian rupiah",
                "code": "IDR",
                "symbol": "Rp"
            }
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/account-payable/aging-list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: soluta

reference_no   string  optional    

no of refrence trx Example: sed

start_date   string  optional    

start date of date find type format Y-m-d. Example: sed

end_date   string  optional    

end date of date find type format Y-m-d. Example: incidunt

page_no   integer  optional    

number of pagination Example: 3

Option AP Payment

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-payable/payment/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"nihil\",
    \"mode\": \"ap_aging_list\",
    \"reference_no\": \"molestias\",
    \"start_date\": \"nulla\",
    \"end_date\": \"aliquid\",
    \"page_no\": 8,
    \"list_current_reconcile\": \"eaque\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-payable/payment/dropdownoptionlist"
);

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

let body = {
    "property_id": "nihil",
    "mode": "ap_aging_list",
    "reference_no": "molestias",
    "start_date": "nulla",
    "end_date": "aliquid",
    "page_no": 8,
    "list_current_reconcile": "eaque"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-payable/payment/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'nihil',
            'mode' => 'ap_aging_list',
            'reference_no' => 'molestias',
            'start_date' => 'nulla',
            'end_date' => 'aliquid',
            'page_no' => 8,
            'list_current_reconcile' => 'eaque',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List user Created",
    "data": [
        {
            "key": "0ad093e6-3587-4257-a118-0d6265d3347c",
            "label": "Master User Api"
        }
    ]
}
 

Request   

POST api/v1/property/backoffice/account-payable/payment/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: nihil

mode   string  optional    

The language. Example: ap_aging_list

Must be one of:
  • ap_aging_list
reference_no   string  optional    

no of refrence trx Example: molestias

start_date   string  optional    

start date of date find type format Y-m-d. Example: nulla

end_date   string  optional    

end date of date find type format Y-m-d. Example: aliquid

page_no   integer  optional    

number of pagination Example: 8

list_current_reconcile   array.  optional    

Example: eaque

Remove AP payment

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-payable/payment/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"eum\",
    \"ap_payment_id\": \"vero\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-payable/payment/remove"
);

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

let body = {
    "property_id": "eum",
    "ap_payment_id": "vero"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-payable/payment/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eum',
            'ap_payment_id' => 'vero',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/property/backoffice/account-payable/payment/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: eum

ap_payment_id   string     

uuid of Trx Property Ap Payment Example: vero

Ap payment List

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-payable/payment/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"optio\",
    \"reference_no\": \"aut\",
    \"start_date\": \"exercitationem\",
    \"end_date\": \"quisquam\",
    \"page_no\": 10
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-payable/payment/list"
);

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

let body = {
    "property_id": "optio",
    "reference_no": "aut",
    "start_date": "exercitationem",
    "end_date": "quisquam",
    "page_no": 10
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-payable/payment/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'optio',
            'reference_no' => 'aut',
            'start_date' => 'exercitationem',
            'end_date' => 'quisquam',
            'page_no' => 10,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Room Rate Detail",
    "data": {
        "option": {
            "tax_and_service_list": [
                {
                    "label": "Room Rate Tax 11 and Service 10",
                    "key": "5d80d7db-f029-44b8-9864-44f3607e2417"
                }
            ],
            "rate_plan_list": [
                {
                    "key": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "label": "Room And Breakfast Rate",
                    "start_date": "2024-08-03",
                    "end_date": "2024-08-03",
                    "min_night": 1,
                    "max_night": 1,
                    "max_adult": 2,
                    "max_pax": 4,
                    "room_rate": 100000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "rate_plan_type": {
                        "id": "2ec584a2-18a8-46ec-ac5a-51597eae3055",
                        "name": "STANDAR"
                    },
                    "tax_and_service": {
                        "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "name": "Room Rate Tax 11 and Service 10"
                    },
                    "currency": {
                        "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                        "name": "Indonesian rupiah",
                        "code": "IDR",
                        "symbol": "Rp"
                    }
                }
            ]
        },
        "detail": {
            "booking_id": "20116992-4e7d-46d6-8688-3bda65b5b782",
            "booking_room_id": "8b8f158b-263e-4244-a9d3-444b65dbe512",
            "room_type_id": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
            "room_id": "e7541067-7551-4905-b13a-e7f026a06a48",
            "arival": "2024-09-23",
            "depature": "2024-09-26",
            "rate_plan_default": {
                "id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "name": "Room And Breakfast Rate"
            },
            "tax_and_service_default": {
                "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "name": "Room Rate Tax 11 and Service 10"
            },
            "rate_list": [
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-23",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-24",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-25",
                    "rate": 200000
                }
            ],
            "total_amount": 485995.07999999996,
            "total_service": 54545.46,
            "total_tax": 59459.46,
            "total_rate": 0,
            "currency": {
                "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                "name": "Indonesian rupiah",
                "code": "IDR",
                "symbol": "Rp"
            }
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/account-payable/payment/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: optio

reference_no   string  optional    

no of refrence trx Example: aut

start_date   string  optional    

start date of date find type format Y-m-d. Example: exercitationem

end_date   string  optional    

end date of date find type format Y-m-d. Example: quisquam

page_no   integer  optional    

number of pagination Example: 10

Add AP Journal Manual

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-payable/journal/manual" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"repudiandae\",
    \"remark\": \"omnis\",
    \"trx_date\": \"cum\",
    \"list_journal\": \"deleniti\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-payable/journal/manual"
);

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

let body = {
    "property_id": "repudiandae",
    "remark": "omnis",
    "trx_date": "cum",
    "list_journal": "deleniti"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-payable/journal/manual';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'repudiandae',
            'remark' => 'omnis',
            'trx_date' => 'cum',
            'list_journal' => 'deleniti',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/property/backoffice/account-payable/journal/manual

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: repudiandae

remark   string     

remark of AP Payment Example: omnis

trx_date   string  optional    

start date of date find type format Y-m-d. Example: cum

list_journal   array.  optional    

Example: deleniti

Option AP Payment

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-payable/journal/manual/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"est\",
    \"mode\": \"coa\",
    \"coa_search\": \"possimus\",
    \"default_value\": \"sit\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-payable/journal/manual/dropdownoptionlist"
);

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

let body = {
    "property_id": "est",
    "mode": "coa",
    "coa_search": "possimus",
    "default_value": "sit"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-payable/journal/manual/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'est',
            'mode' => 'coa',
            'coa_search' => 'possimus',
            'default_value' => 'sit',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List user Created",
    "data": [
        {
            "key": "0ad093e6-3587-4257-a118-0d6265d3347c",
            "label": "Master User Api"
        }
    ]
}
 

Request   

POST api/v1/property/backoffice/account-payable/journal/manual/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: est

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
  • journal_type
coa_search   string     

name of coa finding Example: possimus

default_value   string     

name of coa default value Example: sit

AP Journal List

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-payable/journal/manual/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"dicta\",
    \"start_date\": \"voluptatem\",
    \"end_date\": \"dolores\",
    \"page_no\": 8
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-payable/journal/manual/list"
);

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

let body = {
    "property_id": "dicta",
    "start_date": "voluptatem",
    "end_date": "dolores",
    "page_no": 8
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-payable/journal/manual/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'dicta',
            'start_date' => 'voluptatem',
            'end_date' => 'dolores',
            'page_no' => 8,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Room Rate Detail",
    "data": {
        "option": {
            "tax_and_service_list": [
                {
                    "label": "Room Rate Tax 11 and Service 10",
                    "key": "5d80d7db-f029-44b8-9864-44f3607e2417"
                }
            ],
            "rate_plan_list": [
                {
                    "key": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "label": "Room And Breakfast Rate",
                    "start_date": "2024-08-03",
                    "end_date": "2024-08-03",
                    "min_night": 1,
                    "max_night": 1,
                    "max_adult": 2,
                    "max_pax": 4,
                    "room_rate": 100000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "rate_plan_type": {
                        "id": "2ec584a2-18a8-46ec-ac5a-51597eae3055",
                        "name": "STANDAR"
                    },
                    "tax_and_service": {
                        "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "name": "Room Rate Tax 11 and Service 10"
                    },
                    "currency": {
                        "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                        "name": "Indonesian rupiah",
                        "code": "IDR",
                        "symbol": "Rp"
                    }
                }
            ]
        },
        "detail": {
            "booking_id": "20116992-4e7d-46d6-8688-3bda65b5b782",
            "booking_room_id": "8b8f158b-263e-4244-a9d3-444b65dbe512",
            "room_type_id": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
            "room_id": "e7541067-7551-4905-b13a-e7f026a06a48",
            "arival": "2024-09-23",
            "depature": "2024-09-26",
            "rate_plan_default": {
                "id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "name": "Room And Breakfast Rate"
            },
            "tax_and_service_default": {
                "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "name": "Room Rate Tax 11 and Service 10"
            },
            "rate_list": [
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-23",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-24",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-25",
                    "rate": 200000
                }
            ],
            "total_amount": 485995.07999999996,
            "total_service": 54545.46,
            "total_tax": 59459.46,
            "total_rate": 0,
            "currency": {
                "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                "name": "Indonesian rupiah",
                "code": "IDR",
                "symbol": "Rp"
            }
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/account-payable/journal/manual/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: dicta

start_date   string  optional    

start date of date find type format Y-m-d. Example: voluptatem

end_date   string  optional    

end date of date find type format Y-m-d. Example: dolores

page_no   integer  optional    

number of pagination Example: 8

Backoffice Ar Report

Ar Aging List Data

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-receivable/aging-list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"eligendi\",
    \"reference_no\": \"aut\",
    \"start_date\": \"non\",
    \"end_date\": \"excepturi\",
    \"page_no\": 13
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-receivable/aging-list"
);

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

let body = {
    "property_id": "eligendi",
    "reference_no": "aut",
    "start_date": "non",
    "end_date": "excepturi",
    "page_no": 13
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-receivable/aging-list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eligendi',
            'reference_no' => 'aut',
            'start_date' => 'non',
            'end_date' => 'excepturi',
            'page_no' => 13,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get AR Report List",
    "data": {
        "record": [
            {
                "id": "984871ae-59f6-4613-8e32-86c656244da6",
                "property": {
                    "id": "65c5c446-abbe-46ee-aa28-253cc9b680a8",
                    "name": "Hotel Dummy"
                },
                "trx_type": {
                    "id": "68691665-adf8-42e7-b4a3-6900434eaf29",
                    "name": "Account Receivable",
                    "code": "AR"
                },
                "reference_no": "TRXAR-20241100001",
                "trx_date": "2024-11-13 10:53:09",
                "remark": "Booking Payment : BOOKPAY-202411/00001",
                "is_reconcile": false,
                "total_debit": 100000,
                "total_credit": 100000,
                "total_balance": 0,
                "user_created": {
                    "id": "facddbf2-4010-455c-8176-1b04c897cec0",
                    "name": "Master User Api"
                },
                "user_updated": [],
                "created_at": "2024-11-13T03:02:05.000000Z",
                "updated_at": "2024-11-13T03:02:05.000000Z",
                "journal_list": [
                    {
                        "id": "ef1cb9b9-6bdb-45cb-bb56-1d6f37aa6b4e",
                        "coa": {
                            "id": "355fccc2-2f25-4a95-a01d-126ff28049c8",
                            "name": "A/R DEBIT",
                            "code": "120-00-006"
                        },
                        "ref": {
                            "refrence_type": "booking-payment",
                            "id": "42a5b4ed-569d-40f4-9a0e-6a3ce5386341",
                            "booking_id": "2cea54b4-038b-4818-95de-b7307577d684",
                            "booking_room_id": "b6fcbb09-51a6-4682-a483-8094f6c919c9",
                            "payment_option_id": "cf82a5b9-bbc3-412e-9b54-7cc142e9775d",
                            "booking_payment_no": "BOOKPAY-202411/00001",
                            "payment_date": "2024-11-13 10:53:09",
                            "amount": 100000,
                            "remark": "test payment",
                            "created_at": "2024-11-13T02:54:57.000000Z",
                            "updated_at": "2024-11-13T03:02:05.000000Z",
                            "created_user_id": null,
                            "updated_user_id": null,
                            "is_close_trx": true
                        },
                        "remark": "BOOKPAY-202411/00001 | Debit Cards",
                        "amount": 100000,
                        "journal_type": {
                            "key": "1",
                            "label": "Debit"
                        }
                    },
                    {
                        "id": "33427e44-ed40-42b3-a905-2e0602a49b43",
                        "coa": {
                            "id": "99869b2c-d662-40aa-8533-d5dd053886d7",
                            "name": "A/R BCA Card",
                            "code": "120-00-005"
                        },
                        "ref": {
                            "refrence_type": "booking-payment-methods",
                            "id": "b28f36c6-58d4-4d58-ab60-f1b5168721be",
                            "booking_payment_id": "42a5b4ed-569d-40f4-9a0e-6a3ce5386341",
                            "payment_option_method_id": null,
                            "amount": 100000,
                            "remark": null,
                            "created_at": "2024-11-13T02:54:57.000000Z",
                            "updated_at": "2024-11-13T02:54:57.000000Z"
                        },
                        "remark": "BOOKPAY-202411/00001 | Pay Methods :BCA",
                        "amount": 100000,
                        "journal_type": {
                            "key": "2",
                            "label": "Credit"
                        }
                    }
                ]
            }
        ],
        "total_page": 1,
        "current_page": 1
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/account-receivable/aging-list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: eligendi

reference_no   string  optional    

no of refrence trx Example: aut

start_date   string  optional    

start date of date find type format Y-m-d. Example: non

end_date   string  optional    

end date of date find type format Y-m-d. Example: excepturi

page_no   integer  optional    

number of pagination Example: 13

Option AR Payment

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-receivable/payment/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quas\",
    \"mode\": \"ar_aging_list\",
    \"reference_no\": \"inventore\",
    \"start_date\": \"harum\",
    \"end_date\": \"ab\",
    \"page_no\": 11,
    \"list_current_reconcile\": \"mollitia\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-receivable/payment/dropdownoptionlist"
);

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

let body = {
    "property_id": "quas",
    "mode": "ar_aging_list",
    "reference_no": "inventore",
    "start_date": "harum",
    "end_date": "ab",
    "page_no": 11,
    "list_current_reconcile": "mollitia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-receivable/payment/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quas',
            'mode' => 'ar_aging_list',
            'reference_no' => 'inventore',
            'start_date' => 'harum',
            'end_date' => 'ab',
            'page_no' => 11,
            'list_current_reconcile' => 'mollitia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List user Created",
    "data": [
        {
            "key": "0ad093e6-3587-4257-a118-0d6265d3347c",
            "label": "Master User Api"
        }
    ]
}
 

Request   

POST api/v1/property/backoffice/account-receivable/payment/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: quas

mode   string  optional    

The language. Example: ar_aging_list

Must be one of:
  • ar_aging_list
reference_no   string  optional    

no of refrence trx Example: inventore

start_date   string  optional    

start date of date find type format Y-m-d. Example: harum

end_date   string  optional    

end date of date find type format Y-m-d. Example: ab

page_no   integer  optional    

number of pagination Example: 11

list_current_reconcile   array.  optional    

Example: mollitia

Remove AR payment

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-receivable/payment/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"tempora\",
    \"ar_payment_id\": \"error\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-receivable/payment/remove"
);

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

let body = {
    "property_id": "tempora",
    "ar_payment_id": "error"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-receivable/payment/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'tempora',
            'ar_payment_id' => 'error',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/property/backoffice/account-receivable/payment/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: tempora

ar_payment_id   string     

uuid of Trx Property Ar Payment Example: error

Ar payment List

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-receivable/payment/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"perferendis\",
    \"reference_no\": \"optio\",
    \"start_date\": \"vero\",
    \"end_date\": \"deleniti\",
    \"page_no\": 14
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-receivable/payment/list"
);

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

let body = {
    "property_id": "perferendis",
    "reference_no": "optio",
    "start_date": "vero",
    "end_date": "deleniti",
    "page_no": 14
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-receivable/payment/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'perferendis',
            'reference_no' => 'optio',
            'start_date' => 'vero',
            'end_date' => 'deleniti',
            'page_no' => 14,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Room Rate Detail",
    "data": {
        "option": {
            "tax_and_service_list": [
                {
                    "label": "Room Rate Tax 11 and Service 10",
                    "key": "5d80d7db-f029-44b8-9864-44f3607e2417"
                }
            ],
            "rate_plan_list": [
                {
                    "key": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "label": "Room And Breakfast Rate",
                    "start_date": "2024-08-03",
                    "end_date": "2024-08-03",
                    "min_night": 1,
                    "max_night": 1,
                    "max_adult": 2,
                    "max_pax": 4,
                    "room_rate": 100000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "rate_plan_type": {
                        "id": "2ec584a2-18a8-46ec-ac5a-51597eae3055",
                        "name": "STANDAR"
                    },
                    "tax_and_service": {
                        "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "name": "Room Rate Tax 11 and Service 10"
                    },
                    "currency": {
                        "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                        "name": "Indonesian rupiah",
                        "code": "IDR",
                        "symbol": "Rp"
                    }
                }
            ]
        },
        "detail": {
            "booking_id": "20116992-4e7d-46d6-8688-3bda65b5b782",
            "booking_room_id": "8b8f158b-263e-4244-a9d3-444b65dbe512",
            "room_type_id": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
            "room_id": "e7541067-7551-4905-b13a-e7f026a06a48",
            "arival": "2024-09-23",
            "depature": "2024-09-26",
            "rate_plan_default": {
                "id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "name": "Room And Breakfast Rate"
            },
            "tax_and_service_default": {
                "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "name": "Room Rate Tax 11 and Service 10"
            },
            "rate_list": [
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-23",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-24",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-25",
                    "rate": 200000
                }
            ],
            "total_amount": 485995.07999999996,
            "total_service": 54545.46,
            "total_tax": 59459.46,
            "total_rate": 0,
            "currency": {
                "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                "name": "Indonesian rupiah",
                "code": "IDR",
                "symbol": "Rp"
            }
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/account-receivable/payment/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: perferendis

reference_no   string  optional    

no of refrence trx Example: optio

start_date   string  optional    

start date of date find type format Y-m-d. Example: vero

end_date   string  optional    

end date of date find type format Y-m-d. Example: deleniti

page_no   integer  optional    

number of pagination Example: 14

Add AR Journal Manual

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-receivable/journal/manual" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"vel\",
    \"remark\": \"eum\",
    \"trx_date\": \"repellat\",
    \"list_journal\": \"voluptatem\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-receivable/journal/manual"
);

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

let body = {
    "property_id": "vel",
    "remark": "eum",
    "trx_date": "repellat",
    "list_journal": "voluptatem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-receivable/journal/manual';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'vel',
            'remark' => 'eum',
            'trx_date' => 'repellat',
            'list_journal' => 'voluptatem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/property/backoffice/account-receivable/journal/manual

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: vel

remark   string     

remark of AR Payment Example: eum

trx_date   string  optional    

start date of date find type format Y-m-d. Example: repellat

list_journal   array.  optional    

Example: voluptatem

Option AR Payment

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-receivable/journal/manual/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"molestiae\",
    \"mode\": \"coa\",
    \"coa_search\": \"architecto\",
    \"default_value\": \"accusantium\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-receivable/journal/manual/dropdownoptionlist"
);

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

let body = {
    "property_id": "molestiae",
    "mode": "coa",
    "coa_search": "architecto",
    "default_value": "accusantium"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-receivable/journal/manual/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'molestiae',
            'mode' => 'coa',
            'coa_search' => 'architecto',
            'default_value' => 'accusantium',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List user Created",
    "data": [
        {
            "key": "0ad093e6-3587-4257-a118-0d6265d3347c",
            "label": "Master User Api"
        }
    ]
}
 

Request   

POST api/v1/property/backoffice/account-receivable/journal/manual/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: molestiae

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
  • journal_type
coa_search   string     

name of coa finding Example: architecto

default_value   string     

name of coa default value Example: accusantium

Ar Journal List

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/account-receivable/journal/manual/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"fugit\",
    \"start_date\": \"cumque\",
    \"end_date\": \"eius\",
    \"page_no\": 9
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/account-receivable/journal/manual/list"
);

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

let body = {
    "property_id": "fugit",
    "start_date": "cumque",
    "end_date": "eius",
    "page_no": 9
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/account-receivable/journal/manual/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'fugit',
            'start_date' => 'cumque',
            'end_date' => 'eius',
            'page_no' => 9,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Room Rate Detail",
    "data": {
        "option": {
            "tax_and_service_list": [
                {
                    "label": "Room Rate Tax 11 and Service 10",
                    "key": "5d80d7db-f029-44b8-9864-44f3607e2417"
                }
            ],
            "rate_plan_list": [
                {
                    "key": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "label": "Room And Breakfast Rate",
                    "start_date": "2024-08-03",
                    "end_date": "2024-08-03",
                    "min_night": 1,
                    "max_night": 1,
                    "max_adult": 2,
                    "max_pax": 4,
                    "room_rate": 100000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "rate_plan_type": {
                        "id": "2ec584a2-18a8-46ec-ac5a-51597eae3055",
                        "name": "STANDAR"
                    },
                    "tax_and_service": {
                        "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "name": "Room Rate Tax 11 and Service 10"
                    },
                    "currency": {
                        "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                        "name": "Indonesian rupiah",
                        "code": "IDR",
                        "symbol": "Rp"
                    }
                }
            ]
        },
        "detail": {
            "booking_id": "20116992-4e7d-46d6-8688-3bda65b5b782",
            "booking_room_id": "8b8f158b-263e-4244-a9d3-444b65dbe512",
            "room_type_id": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
            "room_id": "e7541067-7551-4905-b13a-e7f026a06a48",
            "arival": "2024-09-23",
            "depature": "2024-09-26",
            "rate_plan_default": {
                "id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "name": "Room And Breakfast Rate"
            },
            "tax_and_service_default": {
                "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "name": "Room Rate Tax 11 and Service 10"
            },
            "rate_list": [
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-23",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-24",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-25",
                    "rate": 200000
                }
            ],
            "total_amount": 485995.07999999996,
            "total_service": 54545.46,
            "total_tax": 59459.46,
            "total_rate": 0,
            "currency": {
                "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                "name": "Indonesian rupiah",
                "code": "IDR",
                "symbol": "Rp"
            }
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/account-receivable/journal/manual/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: fugit

start_date   string  optional    

start date of date find type format Y-m-d. Example: cumque

end_date   string  optional    

end date of date find type format Y-m-d. Example: eius

page_no   integer  optional    

number of pagination Example: 9

Backoffice Bill Type Coa

Bill Type Coa Details

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/bill-type-coa/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"qui\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/bill-type-coa/detail"
);

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

let body = {
    "property_id": "qui"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/bill-type-coa/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'qui',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Property Bill Type detail",
    "data": [
        {
            "id": "5007a8bf-a2eb-4254-abd7-6f1417074cfb",
            "name": "Room Charge",
            "property_id": "95234a2e-68a5-499f-b174-bf7fda22c1c2",
            "coa_id": null,
            "is_active": false
        },
        {
            "id": "acf9d3eb-685b-4009-8735-dd772be8c422",
            "name": "Extra Charge",
            "property_id": "95234a2e-68a5-499f-b174-bf7fda22c1c2",
            "coa_id": null,
            "is_active": false
        },
        {
            "id": "11199edd-374b-45f7-9565-69623d1d5659",
            "name": "Others",
            "property_id": "95234a2e-68a5-499f-b174-bf7fda22c1c2",
            "coa_id": null,
            "is_active": false
        }
    ]
}
 

Request   

POST api/v1/backoffice/bill-type-coa/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Bill Type Example: qui

Update Bill Type COA

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/bill-type-coa" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"list_bill_type\": [
        {
            \"id\": \"5007a8bf-a2eb-4254-abd7-6f1417074cfb\",
            \"name\": \"Room Charge\",
            \"property_id\": \"95234a2e-68a5-499f-b174-bf7fda22c1c2\",
            \"coa_id\": null,
            \"is_active\": false
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/bill-type-coa"
);

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

let body = {
    "list_bill_type": [
        {
            "id": "5007a8bf-a2eb-4254-abd7-6f1417074cfb",
            "name": "Room Charge",
            "property_id": "95234a2e-68a5-499f-b174-bf7fda22c1c2",
            "coa_id": null,
            "is_active": false
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/bill-type-coa';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (\Symfony\Component\VarExporter\Internal\Registry::$prototypes['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
            ],
            null,
            [
                'stdClass' => [
                    'id' => [
                        '5007a8bf-a2eb-4254-abd7-6f1417074cfb',
                    ],
                    'name' => [
                        'Room Charge',
                    ],
                    'property_id' => [
                        '95234a2e-68a5-499f-b174-bf7fda22c1c2',
                    ],
                    'coa_id' => [
                        null,
                    ],
                    'is_active' => [
                        false,
                    ],
                ],
            ],
            [
                'list_bill_type' => [
                    $o[0],
                ],
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room type",
    "data": {
        "id": "3696cda0-035d-4827-a406-c14e6fcdf264",
        "name": "Room Type baru",
        "description": "Room Type Baru Description",
        "position_order": 1,
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
        "amenities": [
            {
                "category_id": "37b32a73-0c29-4d5a-80bd-1717901d015e",
                "category_name": "Room Amenities",
                "amenities_list": [
                    {
                        "id": "78e7914b-21b5-4bdd-b461-2d3cd72b8f67",
                        "name": "Adapter",
                        "is_select": false
                    },
                    {
                        "id": "05300f15-884d-409e-a396-536929d3cbcf",
                        "name": "Air conditioning",
                        "is_select": true
                    },
                    {
                        "id": "a7d9dedc-cf0b-4d68-9a48-37e14461fdf4",
                        "name": "Air conditioning single room",
                        "is_select": false
                    },
                    {
                        "id": "fd1f09c8-0aca-4f66-b071-cc030a76b36b",
                        "name": "Balcony",
                        "is_select": true
                    },
                    {
                        "id": "dba356b4-5d41-4546-84cf-b08f6585f457",
                        "name": "Bathtub",
                        "is_select": false
                    },
                    {
                        "id": "252b28a2-6add-4a37-85c5-d22598b5e2a1",
                        "name": "Carpeted",
                        "is_select": false
                    },
                    {
                        "id": "f214eca9-262c-4307-979d-3e4bd8de39b4",
                        "name": "Childrens cribs",
                        "is_select": true
                    },
                    {
                        "id": "dc05d273-baec-48b0-acdf-559c39a35f61",
                        "name": "Cleaning products",
                        "is_select": false
                    },
                    {
                        "id": "404dd22a-26e0-4931-b3b2-99333f1e968e",
                        "name": "Clothes rack",
                        "is_select": false
                    },
                    {
                        "id": "3c23f5bb-59ee-4f48-b88a-be1d94681df6",
                        "name": "Desk",
                        "is_select": false
                    },
                    {
                        "id": "bc0c5784-2809-4904-b4e0-bab8b9e1e3d0",
                        "name": "Dryer",
                        "is_select": true
                    },
                    {
                        "id": "99fedee9-ecef-4875-81ce-2a4b9f16cd0a",
                        "name": "Drying rack for clothing",
                        "is_select": false
                    },
                    {
                        "id": "7a8eee4a-155a-4214-b105-68705f2e381b",
                        "name": "Electric blankets",
                        "is_select": false
                    },
                    {
                        "id": "b7757b5e-fa8e-465b-8c3e-f481ed0aba66",
                        "name": "Electric kettle",
                        "is_select": false
                    },
                    {
                        "id": "ce91b7d8-afa1-466d-bfd2-cbc01d107aa8",
                        "name": "Extra long beds (> 6.5 ft)",
                        "is_select": false
                    },
                    {
                        "id": "d0de7cd0-bf27-416f-9317-d65ede231d2f",
                        "name": "Fan",
                        "is_select": false
                    },
                    {
                        "id": "ef8e700d-34cd-46f3-ad83-e40192ff2a8f",
                        "name": "Feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "68d1483f-999a-4155-b2e4-86e0edf8c3ab",
                        "name": "Fireplace",
                        "is_select": false
                    },
                    {
                        "id": "9c1b1920-b3c0-4ce6-8e76-e9a41ceb3b28",
                        "name": "Flat-screen TV",
                        "is_select": false
                    },
                    {
                        "id": "206d34a2-716d-4f08-8895-b18a152c5c5c",
                        "name": "Fold-up bed",
                        "is_select": false
                    },
                    {
                        "id": "feb09933-4210-4e53-a083-60e0ff5f2076",
                        "name": "Hardwood or parquet floors",
                        "is_select": false
                    },
                    {
                        "id": "2d83428c-67f0-424c-b3cf-7b64c7bbde4d",
                        "name": "Heated pool",
                        "is_select": false
                    },
                    {
                        "id": "0e457b6c-27f9-4170-9174-ddcc4a44dbbc",
                        "name": "Heating",
                        "is_select": false
                    },
                    {
                        "id": "a91728b8-4c62-4644-bfc3-8673cdd06c5e",
                        "name": "Hot tub",
                        "is_select": false
                    },
                    {
                        "id": "96fc900e-041f-454c-9aae-45dd06b9a142",
                        "name": "Hypoallergenic",
                        "is_select": false
                    },
                    {
                        "id": "daeea86a-79c0-45b8-81a7-e76333134b3d",
                        "name": "Hypoallergenic pillow",
                        "is_select": false
                    },
                    {
                        "id": "9f577ec2-34e9-4d5c-87df-868bb8ffae4d",
                        "name": "Infinity Pool",
                        "is_select": false
                    },
                    {
                        "id": "0897bc60-47b1-46dd-a822-2bcaeb07d8e8",
                        "name": "Interconnecting rooms",
                        "is_select": false
                    },
                    {
                        "id": "a662f19e-419c-41a9-a0a0-b0c2f00f24dd",
                        "name": "Iron",
                        "is_select": false
                    },
                    {
                        "id": "46a2ee4a-c711-4dd2-a99d-ce6c6ebf3a31",
                        "name": "Ironing facilities",
                        "is_select": false
                    },
                    {
                        "id": "6107ec89-e45a-43f5-ac25-598f20535951",
                        "name": "Mosquito net",
                        "is_select": false
                    },
                    {
                        "id": "1818a164-cfd0-435a-8398-f7ddc11401f4",
                        "name": "Non-feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "1ca6771c-37ae-4ff6-84d0-4277f27365b0",
                        "name": "Pajamas",
                        "is_select": false
                    },
                    {
                        "id": "3e611ae2-edf5-4473-ae7b-c6ab2d6ce946",
                        "name": "Plunge Pool",
                        "is_select": false
                    },
                    {
                        "id": "a13e0b46-0d5e-4503-bc11-af25b568609a",
                        "name": "Pool cover",
                        "is_select": false
                    },
                    {
                        "id": "86854195-b984-415f-925e-bee9172388dc",
                        "name": "Pool towels",
                        "is_select": false
                    },
                    {
                        "id": "b5687b9d-65b2-4d1a-aa22-b2ef72a26685",
                        "name": "Pool with a view",
                        "is_select": false
                    },
                    {
                        "id": "bc8c3d71-115f-45ff-8d98-6d6c7c1ad6b7",
                        "name": "Private pool",
                        "is_select": false
                    },
                    {
                        "id": "7ba1a081-d56b-4608-9d2e-1110fa4cd601",
                        "name": "Rooftop pool",
                        "is_select": false
                    },
                    {
                        "id": "b808b875-492d-458d-a6bc-720372622767",
                        "name": "Safe",
                        "is_select": false
                    },
                    {
                        "id": "d990b235-5121-4b63-ad8c-5ee1721196b4",
                        "name": "Saltwater pool",
                        "is_select": false
                    },
                    {
                        "id": "b38466d0-9e59-4736-8204-0b01d379faa0",
                        "name": "Shallow end",
                        "is_select": false
                    },
                    {
                        "id": "bc33df3d-9f0f-425b-a0df-46ab53e7aa83",
                        "name": "Sitting area",
                        "is_select": false
                    },
                    {
                        "id": "441d79fb-82a4-458a-8bd2-8f91f40f5e2b",
                        "name": "Socket near the bed",
                        "is_select": false
                    },
                    {
                        "id": "30d5b8ec-8f2e-4fc6-899a-5714a9d7be63",
                        "name": "Sofa",
                        "is_select": false
                    },
                    {
                        "id": "06b027ce-138e-4f61-bc25-10165e24cbfd",
                        "name": "Sofa bed",
                        "is_select": false
                    },
                    {
                        "id": "f2d7c256-4b44-48bf-a2a0-04917f773784",
                        "name": "Soundproof",
                        "is_select": false
                    },
                    {
                        "id": "f39be007-f9d0-413a-9434-335578838ac8",
                        "name": "Suit press",
                        "is_select": false
                    },
                    {
                        "id": "892e321b-5422-48d7-8c1d-950486a1ea57",
                        "name": "Tile/Marble floor",
                        "is_select": false
                    },
                    {
                        "id": "7bdbc02c-4cf0-487a-9faa-bbe25447795a",
                        "name": "Toilet paper",
                        "is_select": false
                    },
                    {
                        "id": "5f84000a-c63d-4234-93c7-dcf36434b1ff",
                        "name": "Towels",
                        "is_select": false
                    },
                    {
                        "id": "b8937943-2b2c-4818-8943-cea8f0754fe6",
                        "name": "Trash cans",
                        "is_select": false
                    },
                    {
                        "id": "26ad03ba-c55c-489a-a550-92f19982df53",
                        "name": "View",
                        "is_select": false
                    },
                    {
                        "id": "ec55c805-84d8-4457-b5b8-fec22adf8ec6",
                        "name": "Walk-in closet",
                        "is_select": false
                    },
                    {
                        "id": "8d560293-82fd-4135-99df-761aa540dbb7",
                        "name": "Wardrobe or closet",
                        "is_select": false
                    },
                    {
                        "id": "b0d7bf28-75d2-4f0a-8ad9-baabe2e50608",
                        "name": "Washing machine",
                        "is_select": false
                    },
                    {
                        "id": "17d5df9c-0bb9-4390-8177-9dc05b0ea92c",
                        "name": "Yukata",
                        "is_select": false
                    },
                    {
                        "id": "336a2aa5-fb92-432e-9d15-496f0638fd60",
                        "name": "Air purifiers",
                        "is_select": false
                    },
                    {
                        "id": "f822da69-c6d3-439d-aab2-58c28e09dc39",
                        "name": "Hand sanitizer",
                        "is_select": false
                    },
                    {
                        "id": "932710b6-8c27-4184-b3b3-7df86e2fb36f",
                        "name": "Bolsters",
                        "is_select": false
                    }
                ]
            }
        ]
    }
}
 

Request   

POST api/v1/backoffice/bill-type-coa

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

list_bill_type   object[]     

listofobject data.

Option Property Bill Type Input

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/bill-type-coa/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"coa\",
    \"property_id\": \"est\",
    \"coa_search\": \"facilis\",
    \"default_value\": \"cumque\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/bill-type-coa/dropdown/list"
);

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

let body = {
    "mode": "coa",
    "property_id": "est",
    "coa_search": "facilis",
    "default_value": "cumque"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/bill-type-coa/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'coa',
            'property_id' => 'est',
            'coa_search' => 'facilis',
            'default_value' => 'cumque',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart of Account Founds",
    "data": [
        {
            "key": null,
            "label": "1200 | ACCOUNT RECEIVABLE",
            "sub": [
                {
                    "key": "3c94c024-c6a6-4207-b091-d6fb893e8396",
                    "label": "--120-00-009 | A/R Other Credit Cards"
                }
            ]
        }
    ]
}
 

Request   

POST api/v1/backoffice/bill-type-coa/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
property_id   string     

uuid of Room Type Example: est

coa_search   string     

name of coa finding Example: facilis

default_value   string     

name of coa default value Example: cumque

Backoffice Discount Option

Detail Discount Option

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/discount-options/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"qui\",
    \"discount_option_id\": \"omnis\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/discount-options/detail"
);

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

let body = {
    "property_id": "qui",
    "discount_option_id": "omnis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/discount-options/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'qui',
            'discount_option_id' => 'omnis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Rate Plan detail",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash",
        "property": {
            "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "name": "Cash"
        }
    }
}
 

Request   

POST api/v1/backoffice/discount-options/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property id Example: qui

discount_option_id   string     

uuid of Discount Option Example: omnis

Datatables Discount Options

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/discount-options/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"velit\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/discount-options/datatables"
);

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

let body = {
    "property_id": "velit"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/discount-options/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'velit',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 1,
    "recordsFiltered": 1,
    "data": [
        {
            "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "property_id": "e1e5d4a8-43e5-4944-b2ff-41a28a6687fe",
            "name": "Cash",
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"payment_options\" where \"property_id\" = ? and \"payment_options\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 1.33
        },
        {
            "query": "select * from \"payment_options\" where \"property_id\" = ? and \"payment_options\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 0.44
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.67
        }
    ],
    "input": {
        "property_id": "e1e5d4a8-43e5-4944-b2ff-41a28a6687fe"
    }
}
 

Request   

POST api/v1/backoffice/discount-options/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: velit

Update Discount Options

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/discount-options" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"officiis\",
    \"property_id\": \"perspiciatis\",
    \"coa_id\": \"quis\",
    \"department_id\": \"error\",
    \"title\": \"illum\",
    \"remark\": \"sed\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/discount-options"
);

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

let body = {
    "id": "officiis",
    "property_id": "perspiciatis",
    "coa_id": "quis",
    "department_id": "error",
    "title": "illum",
    "remark": "sed"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/discount-options';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'officiis',
            'property_id' => 'perspiciatis',
            'coa_id' => 'quis',
            'department_id' => 'error',
            'title' => 'illum',
            'remark' => 'sed',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/backoffice/discount-options

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string  optional    

uuid of Property required if you want update Example: officiis

property_id   string     

uuid of Property Example: perspiciatis

coa_id   string     

uuid of Chart of Account Payment Method Example: quis

department_id   string     

uuid of Department Example: error

title   string     

title of Discount Example: illum

remark   string  optional    

remark of discount can nullable Example: sed

Remove Discount Option

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/discount-options/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"vel\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/discount-options/remove"
);

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

let body = {
    "id": "vel"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/discount-options/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'vel',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/backoffice/discount-options/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Discount Options Example: vel

Option Discount Input

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/discount-options/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"coa\",
    \"property_id\": \"dolorem\",
    \"coa_search\": \"reiciendis\",
    \"default_value\": \"ipsum\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/discount-options/dropdown/list"
);

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

let body = {
    "mode": "coa",
    "property_id": "dolorem",
    "coa_search": "reiciendis",
    "default_value": "ipsum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/discount-options/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'coa',
            'property_id' => 'dolorem',
            'coa_search' => 'reiciendis',
            'default_value' => 'ipsum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart of Account Founds",
    "data": [
        {
            "key": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "label": "Cash"
        }
    ]
}
 

Request   

POST api/v1/backoffice/discount-options/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
  • department
property_id   string     

uuid of Room Type Example: dolorem

coa_search   string     

name of coa finding Example: reiciendis

default_value   string     

name of coa default value Example: ipsum

Backoffice Payment Method

Detail Payment Method

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-option-method/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"payment_option_id\": \"nihil\",
    \"payment_method_id\": \"nemo\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-option-method/detail"
);

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

let body = {
    "payment_option_id": "nihil",
    "payment_method_id": "nemo"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-option-method/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'payment_option_id' => 'nihil',
            'payment_method_id' => 'nemo',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Rate Plan detail",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash",
        "property": {
            "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "name": "Cash"
        }
    }
}
 

Request   

POST api/v1/backoffice/payment-option-method/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

payment_option_id   string     

uuid of Payment Option Example: nihil

payment_method_id   string     

uuid of Payment Method Example: nemo

Datatables Payment Method

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-option-method/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"consequatur\",
    \"payment_option_id\": \"earum\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-option-method/datatables"
);

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

let body = {
    "property_id": "consequatur",
    "payment_option_id": "earum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-option-method/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'consequatur',
            'payment_option_id' => 'earum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 1,
    "recordsFiltered": 1,
    "data": [
        {
            "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "property_id": "e1e5d4a8-43e5-4944-b2ff-41a28a6687fe",
            "name": "Cash",
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"payment_options\" where \"property_id\" = ? and \"payment_options\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 1.33
        },
        {
            "query": "select * from \"payment_options\" where \"property_id\" = ? and \"payment_options\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 0.44
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.67
        }
    ],
    "input": {
        "property_id": "e1e5d4a8-43e5-4944-b2ff-41a28a6687fe"
    }
}
 

Request   

POST api/v1/backoffice/payment-option-method/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: consequatur

payment_option_id   string     

uuid of Payment Options Example: earum

Create / Update Payment Options

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-option-method" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"culpa\",
    \"payment_option_id\": \"laudantium\",
    \"coa_id\": \"expedita\",
    \"name\": \"quo\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-option-method"
);

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

let body = {
    "property_id": "culpa",
    "payment_option_id": "laudantium",
    "coa_id": "expedita",
    "name": "quo"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-option-method';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'culpa',
            'payment_option_id' => 'laudantium',
            'coa_id' => 'expedita',
            'name' => 'quo',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/backoffice/payment-option-method

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: culpa

payment_option_id   string     

uuid of Payment Option Example: laudantium

coa_id   string     

uuid of Chart of Account Payment Method Example: expedita

name   string     

Name Payment Method Example: quo

Remove Payment Method

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-option-method/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"fugit\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-option-method/remove"
);

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

let body = {
    "id": "fugit"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-option-method/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'fugit',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/backoffice/payment-option-method/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Payment Method Example: fugit

Option Payment Method Input

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-option-method/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"coa\",
    \"property_id\": \"reiciendis\",
    \"coa_search\": \"vitae\",
    \"default_value\": \"non\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-option-method/dropdown/list"
);

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

let body = {
    "mode": "coa",
    "property_id": "reiciendis",
    "coa_search": "vitae",
    "default_value": "non"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-option-method/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'coa',
            'property_id' => 'reiciendis',
            'coa_search' => 'vitae',
            'default_value' => 'non',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart of Account Founds",
    "data": [
        {
            "key": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "label": "Cash"
        }
    ]
}
 

Request   

POST api/v1/backoffice/payment-option-method/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
  • payment_option
property_id   string     

uuid of Room Type Example: reiciendis

coa_search   string     

name of coa finding Example: vitae

default_value   string     

name of coa default value Example: non

Backoffice Payment Option

Detail Payment Option

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-options/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quis\",
    \"payment_option_id\": \"esse\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-options/detail"
);

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

let body = {
    "property_id": "quis",
    "payment_option_id": "esse"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-options/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quis',
            'payment_option_id' => 'esse',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Rate Plan detail",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash",
        "property": {
            "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "name": "Cash"
        }
    }
}
 

Request   

POST api/v1/backoffice/payment-options/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property id Example: quis

payment_option_id   string     

uuid of Payment Option id set value create if new data Example: esse

Datatables Payment Options

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-options/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"facere\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-options/datatables"
);

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

let body = {
    "property_id": "facere"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-options/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'facere',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 1,
    "recordsFiltered": 1,
    "data": [
        {
            "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "property_id": "e1e5d4a8-43e5-4944-b2ff-41a28a6687fe",
            "name": "Cash",
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"payment_options\" where \"property_id\" = ? and \"payment_options\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 1.33
        },
        {
            "query": "select * from \"payment_options\" where \"property_id\" = ? and \"payment_options\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 0.44
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.67
        }
    ],
    "input": {
        "property_id": "e1e5d4a8-43e5-4944-b2ff-41a28a6687fe"
    }
}
 

Request   

POST api/v1/backoffice/payment-options/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: facere

Update Payment Options

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-options" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quis\",
    \"name\": \"quos\",
    \"agent_id\": \"consequatur\",
    \"coa_id\": \"iste\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-options"
);

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

let body = {
    "property_id": "quis",
    "name": "quos",
    "agent_id": "consequatur",
    "coa_id": "iste"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-options';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quis',
            'name' => 'quos',
            'agent_id' => 'consequatur',
            'coa_id' => 'iste',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/backoffice/payment-options

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: quis

name   string     

Name of Tax and Service Example: quos

agent_id   string     

uuid of agent if this payment option for agent Example: consequatur

coa_id   string     

uuid of Chart of Account Payment Method Example: iste

Remove Payment Options

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-options/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"ducimus\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-options/remove"
);

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

let body = {
    "id": "ducimus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-options/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'ducimus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/backoffice/payment-options/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Payment Options Example: ducimus

Option Payment Input

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/payment-options/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"coa\",
    \"property_id\": \"minus\",
    \"coa_search\": \"est\",
    \"default_value\": \"provident\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/payment-options/dropdown/list"
);

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

let body = {
    "mode": "coa",
    "property_id": "minus",
    "coa_search": "est",
    "default_value": "provident"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/payment-options/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'coa',
            'property_id' => 'minus',
            'coa_search' => 'est',
            'default_value' => 'provident',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart of Account Founds",
    "data": [
        {
            "key": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
            "label": "Cash"
        }
    ]
}
 

Request   

POST api/v1/backoffice/payment-options/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
  • agent
property_id   string     

uuid of Room Type Example: minus

coa_search   string     

name of coa finding Example: est

default_value   string     

name of coa default value Example: provident

Backoffice Property Rate Plans

Detail Rate Plans

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/rate-plan/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"inventore\",
    \"rate_plan_id\": \"aperiam\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/rate-plan/detail"
);

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

let body = {
    "property_id": "inventore",
    "rate_plan_id": "aperiam"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/rate-plan/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'inventore',
            'rate_plan_id' => 'aperiam',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Rate Plan detail",
    "data": {
        "id": "f30d4a47-827c-43da-b891-05d28c13570a",
        "name": "Room And Breakfast Rate",
        "remark": "Room And Breakfast Rate",
        "start_date": "2024-06-29",
        "end_date": "2025-07-24",
        "min_night": 1,
        "max_night": 10,
        "max_adult": 2,
        "max_child": 2,
        "max_pax": 4,
        "rate": 150000,
        "extra_adult_rate": 0,
        "extra_child_rate": 0,
        "rate_plan_type_id": "edea11e1-3a50-4872-b0b6-5454d9623c58",
        "rate_plan_type_name": "STANDAR",
        "open_rate": true,
        "tax_and_service_id": "bd79b8c2-aa00-4d58-9ec7-eb909dc09de1",
        "tax_and_service_name": "Room Rate Tax 11 and Service 10",
        "currency_name": {
            "id": "d43d6a17-85f9-42ca-b570-8b980326a198",
            "name": "Indonesian rupiah",
            "code": "IDR",
            "symbol": "Rp"
        },
        "room_type": {
            "id": "ddd29ba9-810f-4db1-9f3f-6dea7f1ec419",
            "name": "Standard Balcony"
        },
        "daily_rate": {
            "period_start_date": "2024-06-29",
            "period_end_date": "2024-07-29",
            "list_rate": [
                {
                    "rate_date": "2024-06-29",
                    "rate": 150000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": false
                }
            ]
        }
    }
}
 

Request   

POST api/v1/backoffice/rate-plan/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property id Example: inventore

rate_plan_id   string     

uuid of Rate Plan id set value create if new data Example: aperiam

Datatables Rate Plans

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/rate-plan/datatables" \
    --header "Authorization: Bearer **********************************"
const url = new URL(
    "http://localhost/api/v1/backoffice/rate-plan/datatables"
);

const headers = {
    "Authorization": "Bearer **********************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/rate-plan/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer **********************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/backoffice/rate-plan/datatables

Headers

Authorization        

Example: Bearer **********************************

Rate Plan List Data

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/rate-plan/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"molestiae\",
    \"page_no\": 14,
    \"rate_plan_name\": \"est\",
    \"rate_type_id\": \"minus\",
    \"room_type_id\": \"laboriosam\",
    \"active_start_date\": \"fuga\",
    \"active_end_date\": \"sit\",
    \"status_active\": true
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/rate-plan/list"
);

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

let body = {
    "property_id": "molestiae",
    "page_no": 14,
    "rate_plan_name": "est",
    "rate_type_id": "minus",
    "room_type_id": "laboriosam",
    "active_start_date": "fuga",
    "active_end_date": "sit",
    "status_active": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/rate-plan/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'molestiae',
            'page_no' => 14,
            'rate_plan_name' => 'est',
            'rate_type_id' => 'minus',
            'room_type_id' => 'laboriosam',
            'active_start_date' => 'fuga',
            'active_end_date' => 'sit',
            'status_active' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Rate Plan List",
    "data": {
        "record": [
            {
                "id": "51eba24d-85d4-4d32-ac9f-fe1d0ec07ea6",
                "property": {
                    "id": "8e98e464-9e42-441e-aef3-f2f029fbdea5",
                    "name": "Hotel Dummy"
                },
                "currency": {
                    "id": "098bdff9-0060-4e5b-8364-c93bbabcf17a",
                    "name": "Indonesian rupiah",
                    "code": "IDR",
                    "symbol": "Rp"
                },
                "room_type": {
                    "id": "0a3b2a7b-4579-4d2a-9f47-7922329bd423",
                    "name": "Standard Balcony"
                },
                "rate_plan_type": {
                    "id": "317dfc1b-9842-4350-838e-4ee6d664c560",
                    "name": "Room Only"
                },
                "tax_and_service": {
                    "id": "2896f446-4c87-42b2-b55b-324cbc6bcffd",
                    "name": "Room Rate Tax 11 and Service 10",
                    "tax_percent": "11",
                    "service_percent": "10",
                    "calculation_type": "INCLUDE"
                },
                "open_rate": true,
                "name": "Room And Breakfast Rate",
                "remark": "Room And Breakfast Rate",
                "start_date": "2024-10-16",
                "end_date": "2025-11-10",
                "min_night": 1,
                "max_night": 10,
                "max_adult": 2,
                "max_child": 2,
                "max_pax": 4,
                "rate": 150000,
                "extra_adult_rate": 0,
                "rate_plan_detail": [
                    {
                        "id": "e0eff273-f366-4f9a-9478-083e0a07bb07",
                        "remark": "Room rate",
                        "rate": 400000
                    },
                    {
                        "id": "ee9fa600-b92b-40e2-bb4f-0bcf74da6f59",
                        "remark": "Breakfast rate",
                        "rate": 150000
                    }
                ]
            }
        ],
        "total_page": 1,
        "current_page": 1,
        "filter": {
            "room_type_id": "0a3b2a7b-4579-4d2a-9f47-7922329bd423",
            "rate_type_id": "317dfc1b-9842-4350-838e-4ee6d664c560",
            "active_start_date": "2024-12-25",
            "active_end_date": "2025-03-25"
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/backoffice/rate-plan/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: molestiae

page_no   integer  optional    

number of pagination Example: 14

rate_plan_name   string  optional    

filter of rate plan name Example: est

rate_type_id   string  optional    

uuid of rate plan type Example: minus

room_type_id   string  optional    

uuid of room type Example: laboriosam

active_start_date   string  optional    

filter rate plan active start date of date find type format Y-m-d. Example: fuga

active_end_date   string  optional    

filter rate plan active end date of date find type format Y-m-d. Example: sit

status_active   boolean  optional    

status of rate plan true or false. Example: true

Create or update Rate Plans

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/rate-plan" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"corporis\",
    \"property_id\": \"eveniet\",
    \"rate_plan_type_id\": \"eligendi\",
    \"tax_and_service_id\": \"dicta\",
    \"room_type_id\": \"voluptas\",
    \"room_type_multi\": null,
    \"open_rate\": \"qui\",
    \"name\": \"veniam\",
    \"remark\": \"deserunt\",
    \"start_date\": \"facilis\",
    \"end_date\": \"velit\",
    \"min_night\": 17,
    \"max_night\": 3,
    \"max_adult\": 14,
    \"max_child\": 16,
    \"max_pax\": 20,
    \"rate\": 19,
    \"extra_adult_rate\": 9,
    \"extra_child_rate\": 15,
    \"daily_rate_period_start_date\": \"voluptatem\",
    \"daily_rate_period_end_date\": \"distinctio\",
    \"rate_plan_detail\": null,
    \"rate_plan_inclusion\": null
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/rate-plan"
);

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

let body = {
    "id": "corporis",
    "property_id": "eveniet",
    "rate_plan_type_id": "eligendi",
    "tax_and_service_id": "dicta",
    "room_type_id": "voluptas",
    "room_type_multi": null,
    "open_rate": "qui",
    "name": "veniam",
    "remark": "deserunt",
    "start_date": "facilis",
    "end_date": "velit",
    "min_night": 17,
    "max_night": 3,
    "max_adult": 14,
    "max_child": 16,
    "max_pax": 20,
    "rate": 19,
    "extra_adult_rate": 9,
    "extra_child_rate": 15,
    "daily_rate_period_start_date": "voluptatem",
    "daily_rate_period_end_date": "distinctio",
    "rate_plan_detail": null,
    "rate_plan_inclusion": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/rate-plan';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'corporis',
            'property_id' => 'eveniet',
            'rate_plan_type_id' => 'eligendi',
            'tax_and_service_id' => 'dicta',
            'room_type_id' => 'voluptas',
            'room_type_multi' => null,
            'open_rate' => 'qui',
            'name' => 'veniam',
            'remark' => 'deserunt',
            'start_date' => 'facilis',
            'end_date' => 'velit',
            'min_night' => 17,
            'max_night' => 3,
            'max_adult' => 14,
            'max_child' => 16,
            'max_pax' => 20,
            'rate' => 19,
            'extra_adult_rate' => 9,
            'extra_child_rate' => 15,
            'daily_rate_period_start_date' => 'voluptatem',
            'daily_rate_period_end_date' => 'distinctio',
            'rate_plan_detail' => null,
            'rate_plan_inclusion' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Save Update Rate Plan Data",
    "data": [
        {
            "id": "ce065cfe-eaa1-4b59-abd8-220d5660a026",
            "name": "Test Room Rate With Detail",
            "remark": "test room rate",
            "start_date": "2024-12-01",
            "end_date": "",
            "min_night": 1,
            "max_night": 30,
            "max_adult": 2,
            "max_child": 1,
            "max_pax": 3,
            "rate": 550000,
            "extra_adult_rate": 50000,
            "extra_child_rate": 50000,
            "rate_plan_detail": [
                {
                    "id": "d51ee804-3d39-4c04-8843-049bd132bf46",
                    "remark": "Room rate",
                    "rate": 400000
                },
                {
                    "id": "573f3199-d964-44b9-ba71-9c3d90f780d8",
                    "remark": "Breakfast rate",
                    "rate": 150000
                }
            ],
            "rate_plan_type_id": "14399dcb-b5cb-4c49-afba-12628e82dda6",
            "rate_plan_type_name": "Room Breakfast",
            "open_rate": true,
            "tax_and_service_id": "2896f446-4c87-42b2-b55b-324cbc6bcffd",
            "tax_and_service_name": "Room Rate Tax 11 and Service 10",
            "currency_name": {
                "id": "098bdff9-0060-4e5b-8364-c93bbabcf17a",
                "name": "Indonesian rupiah",
                "code": "IDR",
                "symbol": "Rp"
            },
            "room_type": {
                "id": "ac928fd1-e0a6-42ea-94d2-53900547f872",
                "name": "Standard"
            },
            "daily_rate": {
                "period_start_date": "2024-12-01",
                "period_end_date": "2024-12-31",
                "list_rate": [
                    {
                        "rate_date": "2024-12-30",
                        "rate": 550000,
                        "extra_adult_rate": 50000,
                        "extra_child_rate": 50000,
                        "rate_plan_detail": [
                            {
                                "id": "d51ee804-3d39-4c04-8843-049bd132bf46",
                                "remark": "Room rate",
                                "rate": 400000,
                                "is_adjustment": false
                            },
                            {
                                "id": "573f3199-d964-44b9-ba71-9c3d90f780d8",
                                "remark": "Breakfast rate",
                                "rate": 150000,
                                "is_adjustment": false
                            }
                        ],
                        "is_adjustment": false
                    },
                    {
                        "rate_date": "2024-12-31",
                        "rate": 550000,
                        "extra_adult_rate": 50000,
                        "extra_child_rate": 50000,
                        "rate_plan_detail": [
                            {
                                "id": "d51ee804-3d39-4c04-8843-049bd132bf46",
                                "remark": "Room rate",
                                "rate": 400000,
                                "is_adjustment": false
                            },
                            {
                                "id": "573f3199-d964-44b9-ba71-9c3d90f780d8",
                                "remark": "Breakfast rate",
                                "rate": 150000,
                                "is_adjustment": false
                            }
                        ],
                        "is_adjustment": false
                    }
                ]
            }
        }
    ]
}
 

Request   

POST api/v1/backoffice/rate-plan

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string  optional    

uuid rate plan, this must set for update single rate plan Example: corporis

property_id   string     

uuid of Property Example: eveniet

rate_plan_type_id   string     

uuid of Rate Plan Type Example: eligendi

tax_and_service_id   string     

uuid of Tax and Service Example: dicta

room_type_id   string  optional    

uuid of Room Type if just want update single room type rate plan Example: voluptas

room_type_multi   object[]  optional    

if you want create rate for multiple room rate plan use this parameter like

open_rate   bolean     

if this can use for publish market OTA set true Example: qui

name   string     

name Of Rate Plan Example: veniam

remark   string     

remark Of Rate Plan Example: deserunt

start_date   string     

start date valid Rate Plan, Example. YYYY-mm-dd Example: facilis

end_date   string     

end date valid Rate Plan, Example. YYYY-mm-dd Example: velit

min_night   integer     

minimum night stay rate plan Example: 17

max_night   integer     

maximum night stay rate plan Example: 3

max_adult   integer     

maximum adult guest on one room can apply this rate Example: 14

max_child   integer     

maximum child guest on one room can apply this rate Example: 16

max_pax   integer     

maximum guest on one room can apply this rate Example: 20

rate   integer     

value of Rate Example: 19

extra_adult_rate   integer  optional    

value of Extra Adult Rate Example: 9

extra_child_rate   integer  optional    

value of Extra child Rate Example: 15

daily_rate_period_start_date   string  optional    

this required if you make update daily rate start date display valid Rate Plan, Example. YYYY-mm-dd Example: voluptatem

daily_rate_period_end_date   string  optional    

this required if you make update daily rate end date display valid Rate Plan, Example. YYYY-mm-dd Example: distinctio

rate_plan_detail   object[]  optional    

if have detail of rate plan like

rate_plan_inclusion   object[]  optional    

if have detail of rate plan like

Inactive Rate Plans

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/rate-plan/inactive" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"vel\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/rate-plan/inactive"
);

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

let body = {
    "id": "vel"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/rate-plan/inactive';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'vel',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/backoffice/rate-plan/inactive

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Rate Plans Example: vel

Option Rate Plans Input

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/rate-plan/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"room_type\",
    \"property_id\": \"dolorem\",
    \"rate_plan_type_id\": \"rem\",
    \"product_category_id\": \"earum\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/rate-plan/dropdown/list"
);

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

let body = {
    "mode": "room_type",
    "property_id": "dolorem",
    "rate_plan_type_id": "rem",
    "product_category_id": "earum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/rate-plan/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'room_type',
            'property_id' => 'dolorem',
            'rate_plan_type_id' => 'rem',
            'product_category_id' => 'earum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Tax And Service Founds",
    "data": [
        {
            "key": "bcd755b0-7172-4863-82e1-3629d16f6d52",
            "label": "Room Rate Tax 11 and Service 10"
        }
    ]
}
 

Request   

POST api/v1/backoffice/rate-plan/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The selector option. Example: room_type

Must be one of:
  • room_type
  • rate_plan_type
  • tax_and_service
  • property_currency
  • property_departments
  • product_category
  • product
  • rate_plan_detail_default
  • status_active
property_id   string     

uuid of Property Example: dolorem

rate_plan_type_id   string     

uuid of Property if mode rate_plan_detail_default Example: rem

product_category_id   string     

uuid of Product Category if mode product Example: earum

Adjustment Daily Rate Plans

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/rate-plan/daily/adjustment" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"rate_plan_id\": \"molestiae\",
    \"property_id\": \"dolorem\",
    \"start_date\": \"aliquam\",
    \"end_date\": \"commodi\",
    \"adjust_start_date\": \"eos\",
    \"adjust_end_date\": \"pariatur\",
    \"rate\": 14,
    \"extra_adult_rate\": 18,
    \"extra_child_rate\": 13,
    \"day_apply\": [
        1,
        2,
        3,
        4,
        5,
        6,
        7
    ],
    \"rate_plan_detail\": null
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/rate-plan/daily/adjustment"
);

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

let body = {
    "rate_plan_id": "molestiae",
    "property_id": "dolorem",
    "start_date": "aliquam",
    "end_date": "commodi",
    "adjust_start_date": "eos",
    "adjust_end_date": "pariatur",
    "rate": 14,
    "extra_adult_rate": 18,
    "extra_child_rate": 13,
    "day_apply": [
        1,
        2,
        3,
        4,
        5,
        6,
        7
    ],
    "rate_plan_detail": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/rate-plan/daily/adjustment';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'rate_plan_id' => 'molestiae',
            'property_id' => 'dolorem',
            'start_date' => 'aliquam',
            'end_date' => 'commodi',
            'adjust_start_date' => 'eos',
            'adjust_end_date' => 'pariatur',
            'rate' => 14,
            'extra_adult_rate' => 18,
            'extra_child_rate' => 13,
            'day_apply' => [
                1,
                2,
                3,
                4,
                5,
                6,
                7,
            ],
            'rate_plan_detail' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Save Adjustment Daily Rate Plan Data",
    "data": [
        {
            "period_start_date": "2024-08-01",
            "period_end_date": "2024-08-10",
            "list_rate": [
                {
                    "rate_date": "2024-08-01",
                    "rate": 150000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": false
                },
                {
                    "rate_date": "2024-08-02",
                    "rate": 150000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": false
                },
                {
                    "rate_date": "2024-08-03",
                    "rate": 300000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": true
                },
                {
                    "rate_date": "2024-08-04",
                    "rate": 300000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": true
                },
                {
                    "rate_date": "2024-08-05",
                    "rate": 150000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": false
                },
                {
                    "rate_date": "2024-08-06",
                    "rate": 150000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": false
                },
                {
                    "rate_date": "2024-08-07",
                    "rate": 150000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": false
                },
                {
                    "rate_date": "2024-08-08",
                    "rate": 150000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": false
                },
                {
                    "rate_date": "2024-08-09",
                    "rate": 150000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": false
                },
                {
                    "rate_date": "2024-08-10",
                    "rate": 300000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "is_adjustment": true
                }
            ]
        }
    ]
}
 

Request   

POST api/v1/backoffice/rate-plan/daily/adjustment

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

rate_plan_id   string  optional    

uuid rate plan, this must set for update single rate plan Example: molestiae

property_id   string     

uuid of Property Example: dolorem

start_date   string     

list day showing start date valid Rate Plan, Example. YYYY-mm-dd Example: aliquam

end_date   string     

list day showing end date valid Rate Plan, Example. YYYY-mm-dd Example: commodi

adjust_start_date   string     

start date adjusment Daily Rate Rate Plan, Example. YYYY-mm-dd Example: eos

adjust_end_date   string     

if adjust daily rate on range, use end date adjusment Daily Rate Rate Plan, Example. YYYY-mm-dd Example: pariatur

rate   integer     

value of Rate adjustment Example: 14

extra_adult_rate   integer  optional    

value of Extra Adult Rate adjustment Example: 18

extra_child_rate   integer  optional    

value of Extra child Rate adjustment Example: 13

day_apply   string[]  optional    

if you want adjustment your daily rate use this parameter like(1 = monday, 2 = tuesday, 3 = wednesday, 4 = thursday, 5 = friday, 6 = saturday 7 = sunday).

rate_plan_detail   object[]  optional    

if have detail of rate plan like

Backoffice Reports

Occupancy Report (Monthly / Daily)

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/reports" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"libero\",
    \"report_type\": \"occupancy\",
    \"period\": \"daily\",
    \"year\": 2026,
    \"start_date\": \"2026-05-01\",
    \"end_date\": \"2026-05-31\",
    \"room_type_ids\": [
        \"et\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/reports"
);

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

let body = {
    "property_id": "libero",
    "report_type": "occupancy",
    "period": "daily",
    "year": 2026,
    "start_date": "2026-05-01",
    "end_date": "2026-05-31",
    "room_type_ids": [
        "et"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/reports';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'libero',
            'report_type' => 'occupancy',
            'period' => 'daily',
            'year' => 2026,
            'start_date' => '2026-05-01',
            'end_date' => '2026-05-31',
            'room_type_ids' => [
                'et',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/property/backoffice/reports

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: libero

report_type   string     

Report type. Example: occupancy

Must be one of:
  • occupancy
period   string     

Period type. Example: daily

Must be one of:
  • monthly
  • daily
year   integer     

when period=monthly. Example: 2026

start_date   string     

when period=daily. Format Y-m-d. Example: 2026-05-01

end_date   string     

when period=daily. Format Y-m-d. Example: 2026-05-31

room_type_ids   string[]  optional    

optional Filter by room type UUIDs. Default: all.

Booking Summary List Report

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/booking-summary/reports" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"omnis\",
    \"arrival_date\": \"2026-07-01\",
    \"departure_date\": \"2026-07-31\",
    \"booking_status\": \"molestiae\",
    \"guest_status\": \"aut\",
    \"page_number\": 14,
    \"page_size\": 1
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/booking-summary/reports"
);

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

let body = {
    "property_id": "omnis",
    "arrival_date": "2026-07-01",
    "departure_date": "2026-07-31",
    "booking_status": "molestiae",
    "guest_status": "aut",
    "page_number": 14,
    "page_size": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/booking-summary/reports';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'omnis',
            'arrival_date' => '2026-07-01',
            'departure_date' => '2026-07-31',
            'booking_status' => 'molestiae',
            'guest_status' => 'aut',
            'page_number' => 14,
            'page_size' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Booking Summary Report",
    "data": {
        "item": [],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 0,
            "total_item_current_page": 0
        }
    }
}
 

Example response (400):


{
    "message": "Please input valid Data",
    "data": []
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/booking-summary/reports

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: omnis

arrival_date   string     

Filter range start based on arrival (Y-m-d). Example: 2026-07-01

departure_date   string     

Filter range end based on departure (Y-m-d). Example: 2026-07-31

booking_status   string  optional    

uuid of booking_status. Example: molestiae

guest_status   string  optional    

uuid of guest_status_lists. Example: aut

page_number   integer  optional    

Page number. Default: 1 Example: 14

page_size   integer  optional    

Rows per page. Default: 30 Example: 1

Booking Summary Report Filter Option List

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/booking-summary/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"nihil\",
    \"mode\": \"booking_status\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/booking-summary/dropdownoptionlist"
);

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

let body = {
    "property_id": "nihil",
    "mode": "booking_status"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/booking-summary/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'nihil',
            'mode' => 'booking_status',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Option List",
    "data": [
        {
            "key": "uuid",
            "label": "Confirmed"
        }
    ]
}
 

Example response (400):


{
    "message": "Please input valid Data",
    "data": []
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/booking-summary/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: nihil

mode   string     

Example: booking_status

Must be one of:
  • booking_status
  • guest_status

Backoffice Tax And Service

Detail Tax And Service

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/tax-and-service/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"et\",
    \"tax_and_service_id\": \"voluptas\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/tax-and-service/detail"
);

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

let body = {
    "property_id": "et",
    "tax_and_service_id": "voluptas"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/tax-and-service/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'et',
            'tax_and_service_id' => 'voluptas',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Tax and Service detail",
    "data": {
        "id": "151f85bf-cb51-4aab-985c-8d451dcd901c",
        "name": "Room Rate Tax 11 and Service 10",
        "tax": "11",
        "service": "10",
        "use_service": true,
        "tax_coa": {
            "id": "563770be-ecf2-4f77-a717-46fcb69e90e9",
            "name": "220-00-060 | Recontruction Tax - PB 1"
        },
        "service_coa": {
            "id": "639fdb54-d802-442b-a19e-3bd5af5507ea",
            "name": "250-00-010 | A/P - Service Charge"
        }
    }
}
 

Request   

POST api/v1/backoffice/tax-and-service/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: et

tax_and_service_id   string     

uuid of Tax And Service Example: voluptas

Datatables Tax And Service

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/tax-and-service/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"necessitatibus\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/tax-and-service/datatables"
);

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

let body = {
    "property_id": "necessitatibus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/tax-and-service/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'necessitatibus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 1,
    "recordsFiltered": 1,
    "data": [
        {
            "id": "151f85bf-cb51-4aab-985c-8d451dcd901c",
            "property_id": "6f61c7b5-72df-4c55-a6de-0b04b08dfef5",
            "tax_coa_id": "563770be-ecf2-4f77-a717-46fcb69e90e9",
            "service_coa_id": "639fdb54-d802-442b-a19e-3bd5af5507ea",
            "calculation_type": "INCLUDE",
            "name": "Room Rate Tax 11 and Service 10",
            "tax": "11",
            "service": "10",
            "use_service": true,
            "property_name": "Hotel Dummy",
            "tax_coa": "220-00-060 | Recontruction Tax - PB 1",
            "service_coa": "250-00-010 | A/P - Service Charge"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"tax_and_services\" where \"property_id\" = ? and \"tax_and_services\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 2.05
        },
        {
            "query": "select * from \"tax_and_services\" where \"property_id\" = ? and \"tax_and_services\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 0.5
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.69
        },
        {
            "query": "select * from \"chart_of_accounts\" where \"chart_of_accounts\".\"id\" = ? and \"chart_of_accounts\".\"id\" is not null and \"chart_of_accounts\".\"deleted_at\" is null limit 1",
            "bindings": [
                169
            ],
            "time": 1.55
        },
        {
            "query": "select * from \"chart_of_accounts\" where \"chart_of_accounts\".\"id\" = ? and \"chart_of_accounts\".\"id\" is not null and \"chart_of_accounts\".\"deleted_at\" is null limit 1",
            "bindings": [
                215
            ],
            "time": 0.58
        }
    ],
    "input": {
        "property_id": "6f61c7b5-72df-4c55-a6de-0b04b08dfef5"
    }
}
 

Request   

POST api/v1/backoffice/tax-and-service/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: necessitatibus

Update Tax And Service

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/tax-and-service" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"eligendi\",
    \"tax_coa_id\": \"tenetur\",
    \"service_coa_id\": \"error\",
    \"name\": \"fugiat\",
    \"calculation_type\": \"libero\",
    \"tax\": 4.695,
    \"service\": 205.0047093,
    \"use_service\": \"et\",
    \"is_default\": \"sint\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/tax-and-service"
);

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

let body = {
    "property_id": "eligendi",
    "tax_coa_id": "tenetur",
    "service_coa_id": "error",
    "name": "fugiat",
    "calculation_type": "libero",
    "tax": 4.695,
    "service": 205.0047093,
    "use_service": "et",
    "is_default": "sint"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/tax-and-service';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eligendi',
            'tax_coa_id' => 'tenetur',
            'service_coa_id' => 'error',
            'name' => 'fugiat',
            'calculation_type' => 'libero',
            'tax' => 4.695,
            'service' => 205.0047093,
            'use_service' => 'et',
            'is_default' => 'sint',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Tax and Service",
    "data": {
        "id": "ef9fd502-2b67-4ce2-a72c-2df489060659",
        "name": "tax and service test",
        "tax": "10",
        "service": "11",
        "use_service": true,
        "tax_coa": {
            "id": "6300fe91-d73e-49a2-a52a-59118078cf06",
            "name": "110-30-004 | FA Cash Clearnce"
        },
        "service_coa": {
            "id": "f57cfcf5-ef2f-4222-9476-f10f1822e0d5",
            "name": "120-00-007 | A/R JCB"
        }
    }
}
 

Request   

POST api/v1/backoffice/tax-and-service

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: eligendi

tax_coa_id   string     

uuid of Char Of Account for tax Example: tenetur

service_coa_id   string     

uuid of Char Of Account for service Example: error

name   string     

Name of Tax and Service Example: fugiat

calculation_type   string     

Calculation type ('INCLUDE','EXCLUDE') Example: libero

tax   number     

Value of Tax Example: 4.695

service   number  optional    

Value of Service Example: 205.0047093

use_service   bolean  optional    

if use service please set true Example: et

is_default   bolean  optional    

if this default on option set true Example: sint

Remove Tax And Service

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/tax-and-service/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"corrupti\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/tax-and-service/remove"
);

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

let body = {
    "id": "corrupti"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/tax-and-service/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'corrupti',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "success remove Tax And Service",
    "data": []
}
 

Request   

POST api/v1/backoffice/tax-and-service/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Tax And Service Example: corrupti

Option Input Tax And Service

Example request:
curl --request POST \
    "http://localhost/api/v1/backoffice/tax-and-service/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"aut\",
    \"mode\": \"coa_list\",
    \"coa_search\": \"dolorem\"
}"
const url = new URL(
    "http://localhost/api/v1/backoffice/tax-and-service/dropdown/list"
);

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

let body = {
    "property_id": "aut",
    "mode": "coa_list",
    "coa_search": "dolorem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/backoffice/tax-and-service/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'aut',
            'mode' => 'coa_list',
            'coa_search' => 'dolorem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Caclculation Type Founds",
    "data": [
        {
            "key": "INCLUDE",
            "label": "Include on Rate"
        },
        {
            "key": "EXCLUDE",
            "label": "Exclude on Rate"
        }
    ]
}
 

Request   

POST api/v1/backoffice/tax-and-service/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: aut

mode   string  optional    

The language. Example: coa_list

Must be one of:
  • coa_list
  • calculation_type
coa_search   string  optional    

name of Chart Account Example: dolorem

Bill Type Setup

Bill Type Details

Example request:
curl --request POST \
    "http://localhost/api/v1/master/bill-type/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"bill_type_id\": \"earum\"
}"
const url = new URL(
    "http://localhost/api/v1/master/bill-type/detail"
);

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

let body = {
    "bill_type_id": "earum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/bill-type/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'bill_type_id' => 'earum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Feature Detail",
    "data": {
        "id": "5e1932e0-7d6c-49e4-989c-6c6512263d8f",
        "prefix_booking_code": "hotel_dummy-",
        "name": "Hotel Dummy",
        "address": "Jl. Raya Kedampang Gg Loka No.8, Kerobokan Kelod, Kec. Kuta, Kabupaten Badung, Bali 80361",
        "zip_code": "80361",
        "phone": "0817-7689-9998",
        "email_primary": "[email protected]",
        "logo_path": null,
        "website": "https://www.dummyhotel.com",
        "longitude": "-8.597327",
        "latitude": "115.319776",
        "google_map_url": "https://goo.gl/maps/q9CqJMQFvZ7WYLdH6",
        "sosmed_facebook_url": "#",
        "sosmed_instagram_url": "#",
        "sosmed_youtube_url": "#",
        "sosmed_twitter_url": "#",
        "description": null,
        "property_group": {
            "id": "d0988d1d-a3d0-4494-807d-e9777345d4a4",
            "name": "Hotel Dummy Group"
        },
        "area": {
            "id": "c71e56f2-f74c-4913-9846-a5998a0e536f",
            "area_name": "Sukawati",
            "region_name": "Bali",
            "country_name": "Indonesia"
        },
        "currency": {
            "id": "5138063c-f71f-4433-8350-a66d2429a592",
            "name": "Indonesian rupiah"
        },
        "timezone": {
            "id": "204e5eab-01a6-43ae-b93c-983037af6577",
            "name": "Asia/Jakarta"
        }
    }
}
 

Request   

POST api/v1/master/bill-type/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

bill_type_id   string     

uuid of Bill Type Example: earum

Datatables Bill Type

Example request:
curl --request POST \
    "http://localhost/api/v1/master/bill-type/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/bill-type/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/bill-type/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 5,
    "recordsFiltered": 5,
    "data": [
        {
            "id": "214310a1-f98b-4edb-9e55-5a1616875318",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Standard",
            "description": "Standar Room",
            "position_order": 1,
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/master/bill-type/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Bill Type

Example request:
curl --request POST \
    "http://localhost/api/v1/master/bill-type" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"libero\",
    \"name\": \"eveniet\",
    \"is_permanent\": \"quia\"
}"
const url = new URL(
    "http://localhost/api/v1/master/bill-type"
);

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

let body = {
    "id": "libero",
    "name": "eveniet",
    "is_permanent": "quia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/bill-type';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'libero',
            'name' => 'eveniet',
            'is_permanent' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room type",
    "data": {
        "id": "3696cda0-035d-4827-a406-c14e6fcdf264",
        "name": "Room Type baru",
        "description": "Room Type Baru Description",
        "position_order": 1,
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
        "amenities": [
            {
                "category_id": "37b32a73-0c29-4d5a-80bd-1717901d015e",
                "category_name": "Room Amenities",
                "amenities_list": [
                    {
                        "id": "78e7914b-21b5-4bdd-b461-2d3cd72b8f67",
                        "name": "Adapter",
                        "is_select": false
                    },
                    {
                        "id": "05300f15-884d-409e-a396-536929d3cbcf",
                        "name": "Air conditioning",
                        "is_select": true
                    },
                    {
                        "id": "a7d9dedc-cf0b-4d68-9a48-37e14461fdf4",
                        "name": "Air conditioning single room",
                        "is_select": false
                    },
                    {
                        "id": "fd1f09c8-0aca-4f66-b071-cc030a76b36b",
                        "name": "Balcony",
                        "is_select": true
                    },
                    {
                        "id": "dba356b4-5d41-4546-84cf-b08f6585f457",
                        "name": "Bathtub",
                        "is_select": false
                    },
                    {
                        "id": "252b28a2-6add-4a37-85c5-d22598b5e2a1",
                        "name": "Carpeted",
                        "is_select": false
                    },
                    {
                        "id": "f214eca9-262c-4307-979d-3e4bd8de39b4",
                        "name": "Childrens cribs",
                        "is_select": true
                    },
                    {
                        "id": "dc05d273-baec-48b0-acdf-559c39a35f61",
                        "name": "Cleaning products",
                        "is_select": false
                    },
                    {
                        "id": "404dd22a-26e0-4931-b3b2-99333f1e968e",
                        "name": "Clothes rack",
                        "is_select": false
                    },
                    {
                        "id": "3c23f5bb-59ee-4f48-b88a-be1d94681df6",
                        "name": "Desk",
                        "is_select": false
                    },
                    {
                        "id": "bc0c5784-2809-4904-b4e0-bab8b9e1e3d0",
                        "name": "Dryer",
                        "is_select": true
                    },
                    {
                        "id": "99fedee9-ecef-4875-81ce-2a4b9f16cd0a",
                        "name": "Drying rack for clothing",
                        "is_select": false
                    },
                    {
                        "id": "7a8eee4a-155a-4214-b105-68705f2e381b",
                        "name": "Electric blankets",
                        "is_select": false
                    },
                    {
                        "id": "b7757b5e-fa8e-465b-8c3e-f481ed0aba66",
                        "name": "Electric kettle",
                        "is_select": false
                    },
                    {
                        "id": "ce91b7d8-afa1-466d-bfd2-cbc01d107aa8",
                        "name": "Extra long beds (> 6.5 ft)",
                        "is_select": false
                    },
                    {
                        "id": "d0de7cd0-bf27-416f-9317-d65ede231d2f",
                        "name": "Fan",
                        "is_select": false
                    },
                    {
                        "id": "ef8e700d-34cd-46f3-ad83-e40192ff2a8f",
                        "name": "Feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "68d1483f-999a-4155-b2e4-86e0edf8c3ab",
                        "name": "Fireplace",
                        "is_select": false
                    },
                    {
                        "id": "9c1b1920-b3c0-4ce6-8e76-e9a41ceb3b28",
                        "name": "Flat-screen TV",
                        "is_select": false
                    },
                    {
                        "id": "206d34a2-716d-4f08-8895-b18a152c5c5c",
                        "name": "Fold-up bed",
                        "is_select": false
                    },
                    {
                        "id": "feb09933-4210-4e53-a083-60e0ff5f2076",
                        "name": "Hardwood or parquet floors",
                        "is_select": false
                    },
                    {
                        "id": "2d83428c-67f0-424c-b3cf-7b64c7bbde4d",
                        "name": "Heated pool",
                        "is_select": false
                    },
                    {
                        "id": "0e457b6c-27f9-4170-9174-ddcc4a44dbbc",
                        "name": "Heating",
                        "is_select": false
                    },
                    {
                        "id": "a91728b8-4c62-4644-bfc3-8673cdd06c5e",
                        "name": "Hot tub",
                        "is_select": false
                    },
                    {
                        "id": "96fc900e-041f-454c-9aae-45dd06b9a142",
                        "name": "Hypoallergenic",
                        "is_select": false
                    },
                    {
                        "id": "daeea86a-79c0-45b8-81a7-e76333134b3d",
                        "name": "Hypoallergenic pillow",
                        "is_select": false
                    },
                    {
                        "id": "9f577ec2-34e9-4d5c-87df-868bb8ffae4d",
                        "name": "Infinity Pool",
                        "is_select": false
                    },
                    {
                        "id": "0897bc60-47b1-46dd-a822-2bcaeb07d8e8",
                        "name": "Interconnecting rooms",
                        "is_select": false
                    },
                    {
                        "id": "a662f19e-419c-41a9-a0a0-b0c2f00f24dd",
                        "name": "Iron",
                        "is_select": false
                    },
                    {
                        "id": "46a2ee4a-c711-4dd2-a99d-ce6c6ebf3a31",
                        "name": "Ironing facilities",
                        "is_select": false
                    },
                    {
                        "id": "6107ec89-e45a-43f5-ac25-598f20535951",
                        "name": "Mosquito net",
                        "is_select": false
                    },
                    {
                        "id": "1818a164-cfd0-435a-8398-f7ddc11401f4",
                        "name": "Non-feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "1ca6771c-37ae-4ff6-84d0-4277f27365b0",
                        "name": "Pajamas",
                        "is_select": false
                    },
                    {
                        "id": "3e611ae2-edf5-4473-ae7b-c6ab2d6ce946",
                        "name": "Plunge Pool",
                        "is_select": false
                    },
                    {
                        "id": "a13e0b46-0d5e-4503-bc11-af25b568609a",
                        "name": "Pool cover",
                        "is_select": false
                    },
                    {
                        "id": "86854195-b984-415f-925e-bee9172388dc",
                        "name": "Pool towels",
                        "is_select": false
                    },
                    {
                        "id": "b5687b9d-65b2-4d1a-aa22-b2ef72a26685",
                        "name": "Pool with a view",
                        "is_select": false
                    },
                    {
                        "id": "bc8c3d71-115f-45ff-8d98-6d6c7c1ad6b7",
                        "name": "Private pool",
                        "is_select": false
                    },
                    {
                        "id": "7ba1a081-d56b-4608-9d2e-1110fa4cd601",
                        "name": "Rooftop pool",
                        "is_select": false
                    },
                    {
                        "id": "b808b875-492d-458d-a6bc-720372622767",
                        "name": "Safe",
                        "is_select": false
                    },
                    {
                        "id": "d990b235-5121-4b63-ad8c-5ee1721196b4",
                        "name": "Saltwater pool",
                        "is_select": false
                    },
                    {
                        "id": "b38466d0-9e59-4736-8204-0b01d379faa0",
                        "name": "Shallow end",
                        "is_select": false
                    },
                    {
                        "id": "bc33df3d-9f0f-425b-a0df-46ab53e7aa83",
                        "name": "Sitting area",
                        "is_select": false
                    },
                    {
                        "id": "441d79fb-82a4-458a-8bd2-8f91f40f5e2b",
                        "name": "Socket near the bed",
                        "is_select": false
                    },
                    {
                        "id": "30d5b8ec-8f2e-4fc6-899a-5714a9d7be63",
                        "name": "Sofa",
                        "is_select": false
                    },
                    {
                        "id": "06b027ce-138e-4f61-bc25-10165e24cbfd",
                        "name": "Sofa bed",
                        "is_select": false
                    },
                    {
                        "id": "f2d7c256-4b44-48bf-a2a0-04917f773784",
                        "name": "Soundproof",
                        "is_select": false
                    },
                    {
                        "id": "f39be007-f9d0-413a-9434-335578838ac8",
                        "name": "Suit press",
                        "is_select": false
                    },
                    {
                        "id": "892e321b-5422-48d7-8c1d-950486a1ea57",
                        "name": "Tile/Marble floor",
                        "is_select": false
                    },
                    {
                        "id": "7bdbc02c-4cf0-487a-9faa-bbe25447795a",
                        "name": "Toilet paper",
                        "is_select": false
                    },
                    {
                        "id": "5f84000a-c63d-4234-93c7-dcf36434b1ff",
                        "name": "Towels",
                        "is_select": false
                    },
                    {
                        "id": "b8937943-2b2c-4818-8943-cea8f0754fe6",
                        "name": "Trash cans",
                        "is_select": false
                    },
                    {
                        "id": "26ad03ba-c55c-489a-a550-92f19982df53",
                        "name": "View",
                        "is_select": false
                    },
                    {
                        "id": "ec55c805-84d8-4457-b5b8-fec22adf8ec6",
                        "name": "Walk-in closet",
                        "is_select": false
                    },
                    {
                        "id": "8d560293-82fd-4135-99df-761aa540dbb7",
                        "name": "Wardrobe or closet",
                        "is_select": false
                    },
                    {
                        "id": "b0d7bf28-75d2-4f0a-8ad9-baabe2e50608",
                        "name": "Washing machine",
                        "is_select": false
                    },
                    {
                        "id": "17d5df9c-0bb9-4390-8177-9dc05b0ea92c",
                        "name": "Yukata",
                        "is_select": false
                    },
                    {
                        "id": "336a2aa5-fb92-432e-9d15-496f0638fd60",
                        "name": "Air purifiers",
                        "is_select": false
                    },
                    {
                        "id": "f822da69-c6d3-439d-aab2-58c28e09dc39",
                        "name": "Hand sanitizer",
                        "is_select": false
                    },
                    {
                        "id": "932710b6-8c27-4184-b3b3-7df86e2fb36f",
                        "name": "Bolsters",
                        "is_select": false
                    }
                ]
            }
        ]
    }
}
 

Request   

POST api/v1/master/bill-type

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of bill Type id please not set param if you want create new bill type Example: libero

name   string     

Name of Room Type Example: eveniet

is_permanent   bolean     

set true if bill permanent can't update or edit Example: quia

Remove Bill Type

Example request:
curl --request POST \
    "http://localhost/api/v1/master/bill-type/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"repudiandae\"
}"
const url = new URL(
    "http://localhost/api/v1/master/bill-type/remove"
);

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

let body = {
    "id": "repudiandae"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/bill-type/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'repudiandae',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Room Type",
    "data": []
}
 

Request   

POST api/v1/master/bill-type/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Bill Type Example: repudiandae

Booking Add Bill

Add Bill

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/bill/add" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"eligendi\",
    \"booking_room_id\": \"dolores\",
    \"property_product_id\": \"eum\",
    \"rate_plan_id\": \"impedit\",
    \"tax_and_service_id\": \"odit\",
    \"guest_id\": \"rerum\",
    \"agent_id\": \"nostrum\",
    \"bill_date\": \"est\",
    \"bill_date_start\": \"nostrum\",
    \"bill_date_end\": \"aut\",
    \"amount\": 8,
    \"remark\": \"fuga\",
    \"is_inclusion\": \"qui\",
    \"detail_list\": null
}"
const url = new URL(
    "http://localhost/api/v1/booking/bill/add"
);

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

let body = {
    "booking_id": "eligendi",
    "booking_room_id": "dolores",
    "property_product_id": "eum",
    "rate_plan_id": "impedit",
    "tax_and_service_id": "odit",
    "guest_id": "rerum",
    "agent_id": "nostrum",
    "bill_date": "est",
    "bill_date_start": "nostrum",
    "bill_date_end": "aut",
    "amount": 8,
    "remark": "fuga",
    "is_inclusion": "qui",
    "detail_list": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/bill/add';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'eligendi',
            'booking_room_id' => 'dolores',
            'property_product_id' => 'eum',
            'rate_plan_id' => 'impedit',
            'tax_and_service_id' => 'odit',
            'guest_id' => 'rerum',
            'agent_id' => 'nostrum',
            'bill_date' => 'est',
            'bill_date_start' => 'nostrum',
            'bill_date_end' => 'aut',
            'amount' => 8,
            'remark' => 'fuga',
            'is_inclusion' => 'qui',
            'detail_list' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/booking/bill/add

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: eligendi

booking_room_id   string     

uuid of booking room Example: dolores

property_product_id   string     

uuid of Property Product Example: eum

rate_plan_id   string     

if bill type is roomcharge need uuid rate plan type Example: impedit

tax_and_service_id   string     

uuid of tax and service Example: odit

guest_id   string     

if provide guest need uuid guest profile Example: rerum

agent_id   string     

if provide agent name need uuid agent property Example: nostrum

bill_date   string  optional    

add this value bill date with format date Y-m-d. Exmp:2024-02-18 Example: est

bill_date_start   string  optional    

add this value bulk bill date with format date Y-m-d. Exmp:2024-02-18 Example: nostrum

bill_date_end   string  optional    

add this value bulk bill date with format date Y-m-d. Exmp:2024-02-18 Example: aut

amount   integer     

of bill amount Example: 8

remark   string     

remark Of bill Example: fuga

is_inclusion   bolean     

if bill is inclusion true Example: qui

detail_list   object  optional    

this list room for this booking.

Option Add Bill Input

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/bill/add/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"coa\",
    \"property_id\": \"placeat\",
    \"query\": \"asperiores\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/bill/add/dropdown/list"
);

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

let body = {
    "mode": "coa",
    "property_id": "placeat",
    "query": "asperiores"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/bill/add/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'coa',
            'property_id' => 'placeat',
            'query' => 'asperiores',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Founds",
    "data": [
        {
            "key": "f0c07a03-0e9c-4cf2-a362-a29ac4f28bbd",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "6dca87d1-bbe1-4255-9f54-df139399eb3a",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "e85e160d-495a-4a02-9f26-8867bd38a722",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "69fd3521-dc0e-434c-bdba-39e56e3a0c90",
            "label": "Mrs. Ernawati Ni Luh"
        }
    ]
}
 

Request   

POST api/v1/booking/bill/add/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: coa

Must be one of:
  • bill_type
  • tax_and_service
  • guest
  • agent
  • property_departments
  • product_category
  • product
property_id   string     

uuid of Room Type Example: placeat

query   string  optional    

this use for guest Example: asperiores

Remove Bill

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/bill/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"corrupti\",
    \"booking_room_id\": \"occaecati\",
    \"booking_bill_id\": \"est\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/bill/remove"
);

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

let body = {
    "booking_id": "corrupti",
    "booking_room_id": "occaecati",
    "booking_bill_id": "est"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/bill/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'corrupti',
            'booking_room_id' => 'occaecati',
            'booking_bill_id' => 'est',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/booking/bill/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: corrupti

booking_room_id   string     

uuid of booking room Example: occaecati

booking_bill_id   string     

uuid of booking Bill Example: est

Booking Add Commision

Add Commision

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/commision/add" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"nihil\",
    \"booking_room_id\": \"placeat\",
    \"comm_remark\": \"nihil\",
    \"comm_date\": \"ducimus\",
    \"amount\": 4,
    \"booking_commision_id\": \"ad\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/commision/add"
);

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

let body = {
    "booking_id": "nihil",
    "booking_room_id": "placeat",
    "comm_remark": "nihil",
    "comm_date": "ducimus",
    "amount": 4,
    "booking_commision_id": "ad"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/commision/add';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'nihil',
            'booking_room_id' => 'placeat',
            'comm_remark' => 'nihil',
            'comm_date' => 'ducimus',
            'amount' => 4,
            'booking_commision_id' => 'ad',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Commision",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/booking/commision/add

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: nihil

booking_room_id   string     

uuid of booking room Example: placeat

comm_remark   string     

remark Of bill Example: nihil

comm_date   string  optional    

add this value commision date with format date Y-m-d H:i:s. Exmp:2024-02-18 Example: ducimus

amount   integer     

of bill amount Example: 4

booking_commision_id   string     

uuid of Booking Commision, if want update commision data trx not close Example: ad

Remove Commision

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/commision/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"nemo\",
    \"booking_room_id\": \"possimus\",
    \"booking_commision_id\": \"modi\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/commision/remove"
);

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

let body = {
    "booking_id": "nemo",
    "booking_room_id": "possimus",
    "booking_commision_id": "modi"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/commision/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'nemo',
            'booking_room_id' => 'possimus',
            'booking_commision_id' => 'modi',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Remove Commision ",
    "data": []
}
 

Request   

POST api/v1/booking/commision/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: nemo

booking_room_id   string     

uuid of booking room Example: possimus

booking_commision_id   string     

uuid of booking Payment Example: modi

Option Add Commision Input

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/commision/add/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"agent\",
    \"property_id\": \"ducimus\",
    \"query\": \"sunt\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/commision/add/dropdown/list"
);

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

let body = {
    "mode": "agent",
    "property_id": "ducimus",
    "query": "sunt"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/commision/add/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'agent',
            'property_id' => 'ducimus',
            'query' => 'sunt',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Founds",
    "data": [
        {
            "key": "f0c07a03-0e9c-4cf2-a362-a29ac4f28bbd",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "6dca87d1-bbe1-4255-9f54-df139399eb3a",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "e85e160d-495a-4a02-9f26-8867bd38a722",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "69fd3521-dc0e-434c-bdba-39e56e3a0c90",
            "label": "Mrs. Ernawati Ni Luh"
        }
    ]
}
 

Request   

POST api/v1/booking/commision/add/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: agent

Must be one of:
  • agent
property_id   string     

uuid of Property Example: ducimus

query   string  optional    

this use for guest Example: sunt

Booking Add Discount

Add Discount

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/discount/add" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"et\",
    \"booking_room_id\": \"sint\",
    \"discount_option_id\": \"ea\",
    \"discount_for\": \"agent\",
    \"discount_remark\": \"consequuntur\",
    \"discount_date\": \"dolorem\",
    \"amount\": 13,
    \"booking_discount_id\": \"delectus\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/discount/add"
);

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

let body = {
    "booking_id": "et",
    "booking_room_id": "sint",
    "discount_option_id": "ea",
    "discount_for": "agent",
    "discount_remark": "consequuntur",
    "discount_date": "dolorem",
    "amount": 13,
    "booking_discount_id": "delectus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/discount/add';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'et',
            'booking_room_id' => 'sint',
            'discount_option_id' => 'ea',
            'discount_for' => 'agent',
            'discount_remark' => 'consequuntur',
            'discount_date' => 'dolorem',
            'amount' => 13,
            'booking_discount_id' => 'delectus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Discount",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/booking/discount/add

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: et

booking_room_id   string     

uuid of booking room Example: sint

discount_option_id   string     

uuid of Discount options Example: ea

discount_for   string  optional    

The discount. Example: agent

Must be one of:
  • agent
  • guest
discount_remark   string     

remark Of Discount Example: consequuntur

discount_date   string  optional    

add this value Discount date with format date Y-m-d H:i:s. Exmp:2024-02-18 Example: dolorem

amount   integer     

of bill amount Example: 13

booking_discount_id   string     

uuid of Booking Discount, if want update discount data trx not close Example: delectus

Remove Discount

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/discount/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"molestiae\",
    \"booking_room_id\": \"doloremque\",
    \"booking_discount_id\": \"amet\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/discount/remove"
);

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

let body = {
    "booking_id": "molestiae",
    "booking_room_id": "doloremque",
    "booking_discount_id": "amet"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/discount/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'molestiae',
            'booking_room_id' => 'doloremque',
            'booking_discount_id' => 'amet',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Remove Discount ",
    "data": []
}
 

Request   

POST api/v1/booking/discount/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: molestiae

booking_room_id   string     

uuid of booking room Example: doloremque

booking_discount_id   string     

uuid of booking Discount Example: amet

Option Add Discount Input

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/discount/add/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"agent\",
    \"property_id\": \"voluptates\",
    \"query\": \"similique\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/discount/add/dropdown/list"
);

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

let body = {
    "mode": "agent",
    "property_id": "voluptates",
    "query": "similique"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/discount/add/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'agent',
            'property_id' => 'voluptates',
            'query' => 'similique',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Founds",
    "data": [
        {
            "key": "f0c07a03-0e9c-4cf2-a362-a29ac4f28bbd",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "6dca87d1-bbe1-4255-9f54-df139399eb3a",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "e85e160d-495a-4a02-9f26-8867bd38a722",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "69fd3521-dc0e-434c-bdba-39e56e3a0c90",
            "label": "Mrs. Ernawati Ni Luh"
        }
    ]
}
 

Request   

POST api/v1/booking/discount/add/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: agent

Must be one of:
  • agent
  • guest
  • discountlist
property_id   string     

uuid of Property Example: voluptates

query   string  optional    

this use for guest Example: similique

Booking Add Payment

Add Payment

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/payment/add" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"quis\",
    \"booking_room_id\": \"inventore\",
    \"payment_option_id\": \"hic\",
    \"payment_date\": \"omnis\",
    \"amount\": 7,
    \"remark\": \"quod\",
    \"payment_method\": null
}"
const url = new URL(
    "http://localhost/api/v1/booking/payment/add"
);

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

let body = {
    "booking_id": "quis",
    "booking_room_id": "inventore",
    "payment_option_id": "hic",
    "payment_date": "omnis",
    "amount": 7,
    "remark": "quod",
    "payment_method": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/payment/add';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'quis',
            'booking_room_id' => 'inventore',
            'payment_option_id' => 'hic',
            'payment_date' => 'omnis',
            'amount' => 7,
            'remark' => 'quod',
            'payment_method' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/booking/payment/add

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: quis

booking_room_id   string     

uuid of booking room Example: inventore

payment_option_id   string     

uuid of Option Example: hic

payment_date   string  optional    

add this value payment date with format date Y-m-d H:i:s. Exmp:2024-02-18 Example: omnis

amount   integer     

of payment amount Example: 7

remark   string     

remark Of bill Example: quod

payment_method   object[]  optional    

please add uuid payment_option_methods and amount.

Remove Payment

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/payment/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"ducimus\",
    \"booking_room_id\": \"beatae\",
    \"booking_payment_id\": \"quia\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/payment/remove"
);

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

let body = {
    "booking_id": "ducimus",
    "booking_room_id": "beatae",
    "booking_payment_id": "quia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/payment/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'ducimus',
            'booking_room_id' => 'beatae',
            'booking_payment_id' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Remove Payment ",
    "data": []
}
 

Request   

POST api/v1/booking/payment/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: ducimus

booking_room_id   string     

uuid of booking room Example: beatae

booking_payment_id   string     

uuid of booking Payment Example: quia

Option Add Payment Input

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/payment/add/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"payment_option\",
    \"property_id\": \"tempore\",
    \"payment_id\": \"rerum\",
    \"booking_room_id\": \"ipsa\",
    \"query\": \"quo\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/payment/add/dropdown/list"
);

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

let body = {
    "mode": "payment_option",
    "property_id": "tempore",
    "payment_id": "rerum",
    "booking_room_id": "ipsa",
    "query": "quo"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/payment/add/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'payment_option',
            'property_id' => 'tempore',
            'payment_id' => 'rerum',
            'booking_room_id' => 'ipsa',
            'query' => 'quo',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Founds",
    "data": [
        {
            "key": "f0c07a03-0e9c-4cf2-a362-a29ac4f28bbd",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "6dca87d1-bbe1-4255-9f54-df139399eb3a",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "e85e160d-495a-4a02-9f26-8867bd38a722",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "69fd3521-dc0e-434c-bdba-39e56e3a0c90",
            "label": "Mrs. Ernawati Ni Luh"
        }
    ]
}
 

Request   

POST api/v1/booking/payment/add/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: payment_option

Must be one of:
  • payment_option
  • payment_method
  • list_outstanding_bill
property_id   string     

uuid of Property Example: tempore

payment_id   string     

uuid of Payment Option use this parameter when mode payment_method Example: rerum

booking_room_id   string     

uuid of Booking Room this Option use this parameter when mode list_outstanding_bill Example: ipsa

query   string  optional    

this use for guest Example: quo

Booking Chart

Chart Calendar Data

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/calendar/chart" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quo\",
    \"start_date\": \"maiores\",
    \"end_date\": \"vitae\",
    \"room_type_id\": \"molestiae\",
    \"bed_type_id\": \"dignissimos\",
    \"booking_no\": \"et\",
    \"show_unsigned_room\": \"false\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/calendar/chart"
);

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

let body = {
    "property_id": "quo",
    "start_date": "maiores",
    "end_date": "vitae",
    "room_type_id": "molestiae",
    "bed_type_id": "dignissimos",
    "booking_no": "et",
    "show_unsigned_room": "false"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/calendar/chart';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quo',
            'start_date' => 'maiores',
            'end_date' => 'vitae',
            'room_type_id' => 'molestiae',
            'bed_type_id' => 'dignissimos',
            'booking_no' => 'et',
            'show_unsigned_room' => 'false',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/calendar/chart

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: quo

start_date   string     

chart start date format Y-m-d. Example: maiores

end_date   string     

chart end date maximum 60 days format Y-m-d. Example: vitae

room_type_id   string  optional    

uuid room type if all room please dont provide room type id. Example: molestiae

bed_type_id   string  optional    

uuid bed type if all bed please dont provide bed type id. Example: dignissimos

booking_no   string  optional    

Booking number. Example: et

show_unsigned_room   boolean.  optional    

Example: false

Summary Info Data

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/summary/info" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"omnis\",
    \"periode\": \"alias\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/summary/info"
);

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

let body = {
    "property_id": "omnis",
    "periode": "alias"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/summary/info';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'omnis',
            'periode' => 'alias',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/summary/info

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: omnis

periode   string     

chart start date format Y-m Example: alias

Summary Not Assigned List

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/summary/unanssigned" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quos\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/summary/unanssigned"
);

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

let body = {
    "property_id": "quos"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/summary/unanssigned';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quos',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/summary/unanssigned

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: quos

Summary Outstanding List

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/summary/bookingoutstanding" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"in\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/summary/bookingoutstanding"
);

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

let body = {
    "property_id": "in"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/summary/bookingoutstanding';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'in',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/summary/bookingoutstanding

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: in

Booking Editor

Option Booking Input

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/editor/dropdownoptionlist/source_list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"labore\",
    \"query\": \"sed\",
    \"findby\": \"first_name\",
    \"findvalue\": \"nulla\",
    \"room_type_id\": \"sed\",
    \"arival_date\": \"ad\",
    \"depature_date\": \"nemo\",
    \"total_adult\": \"totam\",
    \"total_child\": \"ipsa\",
    \"default_rate\": \"dolorem\",
    \"default_extra_adult_rate\": \"dolores\",
    \"default_extra_child_rate\": \"possimus\",
    \"default_rate_detail\": \"unde\",
    \"booking_room_id\": \"dolore\",
    \"split_to\": [
        \"ut\"
    ],
    \"current_room_type_id\": \"sit\",
    \"current_room_id\": \"pariatur\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/editor/dropdownoptionlist/source_list"
);

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

let body = {
    "property_id": "labore",
    "query": "sed",
    "findby": "first_name",
    "findvalue": "nulla",
    "room_type_id": "sed",
    "arival_date": "ad",
    "depature_date": "nemo",
    "total_adult": "totam",
    "total_child": "ipsa",
    "default_rate": "dolorem",
    "default_extra_adult_rate": "dolores",
    "default_extra_child_rate": "possimus",
    "default_rate_detail": "unde",
    "booking_room_id": "dolore",
    "split_to": [
        "ut"
    ],
    "current_room_type_id": "sit",
    "current_room_id": "pariatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/editor/dropdownoptionlist/source_list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'labore',
            'query' => 'sed',
            'findby' => 'first_name',
            'findvalue' => 'nulla',
            'room_type_id' => 'sed',
            'arival_date' => 'ad',
            'depature_date' => 'nemo',
            'total_adult' => 'totam',
            'total_child' => 'ipsa',
            'default_rate' => 'dolorem',
            'default_extra_adult_rate' => 'dolores',
            'default_extra_child_rate' => 'possimus',
            'default_rate_detail' => 'unde',
            'booking_room_id' => 'dolore',
            'split_to' => [
                'ut',
            ],
            'current_room_type_id' => 'sit',
            'current_room_id' => 'pariatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/booking/editor/dropdownoptionlist/{mode?}

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

URL Parameters

mode   string     

this parameter for get option list. Example: source_list

Must be one of:
  • roomtypelist
  • agent
  • paymentoption
  • roomavailable
  • roomavailable_edit
  • guestprefix
  • guestcountry
  • guestnationality
  • guestidentitytype
  • guestexistingfind
  • gueststatusoption
  • propertycurrency
  • taxandservice
  • roomratedaily
  • roomrateplan
  • bookingstatus
  • paymentcollecttype
  • splitstayperiod

Body Parameters

property_id   string     

uuid of Property Example: labore

query   string  optional    

this using for in case option have filter Example: sed

findby   string  optional    

use this parameter when mode "guestexistingfind". Example: first_name

Must be one of:
  • first_name
  • name
  • identityno
  • email
  • phone
findvalue   string  optional    

use this parameter when mode "guestexistingfind". Example: nulla

room_type_id   string  optional    

use this parameter when mode "roomrateplan". Example: sed

arival_date   string  optional    

use this parameter whed get roomavailable. Exmp: Y-m-d Example: ad

depature_date   string  optional    

use this parameter whed get roomavailable. Exmp: Y-m-d, Example: nemo

total_adult   string  optional    

use this parameter when mode "roomrateplan". Exmp:1, Example: totam

total_child   string  optional    

use this parameter when mode "roomrateplan". Exmp:1, Example: ipsa

default_rate   string  optional    

use this parameter when get roomratedaily with set default rate. Example: dolorem

default_extra_adult_rate   string  optional    

use this parameter when get roomratedaily with set default rate. Example: dolores

default_extra_child_rate   string  optional    

use this parameter when get roomratedaily with set default rate. Example: possimus

default_rate_detail   string  optional    

use this parameter required when get roomratedaily with default rate. Example: unde

booking_room_id   string  optional    

optional, use this parameter when mode "roomavailable_edit" as a shortcut: the booking room's current room_type and room are derived from it and force-included automatically. If current_room_type_id / current_room_id are also sent, they override. Example: dolore

split_to   string[]  optional    

use this parameter when mode "splitstayperiod". Each item: {arrival: Y-m-d, departure: Y-m-d, room_id: uuid}. The first item retains the original booking_room_id; subsequent items are returned with booking_room_id = null (new rooms).

current_room_type_id   string  optional    

optional, use this parameter when mode "roomavailable_edit". uuid of the room type the booking currently holds — when sent together with current_room_id, guaranteed to appear in the result even if otherwise blocked for the date range. Example: sit

current_room_id   string  optional    

optional, use this parameter when mode "roomavailable_edit". uuid of the room the booking currently holds — when sent together with current_room_type_id, guaranteed to appear in the result even if otherwise blocked for the date range. Example: pariatur

Create Booking

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/editor/create" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"consequatur\",
    \"property_agent_id\": \"et\",
    \"booking_status_id\": \"excepturi\",
    \"guest_booking\": {
        \"guest_prefix_id\": \"de7c9a42-67f9-470c-9547-0895c0fbf139\",
        \"first_name\": \"Rai Octa Vioni\",
        \"last_name\": \"Ni Luh\",
        \"country_id\": \"f2afc2ea-d2ee-40b7-89e5-553ad44a38c0\",
        \"national_id\": \"fc63c980-c572-481f-abbc-080abf282f14\",
        \"identity_type_id\": \"41d8118d-0136-425f-a0e6-9100fa2f5814\",
        \"identity_no\": \"20234560000000\",
        \"email\": \"[email protected]\",
        \"phone\": \"+6281805410047\",
        \"address\": \"jl Raya Umalas 1, gg surya no 2 kerobokan kelod, kuta utara, badung bali\"
    },
    \"booking_reference\": \"modi\",
    \"hold_date\": \"iusto\",
    \"total_adults\": 15,
    \"total_childrens\": 20,
    \"remark\": \"est\",
    \"arival\": \"2024-02-18\",
    \"depature\": \"2024-02-18\",
    \"room_lists\": {
        \"room_type_id\": \"c048f3f8-52e2-4492-9233-b32512249e8c\",
        \"room_id\": \"86649f37-4afa-4f65-a042-324e3954fffb\",
        \"guest_in_room\": {
            \"use_booking_guest\": true
        },
        \"adult\": 2,
        \"child\": 1,
        \"room_rate\": [
            {
                \"rate_plan_id\": \"cd9a9cf8-1fd8-4f99-9971-d365a295909a\",
                \"tax_and_service_id\": \"77ce3c78-36d6-4aee-9911-04121db5743d\",
                \"rate_date\": \"2024-07-08\",
                \"rate\": 350000,
                \"is_inherit_rate_plan\": true
            }
        ]
    }
}"
const url = new URL(
    "http://localhost/api/v1/booking/editor/create"
);

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

let body = {
    "property_id": "consequatur",
    "property_agent_id": "et",
    "booking_status_id": "excepturi",
    "guest_booking": {
        "guest_prefix_id": "de7c9a42-67f9-470c-9547-0895c0fbf139",
        "first_name": "Rai Octa Vioni",
        "last_name": "Ni Luh",
        "country_id": "f2afc2ea-d2ee-40b7-89e5-553ad44a38c0",
        "national_id": "fc63c980-c572-481f-abbc-080abf282f14",
        "identity_type_id": "41d8118d-0136-425f-a0e6-9100fa2f5814",
        "identity_no": "20234560000000",
        "email": "[email protected]",
        "phone": "+6281805410047",
        "address": "jl Raya Umalas 1, gg surya no 2 kerobokan kelod, kuta utara, badung bali"
    },
    "booking_reference": "modi",
    "hold_date": "iusto",
    "total_adults": 15,
    "total_childrens": 20,
    "remark": "est",
    "arival": "2024-02-18",
    "depature": "2024-02-18",
    "room_lists": {
        "room_type_id": "c048f3f8-52e2-4492-9233-b32512249e8c",
        "room_id": "86649f37-4afa-4f65-a042-324e3954fffb",
        "guest_in_room": {
            "use_booking_guest": true
        },
        "adult": 2,
        "child": 1,
        "room_rate": [
            {
                "rate_plan_id": "cd9a9cf8-1fd8-4f99-9971-d365a295909a",
                "tax_and_service_id": "77ce3c78-36d6-4aee-9911-04121db5743d",
                "rate_date": "2024-07-08",
                "rate": 350000,
                "is_inherit_rate_plan": true
            }
        ]
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/editor/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'consequatur',
            'property_agent_id' => 'et',
            'booking_status_id' => 'excepturi',
            'guest_booking' => [
                'guest_prefix_id' => 'de7c9a42-67f9-470c-9547-0895c0fbf139',
                'first_name' => 'Rai Octa Vioni',
                'last_name' => 'Ni Luh',
                'country_id' => 'f2afc2ea-d2ee-40b7-89e5-553ad44a38c0',
                'national_id' => 'fc63c980-c572-481f-abbc-080abf282f14',
                'identity_type_id' => '41d8118d-0136-425f-a0e6-9100fa2f5814',
                'identity_no' => '20234560000000',
                'email' => '[email protected]',
                'phone' => '+6281805410047',
                'address' => 'jl Raya Umalas 1, gg surya no 2 kerobokan kelod, kuta utara, badung bali',
            ],
            'booking_reference' => 'modi',
            'hold_date' => 'iusto',
            'total_adults' => 15,
            'total_childrens' => 20,
            'remark' => 'est',
            'arival' => '2024-02-18',
            'depature' => '2024-02-18',
            'room_lists' => [
                'room_type_id' => 'c048f3f8-52e2-4492-9233-b32512249e8c',
                'room_id' => '86649f37-4afa-4f65-a042-324e3954fffb',
                'guest_in_room' => [
                    'use_booking_guest' => true,
                ],
                'adult' => 2,
                'child' => 1,
                'room_rate' => [
                    [
                        'rate_plan_id' => 'cd9a9cf8-1fd8-4f99-9971-d365a295909a',
                        'tax_and_service_id' => '77ce3c78-36d6-4aee-9911-04121db5743d',
                        'rate_date' => '2024-07-08',
                        'rate' => 350000,
                        'is_inherit_rate_plan' => true,
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/editor/create

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: consequatur

property_agent_id   string     

uuid of Property Agent. Example: et

booking_status_id   string     

uuid of Booking Status. Example: excepturi

guest_booking   object     

detail of Guest make Bookig.

booking_reference   string  optional    

add this value if hafe booking reference. Example: modi

hold_date   string  optional    

add this value booking status hold with format date Y-m-d. Exmp:2024-02-18 Example: iusto

total_adults   integer  optional    

total Adult Guest on this booking Example: 15

total_childrens   integer  optional    

total Childrens Guest on this booking Example: 20

remark   string  optional    

add this value with sepecial request on this reservation Example: est

arival   string  optional    

add this value arival format date Y-m-d. Example: 2024-02-18

depature   string  optional    

add this value depature format date Y-m-d. Example: 2024-02-18

room_lists   object  optional    

this list room for this booking.

Calculate Booking Summary

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/editor/calculate-summary" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quos\",
    \"room_lists\": null
}"
const url = new URL(
    "http://localhost/api/v1/booking/editor/calculate-summary"
);

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

let body = {
    "property_id": "quos",
    "room_lists": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/editor/calculate-summary';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quos',
            'room_lists' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/editor/calculate-summary

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: quos

room_lists   object     

detail Room List.

Save / Edit Booking

requires authentication

Update detail booking yang sudah ada secara menyeluruh — header, tamu, dan daftar kamar sekaligus.

Logika room_lists:

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/editor/save" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"550e8400-e29b-41d4-a716-446655440000\",
    \"booking_id\": \"550e8400-e29b-41d4-a716-446655440001\",
    \"booking_status_id\": \"550e8400-e29b-41d4-a716-446655440010\",
    \"property_agent_id\": \"550e8400-e29b-41d4-a716-446655440011\",
    \"booking_reference\": \"OTA-20240801-001\",
    \"remark\": \"Late check-in request\",
    \"hold_date\": \"2026-06-15\",
    \"payment_collect_type_id\": \"550e8400-e29b-41d4-a716-446655440050\",
    \"guest_booking\": {
        \"guest_id\": \"550e8400-e29b-41d4-a716-446655440020\",
        \"guest_prefix_id\": \"550e8400-e29b-41d4-a716-446655440021\",
        \"first_name\": \"John\",
        \"last_name\": \"Doe\",
        \"email\": \"[email protected]\",
        \"phone\": \"+6281234567890\",
        \"country_id\": \"550e8400-e29b-41d4-a716-446655440022\",
        \"national_id\": \"550e8400-e29b-41d4-a716-446655440023\",
        \"identity_type_id\": \"550e8400-e29b-41d4-a716-446655440024\",
        \"identity_no\": \"3271010101900001\",
        \"address\": \"Jl. Raya Kuta No. 1, Bali\"
    },
    \"room_lists\": [
        \"amet\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/editor/save"
);

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

let body = {
    "property_id": "550e8400-e29b-41d4-a716-446655440000",
    "booking_id": "550e8400-e29b-41d4-a716-446655440001",
    "booking_status_id": "550e8400-e29b-41d4-a716-446655440010",
    "property_agent_id": "550e8400-e29b-41d4-a716-446655440011",
    "booking_reference": "OTA-20240801-001",
    "remark": "Late check-in request",
    "hold_date": "2026-06-15",
    "payment_collect_type_id": "550e8400-e29b-41d4-a716-446655440050",
    "guest_booking": {
        "guest_id": "550e8400-e29b-41d4-a716-446655440020",
        "guest_prefix_id": "550e8400-e29b-41d4-a716-446655440021",
        "first_name": "John",
        "last_name": "Doe",
        "email": "[email protected]",
        "phone": "+6281234567890",
        "country_id": "550e8400-e29b-41d4-a716-446655440022",
        "national_id": "550e8400-e29b-41d4-a716-446655440023",
        "identity_type_id": "550e8400-e29b-41d4-a716-446655440024",
        "identity_no": "3271010101900001",
        "address": "Jl. Raya Kuta No. 1, Bali"
    },
    "room_lists": [
        "amet"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/editor/save';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => '550e8400-e29b-41d4-a716-446655440000',
            'booking_id' => '550e8400-e29b-41d4-a716-446655440001',
            'booking_status_id' => '550e8400-e29b-41d4-a716-446655440010',
            'property_agent_id' => '550e8400-e29b-41d4-a716-446655440011',
            'booking_reference' => 'OTA-20240801-001',
            'remark' => 'Late check-in request',
            'hold_date' => '2026-06-15',
            'payment_collect_type_id' => '550e8400-e29b-41d4-a716-446655440050',
            'guest_booking' => [
                'guest_id' => '550e8400-e29b-41d4-a716-446655440020',
                'guest_prefix_id' => '550e8400-e29b-41d4-a716-446655440021',
                'first_name' => 'John',
                'last_name' => 'Doe',
                'email' => '[email protected]',
                'phone' => '+6281234567890',
                'country_id' => '550e8400-e29b-41d4-a716-446655440022',
                'national_id' => '550e8400-e29b-41d4-a716-446655440023',
                'identity_type_id' => '550e8400-e29b-41d4-a716-446655440024',
                'identity_no' => '3271010101900001',
                'address' => 'Jl. Raya Kuta No. 1, Bali',
            ],
            'room_lists' => [
                'amet',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Booking saved successfully",
    "data": {
        "booking_id": "550e8400-e29b-41d4-a716-446655440001",
        "booking_no": "20260601/LOKAROOMS/001",
        "rooms_added": 1,
        "rooms_updated": 1,
        "rooms_removed": 0
    }
}
 

Example response (400, Validasi gagal):


{
    "message": "Please input valid Data",
    "data": {
        "room_lists": [
            "The room lists field is required."
        ]
    }
}
 

Example response (400, Booking berstatus cancelled):


{
    "message": "Cannot edit a cancelled booking",
    "data": []
}
 

Example response (400, Booking harus punya minimal 1 kamar):


{
    "message": "Booking must have at least 1 room",
    "data": []
}
 

Example response (400, Kamar sudah check-in, tidak bisa dihapus):


{
    "message": "Cannot remove a checked-in room from booking",
    "data": {
        "booking_room_uuid": "550e8400-e29b-41d4-a716-446655440030"
    }
}
 

Example response (400, Ada tagihan belum lunas):


{
    "message": "Cannot remove room with outstanding unpaid bills",
    "data": {
        "booking_room_uuid": "550e8400-e29b-41d4-a716-446655440030"
    }
}
 

Example response (400, Ada payment):


{
    "message": "Cannot remove room with existing payments",
    "data": {
        "booking_room_uuid": "550e8400-e29b-41d4-a716-446655440030"
    }
}
 

Example response (400, Data kamar baru tidak valid):


{
    "message": "Invalid new room data",
    "data": []
}
 

Example response (400, Kamar tidak tersedia (room baru)):


{
    "message": "Room Deluxe 101 is not available for the selected dates",
    "data": {
        "room": "Deluxe 101"
    }
}
 

Example response (400, Kamar tidak tersedia (update dates)):


{
    "message": "Room is not available for the selected new dates",
    "data": {
        "booking_room_uuid": "..."
    }
}
 

Example response (400, Arrival tidak bisa diubah, sudah check-in):


{
    "message": "Arrival date cannot be changed, guest has already checked in",
    "data": {
        "booking_room_uuid": "..."
    }
}
 

Example response (404, Booking tidak ditemukan):


{
    "message": "Booking not found",
    "data": []
}
 

Example response (500, Server error):


{
    "message": "An error occurred, please try again",
    "data": []
}
 

Request   

POST api/v1/booking/editor/save

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

property_id   string     

UUID properti. Example: 550e8400-e29b-41d4-a716-446655440000

booking_id   string     

UUID booking yang akan diupdate. Example: 550e8400-e29b-41d4-a716-446655440001

booking_status_id   string  optional    

UUID status booking (opsional). Example: 550e8400-e29b-41d4-a716-446655440010

property_agent_id   string  optional    

UUID agen properti (opsional). Example: 550e8400-e29b-41d4-a716-446655440011

booking_reference   string  optional    

Referensi eksternal, max 200 karakter (opsional). Example: OTA-20240801-001

remark   string  optional    

Catatan khusus, max 1000 karakter (opsional). Example: Late check-in request

hold_date   string  optional    

Format Y-m-d. Jika diisi, otomatis set status On Hold (opsional). Example: 2026-06-15

payment_collect_type_id   string  optional    

UUID payment collect type default untuk semua kamar baru; bisa di-override per kamar (opsional). Example: 550e8400-e29b-41d4-a716-446655440050

guest_booking   object  optional    

Data tamu utama booking. Jika dikirim, guest_prefix_id, first_name, last_name wajib ada (opsional).

guest_id   string  optional    

UUID tamu existing. Jika diisi, update profil yang sudah ada (opsional). Example: 550e8400-e29b-41d4-a716-446655440020

guest_prefix_id   string     

UUID prefix tamu. Example: 550e8400-e29b-41d4-a716-446655440021

first_name   string     

Nama depan, max 100. Example: John

last_name   string     

Nama belakang, max 100. Example: Doe

email   string  optional    

Email tamu (opsional). Example: [email protected]

phone   string  optional    

Nomor telepon (opsional). Example: +6281234567890

country_id   string  optional    

UUID negara asal (opsional). Example: 550e8400-e29b-41d4-a716-446655440022

national_id   string  optional    

UUID kebangsaan (opsional). Example: 550e8400-e29b-41d4-a716-446655440023

identity_type_id   string  optional    

UUID jenis identitas (opsional). Example: 550e8400-e29b-41d4-a716-446655440024

identity_no   string  optional    

Nomor identitas (opsional). Example: 3271010101900001

address   string  optional    

Alamat tamu (opsional). Example: Jl. Raya Kuta No. 1, Bali

room_lists   string[]     

Daftar kamar. Min 1 item. Setiap item wajib memiliki changes_status. Kamar yang tidak disertakan dalam payload dipertahankan otomatis.

changes_status   string     

Aksi pada kamar: add, update, atau remove. Example: add

booking_room_id   string  optional    

UUID kamar existing. Wajib untuk changes_status: update dan remove (opsional untuk add). Example: `550e8400-e29b-41d4-a716-446655440030

Kamar baru (changes_status: "add" — semua field berikut required):`

room_type_id   string     

UUID tipe kamar. Example: 550e8400-e29b-41d4-a716-446655440060

room_id   string     

UUID kamar spesifik, harus milik room_type_id. Example: 550e8400-e29b-41d4-a716-446655440061

rate_plan_id   string     

UUID rate plan. Example: 550e8400-e29b-41d4-a716-446655440040

adult   integer     

Jumlah tamu dewasa (min 0). Example: 2

child   integer     

Jumlah tamu anak (min 0). Example: 1

extra_adult   integer     

Jumlah extra bed dewasa (min 0). Example: 0

extra_child   integer     

Jumlah extra bed anak (min 0). Example: 0

arrival   string     

Tanggal check-in, format Y-m-d. Example: 2026-06-01

departure   string     

Tanggal check-out, format Y-m-d. Harus setelah arrival. Example: 2026-06-03

payment_collect_type_id   string     

UUID payment collect type per kamar. Example: 550e8400-e29b-41d4-a716-446655440050

list_inclusion   string[]     

Daftar inclusi rate plan (dari endpoint roomratedaily).

room_rate   string[]     

Tarif harian per malam (dari endpoint roomratedaily).

guest_in_room   object  optional    

Data tamu di kamar (opsional). Kirim {"use_booking_guest":true} untuk menyalin tamu utama booking.

Partial Update Booking

requires authentication

Update per bagian (part) dari booking. Kirim parameter part untuk menentukan seksi mana yang akan diupdate, beserta data yang berisi field yang diubah.

Parts yang tersedia:

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/editor/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"550e8400-e29b-41d4-a716-446655440000\",
    \"booking_id\": \"550e8400-e29b-41d4-a716-446655440001\",
    \"part\": \"booking_guest\",
    \"data\": {
        \"property_agent_id\": \"550e8400-e29b-41d4-a716-446655440010\",
        \"booking_status_id\": \"550e8400-e29b-41d4-a716-446655440011\",
        \"booking_reference\": \"OTA-20240801-001\",
        \"remark\": \"Late check-in request\",
        \"hold_date\": \"2026-06-15\\n\\n**part = booking_guest** — selalu membuat\\/update record di `property_guest_lists`\",
        \"guest_prefix_id\": \"550e8400-e29b-41d4-a716-446655440021\",
        \"first_name\": \"John\",
        \"last_name\": \"Doe\",
        \"guest_id\": \"550e8400-e29b-41d4-a716-446655440020\",
        \"email\": \"[email protected]\",
        \"phone\": \"+6281234567890\",
        \"country_id\": \"550e8400-e29b-41d4-a716-446655440022\",
        \"national_id\": \"550e8400-e29b-41d4-a716-446655440023\",
        \"identity_type_id\": \"550e8400-e29b-41d4-a716-446655440024\",
        \"identity_no\": \"3271010101900001\",
        \"address\": \"Jl. Raya Kuta No. 1, Bali\\n\\n**part = room_occupancy \\/ room_dates \\/ room_rateplan \\/ room_payment_type \\/ room_guest**\",
        \"booking_room_id\": \"550e8400-e29b-41d4-a716-446655440030\\n\\n**part = room_occupancy** — recalculate totals di header booking\",
        \"adult\": 2,
        \"child\": 1,
        \"extra_adult\": 0,
        \"extra_child\": 0,
        \"arrival\": \"2026-06-01\",
        \"departure\": \"2026-06-03\\n\\n**part = room_rateplan** — validasi rate plan terhadap tanggal & occupancy, recalculate rates\",
        \"rate_plan_id\": \"550e8400-e29b-41d4-a716-446655440040\\n\\n**part = room_payment_type** — bisa untuk satu kamar atau semua kamar dalam booking\",
        \"payment_collect_type_id\": \"550e8400-e29b-41d4-a716-446655440050\\n\\n**part = room_add** — cek availability, blokir, dispatch rate job, recalculate totals\",
        \"room_type_id\": \"550e8400-e29b-41d4-a716-446655440060\",
        \"room_id\": \"550e8400-e29b-41d4-a716-446655440061\",
        \"guest_in_room\": null,
        \"use_booking_guest\": true
    }
}"
const url = new URL(
    "http://localhost/api/v1/booking/editor/update"
);

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

let body = {
    "property_id": "550e8400-e29b-41d4-a716-446655440000",
    "booking_id": "550e8400-e29b-41d4-a716-446655440001",
    "part": "booking_guest",
    "data": {
        "property_agent_id": "550e8400-e29b-41d4-a716-446655440010",
        "booking_status_id": "550e8400-e29b-41d4-a716-446655440011",
        "booking_reference": "OTA-20240801-001",
        "remark": "Late check-in request",
        "hold_date": "2026-06-15\n\n**part = booking_guest** — selalu membuat\/update record di `property_guest_lists`",
        "guest_prefix_id": "550e8400-e29b-41d4-a716-446655440021",
        "first_name": "John",
        "last_name": "Doe",
        "guest_id": "550e8400-e29b-41d4-a716-446655440020",
        "email": "[email protected]",
        "phone": "+6281234567890",
        "country_id": "550e8400-e29b-41d4-a716-446655440022",
        "national_id": "550e8400-e29b-41d4-a716-446655440023",
        "identity_type_id": "550e8400-e29b-41d4-a716-446655440024",
        "identity_no": "3271010101900001",
        "address": "Jl. Raya Kuta No. 1, Bali\n\n**part = room_occupancy \/ room_dates \/ room_rateplan \/ room_payment_type \/ room_guest**",
        "booking_room_id": "550e8400-e29b-41d4-a716-446655440030\n\n**part = room_occupancy** — recalculate totals di header booking",
        "adult": 2,
        "child": 1,
        "extra_adult": 0,
        "extra_child": 0,
        "arrival": "2026-06-01",
        "departure": "2026-06-03\n\n**part = room_rateplan** — validasi rate plan terhadap tanggal & occupancy, recalculate rates",
        "rate_plan_id": "550e8400-e29b-41d4-a716-446655440040\n\n**part = room_payment_type** — bisa untuk satu kamar atau semua kamar dalam booking",
        "payment_collect_type_id": "550e8400-e29b-41d4-a716-446655440050\n\n**part = room_add** — cek availability, blokir, dispatch rate job, recalculate totals",
        "room_type_id": "550e8400-e29b-41d4-a716-446655440060",
        "room_id": "550e8400-e29b-41d4-a716-446655440061",
        "guest_in_room": null,
        "use_booking_guest": true
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/editor/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => '550e8400-e29b-41d4-a716-446655440000',
            'booking_id' => '550e8400-e29b-41d4-a716-446655440001',
            'part' => 'booking_guest',
            'data' => [
                'property_agent_id' => '550e8400-e29b-41d4-a716-446655440010',
                'booking_status_id' => '550e8400-e29b-41d4-a716-446655440011',
                'booking_reference' => 'OTA-20240801-001',
                'remark' => 'Late check-in request',
                'hold_date' => '2026-06-15'."\n"
                    ."\n"
                    .'**part = booking_guest** — selalu membuat/update record di `property_guest_lists`',
                'guest_prefix_id' => '550e8400-e29b-41d4-a716-446655440021',
                'first_name' => 'John',
                'last_name' => 'Doe',
                'guest_id' => '550e8400-e29b-41d4-a716-446655440020',
                'email' => '[email protected]',
                'phone' => '+6281234567890',
                'country_id' => '550e8400-e29b-41d4-a716-446655440022',
                'national_id' => '550e8400-e29b-41d4-a716-446655440023',
                'identity_type_id' => '550e8400-e29b-41d4-a716-446655440024',
                'identity_no' => '3271010101900001',
                'address' => 'Jl. Raya Kuta No. 1, Bali'."\n"
                    ."\n"
                    .'**part = room_occupancy / room_dates / room_rateplan / room_payment_type / room_guest**',
                'booking_room_id' => '550e8400-e29b-41d4-a716-446655440030'."\n"
                    ."\n"
                    .'**part = room_occupancy** — recalculate totals di header booking',
                'adult' => 2,
                'child' => 1,
                'extra_adult' => 0,
                'extra_child' => 0,
                'arrival' => '2026-06-01',
                'departure' => '2026-06-03'."\n"
                    ."\n"
                    .'**part = room_rateplan** — validasi rate plan terhadap tanggal & occupancy, recalculate rates',
                'rate_plan_id' => '550e8400-e29b-41d4-a716-446655440040'."\n"
                    ."\n"
                    .'**part = room_payment_type** — bisa untuk satu kamar atau semua kamar dalam booking',
                'payment_collect_type_id' => '550e8400-e29b-41d4-a716-446655440050'."\n"
                    ."\n"
                    .'**part = room_add** — cek availability, blokir, dispatch rate job, recalculate totals',
                'room_type_id' => '550e8400-e29b-41d4-a716-446655440060',
                'room_id' => '550e8400-e29b-41d4-a716-446655440061',
                'guest_in_room' => null,
                'use_booking_guest' => true,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200, Sukses (semua part kecuali room_add)):


{
    "message": "Booking updated successfully",
    "data": {
        "booking_id": "550e8400-e29b-41d4-a716-446655440001",
        "part": "booking_guest",
        "updated_at": "2026-06-01T10:00:00.000000Z"
    }
}
 

Example response (200, Sukses (part=room_add)):


{
    "message": "Booking updated successfully",
    "data": {
        "booking_id": "550e8400-e29b-41d4-a716-446655440001",
        "part": "room_add",
        "booking_room_id": "550e8400-e29b-41d4-a716-446655440099",
        "updated_at": "2026-06-01T10:00:00.000000Z"
    }
}
 

Example response (400, Validasi gagal):


{
    "message": "Please input valid Data",
    "data": {
        "part": [
            "The selected part is invalid."
        ]
    }
}
 

Example response (400, Kamar tidak tersedia (room_dates)):


{
    "message": "Room is not available for the selected new dates",
    "data": []
}
 

Example response (400, Kamar sudah check-in (room_dates)):


{
    "message": "Arrival date cannot be changed, guest has already checked in",
    "data": []
}
 

Example response (400, Rate plan tidak valid (room_rateplan)):


{
    "message": "Rate plan is not available for the selected dates or guest count",
    "data": []
}
 

Example response (400, Data kamar tidak valid (room_add)):


{
    "message": "Invalid room data",
    "data": []
}
 

Example response (400, Kamar tidak tersedia (room_add)):


{
    "message": "Room {name} is not available for the selected dates",
    "data": {
        "room": "Deluxe 101"
    }
}
 

Example response (404, Booking tidak ditemukan):


{
    "message": "Booking not found",
    "data": []
}
 

Example response (404, Booking room tidak ditemukan):


{
    "message": "Booking room not found in this booking",
    "data": []
}
 

Example response (404, Rate plan tidak ditemukan (room_rateplan)):


{
    "message": "Rate plan not found",
    "data": []
}
 

Example response (404, Payment type tidak ditemukan):


{
    "message": "Payment collect type not found",
    "data": []
}
 

Example response (404, Guest tidak ditemukan di property (room_guest)):


{
    "message": "Guest not found in this property",
    "data": []
}
 

Example response (500, Server error):


{
    "message": "An error occurred, please try again",
    "data": []
}
 

Request   

POST api/v1/booking/editor/update

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

property_id   string     

UUID properti. Example: 550e8400-e29b-41d4-a716-446655440000

booking_id   string     

UUID booking yang akan diupdate. Example: 550e8400-e29b-41d4-a716-446655440001

part   string     

Nama bagian yang diupdate. Example: booking_guest

Must be one of:
  • `booking_info`
  • `booking_guest`
  • `room_occupancy`
  • `room_dates`
  • `room_rateplan`
  • `room_payment_type`
  • `room_add`
  • `room_guest`
data   object     

Data yang diupdate. Isi berbeda sesuai nilai part — lihat deskripsi masing-masing part di bawah.

part = booking_info

property_agent_id   string  optional    

UUID agen (opsional). Example: 550e8400-e29b-41d4-a716-446655440010

booking_status_id   string  optional    

UUID status booking (opsional). Example: 550e8400-e29b-41d4-a716-446655440011

booking_reference   string  optional    

Referensi eksternal, max 200 karakter (opsional). Example: OTA-20240801-001

remark   string  optional    

Catatan khusus, max 1000 karakter (opsional). Example: Late check-in request

hold_date   string  optional    

Format Y-m-d. Jika diisi, otomatis set status On Hold; kirim null untuk menghapus hold date (opsional). Example: `2026-06-15

part = booking_guest — selalu membuat/update record di `property_guest_lists``

guest_prefix_id   string     

UUID prefix tamu (required untuk part=booking_guest). Example: 550e8400-e29b-41d4-a716-446655440021

first_name   string     

Nama depan tamu, max 100 (required untuk part=booking_guest). Example: John

last_name   string     

Nama belakang tamu, max 100 (required untuk part=booking_guest). Example: Doe

guest_id   string  optional    

UUID tamu existing. Jika diisi, update profil yang sudah ada (opsional, untuk part=booking_guest dan room_guest). Example: 550e8400-e29b-41d4-a716-446655440020

email   string  optional    

Email tamu (opsional). Example: [email protected]

phone   string  optional    

Nomor telepon tamu (opsional). Example: +6281234567890

country_id   string  optional    

UUID negara asal (opsional). Example: 550e8400-e29b-41d4-a716-446655440022

national_id   string  optional    

UUID kebangsaan (opsional). Example: 550e8400-e29b-41d4-a716-446655440023

identity_type_id   string  optional    

UUID jenis identitas (opsional). Example: 550e8400-e29b-41d4-a716-446655440024

identity_no   string  optional    

Nomor identitas (opsional). Example: 3271010101900001

address   string  optional    

Alamat tamu (opsional). Example: `Jl. Raya Kuta No. 1, Bali

part = room_occupancy / room_dates / room_rateplan / room_payment_type / room_guest`

booking_room_id   string     

UUID booking room yang ditarget (required untuk part=room_occupancy, room_dates, room_rateplan, room_payment_type, room_guest). Example: `550e8400-e29b-41d4-a716-446655440030

part = room_occupancy — recalculate totals di header booking`

adult   integer     

Jumlah tamu dewasa (required untuk part=room_occupancy, min 0). Example: 2

child   integer     

Jumlah tamu anak (required untuk part=room_occupancy, min 0). Example: 1

extra_adult   integer     

Jumlah extra bed dewasa (required untuk part=room_occupancy, min 0). Example: 0

extra_child   integer     

Jumlah extra bed anak (required untuk part=room_occupancy, min 0). Example: 0

arrival   string     

Format Y-m-d (required untuk part=room_dates dan room_add). Example: 2026-06-01

departure   string     

Format Y-m-d, harus setelah arrival (required untuk part=room_dates dan room_add). Example: `2026-06-03

part = room_rateplan — validasi rate plan terhadap tanggal & occupancy, recalculate rates`

rate_plan_id   string     

UUID rate plan (required untuk part=room_rateplan dan room_add). Example: `550e8400-e29b-41d4-a716-446655440040

part = room_payment_type — bisa untuk satu kamar atau semua kamar dalam booking`

payment_collect_type_id   string     

UUID payment collect type (required untuk part=room_payment_type dan room_add). Example: `550e8400-e29b-41d4-a716-446655440050

part = room_add — cek availability, blokir, dispatch rate job, recalculate totals`

room_type_id   string     

UUID tipe kamar (required untuk part=room_add). Example: 550e8400-e29b-41d4-a716-446655440060

room_id   string     

UUID kamar spesifik, harus milik room_type_id (required untuk part=room_add). Example: 550e8400-e29b-41d4-a716-446655440061

guest_in_room   object  optional    

Data tamu di kamar baru (opsional). Kirim {"use_booking_guest":true} untuk menyalin tamu utama booking.

use_booking_guest   boolean  optional    

Jika true, salin booking.guest_id ke kamar ini (mode link booking guest). Example: true

Detail Booking (Editor)

requires authentication

Mengembalikan struktur data booking lengkap yang siap dipakai oleh halaman Booking Editor di frontend — header, tamu utama, dan daftar kamar beserta rate harian dan inclusi-nya.

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/editor/detail" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"6782e5ad-5239-4b27-8460-6f8c474ea8e5\",
    \"booking_id\": \"c784a6d3-ca80-431d-8c2d-972a699ccf3d\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/editor/detail"
);

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

let body = {
    "property_id": "6782e5ad-5239-4b27-8460-6f8c474ea8e5",
    "booking_id": "c784a6d3-ca80-431d-8c2d-972a699ccf3d"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/editor/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => '6782e5ad-5239-4b27-8460-6f8c474ea8e5',
            'booking_id' => 'c784a6d3-ca80-431d-8c2d-972a699ccf3d',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200, Sukses):


{
    "message": "Success get detail booking editor",
    "data": {
        "property_id": "6782e5ad-5239-4b27-8460-6f8c474ea8e5",
        "booking_id": "c784a6d3-ca80-431d-8c2d-972a699ccf3d",
        "booking_no": "20260521/HOTELDUMMY/21",
        "property_agent_id": "b0ddf845-f8ab-4561-bbd4-9e661e88e27f",
        "booking_status_id": "ebdfc829-2e80-482d-9d70-056eed582de6",
        "guest_booking": {
            "guest_id": "...",
            "first_name": "...",
            "last_name": "..."
        },
        "booking_reference": "",
        "payment_collect_type_id": "edc599d7-9091-4bab-b3c4-520c1b6559d5",
        "remark": "test",
        "room_lists": [
            {
                "booking_room_id": "...",
                "room_type_id": "...",
                "room_type_name": "Deluxe",
                "room_id": "...",
                "room_name": "101",
                "arrival": "2026-05-21",
                "departure": "2026-05-23",
                "room_edit_action": {
                    "can_modify": true,
                    "can_remove": false
                }
            }
        ]
    }
}
 

Example response (400, Validasi gagal):


{
    "message": "Please input valid Data",
    "data": {
        "booking_id": [
            "The booking id field is required."
        ]
    }
}
 

Example response (404, Booking tidak ditemukan):


{
    "message": "Booking not found",
    "data": []
}
 

Example response (500, Server error):


{
    "message": "An error occurred, please try again",
    "data": []
}
 

Request   

POST api/v1/booking/editor/detail

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

property_id   string     

UUID properti. Example: 6782e5ad-5239-4b27-8460-6f8c474ea8e5

booking_id   string     

UUID booking yang akan diambil detailnya. Example: c784a6d3-ca80-431d-8c2d-972a699ccf3d

Detail Booking

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"magnam\",
    \"booking_id\": \"omnis\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/detail"
);

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

let body = {
    "property_id": "magnam",
    "booking_id": "omnis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'magnam',
            'booking_id' => 'omnis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: magnam

booking_id   string     

uuid of Booking. Example: omnis

Detail Booking Room

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/detail/room" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"assumenda\",
    \"booking_room_id\": \"vero\",
    \"mode\": \"\'guesthistory\'\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/detail/room"
);

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

let body = {
    "property_id": "assumenda",
    "booking_room_id": "vero",
    "mode": "'guesthistory'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/detail/room';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'assumenda',
            'booking_room_id' => 'vero',
            'mode' => '\'guesthistory\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/detail/room

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: assumenda

booking_room_id   string     

uuid of Booking. Example: vero

mode   string  optional    

mode result. Example: 'guesthistory'

Must be one of:
  • ['detail'
  • 'short'
  • 'bill'
  • 'guestbill'
  • 'agentbill'
  • 'payment'
  • 'roomrate'
  • 'guesthistory'
  • 'ota_meta'
  • 'ota_service_req'
  • 'ota_taxes']

Cancel Booking

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/cancel" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"autem\",
    \"booking_id\": \"consequatur\",
    \"booking_room_id\": \"cum\",
    \"cancel_status_id\": \"rem\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/cancel"
);

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

let body = {
    "property_id": "autem",
    "booking_id": "consequatur",
    "booking_room_id": "cum",
    "cancel_status_id": "rem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/cancel';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'autem',
            'booking_id' => 'consequatur',
            'booking_room_id' => 'cum',
            'cancel_status_id' => 'rem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Cancel Booking",
    "data": []
}
 

Request   

POST api/v1/booking/cancel

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: autem

booking_id   string     

uuid of booking Example: consequatur

booking_room_id   string  optional    

optional uuid of booking room Example: cum

cancel_status_id   string     

uuid of Cancel Status Example: rem

Confirm Booking

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/confirm" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"officiis\",
    \"booking_id\": \"sint\",
    \"confirm_status_id\": \"necessitatibus\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/confirm"
);

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

let body = {
    "property_id": "officiis",
    "booking_id": "sint",
    "confirm_status_id": "necessitatibus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/confirm';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'officiis',
            'booking_id' => 'sint',
            'confirm_status_id' => 'necessitatibus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Cancel Booking",
    "data": []
}
 

Request   

POST api/v1/booking/confirm

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: officiis

booking_id   string     

uuid of booking Example: sint

confirm_status_id   string     

uuid of Confirm Status Example: necessitatibus

Update Booking Additional Info

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"perspiciatis\",
    \"booking_id\": \"atque\",
    \"property_agent_id\": \"tempore\",
    \"booking_reference\": \"voluptatem\",
    \"remark\": \"non\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/update"
);

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

let body = {
    "property_id": "perspiciatis",
    "booking_id": "atque",
    "property_agent_id": "tempore",
    "booking_reference": "voluptatem",
    "remark": "non"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'perspiciatis',
            'booking_id' => 'atque',
            'property_agent_id' => 'tempore',
            'booking_reference' => 'voluptatem',
            'remark' => 'non',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Booking Additional Info",
    "data": []
}
 

Request   

POST api/v1/booking/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: perspiciatis

booking_id   string     

uuid of booking Example: atque

property_agent_id   string     

uuid of Property Agent. Example: tempore

booking_reference   string  optional    

add this value if hafe booking reference. Example: voluptatem

remark   string  optional    

add this value with sepecial request on this reservation Example: non

Create Guest History

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/guest-history/save" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"eius\",
    \"guest_id\": \"magnam\",
    \"booking_id\": \"harum\",
    \"booking_room_id\": \"facilis\",
    \"history_remark\": \"sunt\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/guest-history/save"
);

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

let body = {
    "property_id": "eius",
    "guest_id": "magnam",
    "booking_id": "harum",
    "booking_room_id": "facilis",
    "history_remark": "sunt"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/guest-history/save';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eius',
            'guest_id' => 'magnam',
            'booking_id' => 'harum',
            'booking_room_id' => 'facilis',
            'history_remark' => 'sunt',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/booking/guest-history/save

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: eius

guest_id   string     

uuid of Guest ID Example: magnam

booking_id   string     

uuid of Booking ID Example: harum

booking_room_id   string     

uuid of Booking Room ID Example: facilis

history_remark   string     

Name Payment Method Example: sunt

Detail Guest History

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/guest-history/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"minus\",
    \"guest_history_id\": \"voluptatem\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/guest-history/detail"
);

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

let body = {
    "property_id": "minus",
    "guest_history_id": "voluptatem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/guest-history/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'minus',
            'guest_history_id' => 'voluptatem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest History detail found",
    "data": {
        "guest": {
            "id": "2da48c55-2688-443f-99b3-47ab29616604",
            "guest_name": "Mr. Takayuki Nomoto"
        },
        "log_remark": {
            "id": "8f0fcd19-8a15-408f-953f-85f9843f5063",
            "remark": "Guest History"
        },
        "booking_id": "c5411a1e-86f1-4a4b-9aec-3a1361e5d276",
        "booking_no": "20240927/HOTELDUMMY/0000000004",
        "booking_room_id": "7a3f34ff-814e-42be-9013-68d490e462a1",
        "booking_room_type": "Standard",
        "booking_room": "104",
        "created_by": {
            "id": "0ad093e6-3587-4257-a118-0d6265d3347c",
            "name": "Master User Api"
        },
        "history_remark": "test remark additional"
    }
}
 

Request   

POST api/v1/booking/guest-history/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property id Example: minus

guest_history_id   string     

uuid of Payment Option id set value create if new data Example: voluptatem

Special Request Update

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/room-special-request/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"debitis\",
    \"booking_id\": \"qui\",
    \"booking_room_id\": \"eaque\",
    \"special_request\": \"qui\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/room-special-request/update"
);

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

let body = {
    "property_id": "debitis",
    "booking_id": "qui",
    "booking_room_id": "eaque",
    "special_request": "qui"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/room-special-request/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'debitis',
            'booking_id' => 'qui',
            'booking_room_id' => 'eaque',
            'special_request' => 'qui',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Booking Room Special Request",
    "data": {
        "booking_id": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
        "booking_room_id": "7a35bc8f-1403-4d8a-9c05-7191ed8445e7",
        "special_request": "this special request Testing update test",
        "user_created": {
            "id": "7acc2f8b-1a4c-406a-8731-fceeea5cf202",
            "name": "Agus Bawa Nadi Putra"
        },
        "date_created": "2024-10-17T10:06:29.000000Z"
    }
}
 

Request   

POST api/v1/booking/room-special-request/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: debitis

booking_id   string     

uuid of booking Example: qui

booking_room_id   string     

uuid of booking room Example: eaque

special_request   string     

remark Of Special Request Example: qui

Special Request Detail

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/room-special-request/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"repellat\",
    \"booking_id\": \"eius\",
    \"booking_room_id\": \"iure\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/room-special-request/detail"
);

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

let body = {
    "property_id": "repellat",
    "booking_id": "eius",
    "booking_room_id": "iure"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/room-special-request/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'repellat',
            'booking_id' => 'eius',
            'booking_room_id' => 'iure',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Booking Room Special Request",
    "data": {
        "booking_id": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
        "booking_room_id": "7a35bc8f-1403-4d8a-9c05-7191ed8445e7",
        "special_request": "this special request Testing update test",
        "user_created": {
            "id": "7acc2f8b-1a4c-406a-8731-fceeea5cf202",
            "name": "Agus Bawa Nadi Putra"
        },
        "date_created": "2024-10-17T10:06:29.000000Z"
    }
}
 

Request   

POST api/v1/booking/room-special-request/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: repellat

booking_id   string     

uuid of booking Example: eius

booking_room_id   string     

uuid of booking room Example: iure

Change Guest in Room

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/guest-inroom/change" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"nihil\",
    \"booking_room_id\": \"enim\",
    \"guest_id\": \"doloremque\",
    \"guest_prefix_id\": \"ullam\",
    \"first_name\": \"nisi\",
    \"last_name\": \"alias\",
    \"country_id\": \"blanditiis\",
    \"national_id\": \"qui\",
    \"identity_type_id\": \"et\",
    \"identity_no\": \"ea\",
    \"email\": \"[email protected]\",
    \"phone\": \"quaerat\",
    \"address\": \"amet\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/guest-inroom/change"
);

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

let body = {
    "property_id": "nihil",
    "booking_room_id": "enim",
    "guest_id": "doloremque",
    "guest_prefix_id": "ullam",
    "first_name": "nisi",
    "last_name": "alias",
    "country_id": "blanditiis",
    "national_id": "qui",
    "identity_type_id": "et",
    "identity_no": "ea",
    "email": "[email protected]",
    "phone": "quaerat",
    "address": "amet"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/guest-inroom/change';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'nihil',
            'booking_room_id' => 'enim',
            'guest_id' => 'doloremque',
            'guest_prefix_id' => 'ullam',
            'first_name' => 'nisi',
            'last_name' => 'alias',
            'country_id' => 'blanditiis',
            'national_id' => 'qui',
            'identity_type_id' => 'et',
            'identity_no' => 'ea',
            'email' => '[email protected]',
            'phone' => 'quaerat',
            'address' => 'amet',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Change Guest in Room",
    "data": []
}
 

Request   

POST api/v1/booking/guest-inroom/change

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: nihil

booking_room_id   string     

uuid of booking room Example: enim

guest_id   string     

uuid of Property Guest Profile this parameter just need if want change with existing profile Example: doloremque

guest_prefix_id   string     

uuid of Guest Prefix Example: ullam

first_name   string     

First Name Of Guest Profile Example: nisi

last_name   string     

Last Name Of Guest Profile Example: alias

country_id   string     

uuid of Country Example: blanditiis

national_id   string     

uuid of National same use country data Example: qui

identity_type_id   string     

uuid of Guest Identity Type Example: et

identity_no   string     

Identity Number Of Guest Profile Example: ea

email   string     

Email Of Guest Profile Example: [email protected]

phone   string     

Phone Of Guest Profile Example: quaerat

address   string     

Address Of Guest Profile Example: amet

Download Register form

Example request:
curl --request GET \
    --get "http://localhost/api/v1/booking/guest-registration/form/provident" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/booking/guest-registration/form/provident"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/guest-registration/form/provident';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (400):


{
    "message": "Unauthenticated."
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

GET api/v1/booking/guest-registration/form/{key}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

key   string  optional    

this value must encrypt with base64. parameter value {"property_id":null, "booking_room_id":null, "form":(blank,withdetail)}.

responseFile Example: provident

Download Booking Bill

Example request:
curl --request GET \
    --get "http://localhost/api/v1/booking/bill/print/recusandae" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/booking/bill/print/recusandae"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/bill/print/recusandae';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (400):


{
    "message": "Unauthenticated."
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

GET api/v1/booking/bill/print/{key}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

key   string  optional    

this value must encrypt with base64. parameter value {"property_id":null, "booking_room_id":null, "bill_model":(master,agent,guest)}.

responseFile Example: recusandae

Detail Booking Register form On JSON

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/guest-registration/form-json" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"aliquam\",
    \"booking_room_id\": \"odio\",
    \"form\": \"\'withdetail\']\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/guest-registration/form-json"
);

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

let body = {
    "property_id": "aliquam",
    "booking_room_id": "odio",
    "form": "'withdetail']"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/guest-registration/form-json';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'aliquam',
            'booking_room_id' => 'odio',
            'form' => '\'withdetail\']',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/guest-registration/form-json

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: aliquam

booking_room_id   string     

uuid of Booking. Example: odio

form   string  optional    

form model result. Example: 'withdetail']

Must be one of:
  • ['blank'
  • 'withdetail']

Detail Booking Bill On JSON

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/bill/print-json" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ex\",
    \"booking_room_id\": \"ut\",
    \"bill_model\": \"\'master\']\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/bill/print-json"
);

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

let body = {
    "property_id": "ex",
    "booking_room_id": "ut",
    "bill_model": "'master']"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/bill/print-json';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ex',
            'booking_room_id' => 'ut',
            'bill_model' => '\'master\']',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/bill/print-json

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: ex

booking_room_id   string     

uuid of Booking. Example: ut

bill_model   string  optional    

bill model result. Example: 'master']

Must be one of:
  • ['agent'
  • 'guest'
  • 'master']

Detail Booking Proforma Invoice On JSON

Behaves like getPrintBillJson, but excludes "Room Charges" products from the bill list and replaces them with entries derived from the booking room rate (one entry per rate day, formatted as a room charge bill).

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/proforma-invoice/print-json" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"cum\",
    \"booking_room_id\": \"nihil\",
    \"bill_model\": \"\'guest\'\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/proforma-invoice/print-json"
);

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

let body = {
    "property_id": "cum",
    "booking_room_id": "nihil",
    "bill_model": "'guest'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/proforma-invoice/print-json';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'cum',
            'booking_room_id' => 'nihil',
            'bill_model' => '\'guest\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Booking Room Performa Invoice Detail"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/proforma-invoice/print-json

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: cum

booking_room_id   string     

uuid of Booking. Example: nihil

bill_model   string  optional    

bill model result. Example: 'guest'

Must be one of:
  • ['agent'
  • 'guest'
  • 'master']

Booking Guest Status In Room

Update Status

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/guest-status-inroom/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_id\": \"temporibus\",
    \"booking_room_id\": \"natus\",
    \"guest_status_id\": \"nobis\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/guest-status-inroom/update"
);

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

let body = {
    "booking_id": "temporibus",
    "booking_room_id": "natus",
    "guest_status_id": "nobis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/guest-status-inroom/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'temporibus',
            'booking_room_id' => 'natus',
            'guest_status_id' => 'nobis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/booking/guest-status-inroom/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: temporibus

booking_room_id   string     

uuid of booking room Example: natus

guest_status_id   string     

uuid of Guest Status Example: nobis

Option Guest Status Input

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/guest-status-inroom/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"guest_status\",
    \"property_id\": \"nihil\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/guest-status-inroom/dropdown/list"
);

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

let body = {
    "mode": "guest_status",
    "property_id": "nihil"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/guest-status-inroom/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'guest_status',
            'property_id' => 'nihil',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Founds",
    "data": [
        {
            "key": "f0c07a03-0e9c-4cf2-a362-a29ac4f28bbd",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "6dca87d1-bbe1-4255-9f54-df139399eb3a",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "e85e160d-495a-4a02-9f26-8867bd38a722",
            "label": "Mrs. Ernawati Ni Luh"
        },
        {
            "key": "69fd3521-dc0e-434c-bdba-39e56e3a0c90",
            "label": "Mrs. Ernawati Ni Luh"
        }
    ]
}
 

Request   

POST api/v1/booking/guest-status-inroom/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: guest_status

Must be one of:
  • guest_status
property_id   string     

uuid of Property Example: nihil

Booking Lists

All Booking List

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"non\",
    \"arival_start_date\": \"et\",
    \"arival_end_date\": \"porro\",
    \"booking_no\": \"architecto\",
    \"booking_reference\": \"OTA-20240801-001\",
    \"property_agent_id\": \"4a317caa-2ed6-4031-b4ca-11f5971f931e\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/list"
);

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

let body = {
    "property_id": "non",
    "arival_start_date": "et",
    "arival_end_date": "porro",
    "booking_no": "architecto",
    "booking_reference": "OTA-20240801-001",
    "property_agent_id": "4a317caa-2ed6-4031-b4ca-11f5971f931e"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'non',
            'arival_start_date' => 'et',
            'arival_end_date' => 'porro',
            'booking_no' => 'architecto',
            'booking_reference' => 'OTA-20240801-001',
            'property_agent_id' => '4a317caa-2ed6-4031-b4ca-11f5971f931e',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Booking Data",
    "data": {
        "item": [
            {
                "booking_id": "98ae7959-32bd-4626-9f80-a21a8942ac6c",
                "booking_no": "20240704/HOTELDUMMY/0000000001",
                "booking_reference": "Rai Bali Family Trip",
                "booking_by": "Mrs. Rai Octa Vioni Ni Luh",
                "total_nights": 7,
                "total_adults": 0,
                "total_childrens": 0,
                "user_created": "Master User Api",
                "user_updated": null,
                "property_agent": {
                    "id": "4a317caa-2ed6-4031-b4ca-11f5971f931e",
                    "name": "Walk In"
                },
                "created_at": "2024-07-04T09:56:59.000000Z",
                "updated_at": "2024-07-04T09:56:59.000000Z",
                "status": {
                    "name": "Confirm",
                    "fg_color": "#ffffff",
                    "bg_color": "#0d6efd"
                },
                "list_room": [
                    {
                        "id": "09256420-2049-4b52-974f-c9e1373cd214",
                        "room_type": "Junior Suite",
                        "room": "207",
                        "guest_in_room": "Mrs. Ernawati Ni Luh",
                        "guest_status_in_room": "No Status",
                        "arival": "2024-07-08",
                        "depature": "2024-07-15",
                        "check_in": null,
                        "check_out": null,
                        "check_in_by": null,
                        "check_out_by": null
                    }
                ],
                "booking_function": {
                    "cancel": null,
                    "confirm": null,
                    "update": {
                        "status": true,
                        "id": "98ae7959-32bd-4626-9f80-a21a8942ac6c"
                    }
                }
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: non

arival_start_date   string  optional    

add this value Arrival Start Date with format date Y-m-d. Exmp:2024-02-18 Example: et

arival_end_date   string  optional    

add this value Arrival End Date with format date Y-m-d. Exmp:2024-02-18 Example: porro

booking_no   string     

Booking Number Example: architecto

booking_reference   string  optional    

Booking Reference (partial match). Example: OTA-20240801-001

property_agent_id   string  optional    

UUID Property Agent. Example: 4a317caa-2ed6-4031-b4ca-11f5971f931e

Hold Booking List

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/list/onhold" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ut\",
    \"hold_start_date\": \"error\",
    \"hold_end_date\": \"adipisci\",
    \"booking_no\": \"et\",
    \"booking_reference\": \"OTA-20240801-001\",
    \"property_agent_id\": \"4a317caa-2ed6-4031-b4ca-11f5971f931e\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/list/onhold"
);

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

let body = {
    "property_id": "ut",
    "hold_start_date": "error",
    "hold_end_date": "adipisci",
    "booking_no": "et",
    "booking_reference": "OTA-20240801-001",
    "property_agent_id": "4a317caa-2ed6-4031-b4ca-11f5971f931e"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/list/onhold';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ut',
            'hold_start_date' => 'error',
            'hold_end_date' => 'adipisci',
            'booking_no' => 'et',
            'booking_reference' => 'OTA-20240801-001',
            'property_agent_id' => '4a317caa-2ed6-4031-b4ca-11f5971f931e',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Booking Data",
    "data": {
        "item": [
            {
                "booking_id": "ebbe1188-5c63-444c-947f-3e1e1fa9e217",
                "booking_no": "20250324/HOTELDUMMY/0000000005",
                "booking_reference": null,
                "booking_by": "Mr. Anton Poernomo",
                "total_nights": 3,
                "total_adults": 2,
                "total_childrens": 0,
                "user_created": "Agus Bawa",
                "user_updated": null,
                "property_agent": {
                    "id": "4a317caa-2ed6-4031-b4ca-11f5971f931e",
                    "name": "Walk In"
                },
                "created_at": "2025-03-24T04:07:46.000000Z",
                "updated_at": "2025-03-24T04:07:46.000000Z",
                "status": {
                    "name": "In Hold",
                    "fg_color": "#000000",
                    "bg_color": "#ffc107"
                },
                "hold_date": "2025-03-24",
                "list_room": [
                    {
                        "id": "5caf7ef6-f0b1-45ab-9284-943b3016a64d",
                        "room_type": "Standard",
                        "room": "103",
                        "guest_in_room": "Mr. Anton Poernomo",
                        "guest_status_in_room": "No Status",
                        "arival": "2025-03-25",
                        "depature": "2025-03-28",
                        "check_in": null,
                        "check_out": null,
                        "check_in_by": null,
                        "check_out_by": null
                    }
                ],
                "booking_function": {
                    "cancel": null,
                    "confirm": {
                        "status": true,
                        "id": "ad430d5a-a2f1-4927-bb0a-926f00ebf8b6"
                    },
                    "update": {
                        "status": true,
                        "id": "ebbe1188-5c63-444c-947f-3e1e1fa9e217"
                    }
                }
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/list/onhold

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: ut

hold_start_date   string  optional    

add this value Hold Start Date with format date Y-m-d. Exmp:2024-02-18 Example: error

hold_end_date   string  optional    

add this value Hold End Date with format date Y-m-d. Exmp:2024-02-18 Example: adipisci

booking_no   string     

Booking Number Example: et

booking_reference   string  optional    

Booking Reference (partial match). Example: OTA-20240801-001

property_agent_id   string  optional    

UUID Property Agent. Example: 4a317caa-2ed6-4031-b4ca-11f5971f931e

Booking Move Room

Option Room Move Stay

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/move-room-stay/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quo\",
    \"booking_room_id\": \"maiores\",
    \"mode\": \"roomavailable\",
    \"room_type_id\": \"sed\",
    \"arival_date\": \"eos\",
    \"depature_date\": \"maiores\",
    \"rate_plan_id\": \"omnis\",
    \"tax_and_service_id\": \"iusto\",
    \"use_rate_before\": true
}"
const url = new URL(
    "http://localhost/api/v1/booking/move-room-stay/dropdownoptionlist"
);

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

let body = {
    "property_id": "quo",
    "booking_room_id": "maiores",
    "mode": "roomavailable",
    "room_type_id": "sed",
    "arival_date": "eos",
    "depature_date": "maiores",
    "rate_plan_id": "omnis",
    "tax_and_service_id": "iusto",
    "use_rate_before": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/move-room-stay/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quo',
            'booking_room_id' => 'maiores',
            'mode' => 'roomavailable',
            'room_type_id' => 'sed',
            'arival_date' => 'eos',
            'depature_date' => 'maiores',
            'rate_plan_id' => 'omnis',
            'tax_and_service_id' => 'iusto',
            'use_rate_before' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Room Available",
    "data": [
        {
            "key": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
            "label": "Standard",
            "room": [
                {
                    "key": "e7541067-7551-4905-b13a-e7f026a06a48",
                    "label": "101"
                },
                {
                    "key": "6ea738d4-4b28-4cc8-8b93-29421e53d054",
                    "label": "102"
                },
                {
                    "key": "d87d7acc-088f-4773-a930-e1abe407a21c",
                    "label": "103"
                },
                {
                    "key": "1129c95a-5163-4567-aec3-3c8e5b862df3",
                    "label": "104"
                }
            ]
        },
        {
            "key": "c059b085-358d-456f-bb7d-4a6dd80da101",
            "label": "Standard Balcony",
            "room": [
                {
                    "key": "c7c2509f-a4e5-4e8a-bd6f-95b71844e7b3",
                    "label": "110"
                },
                {
                    "key": "c9175b2e-c8a2-419d-a3e6-a5dec276c549",
                    "label": "111"
                },
                {
                    "key": "582b421a-2923-4d3c-a10f-a456ce7f7583",
                    "label": "112"
                },
                {
                    "key": "22af0aea-2a42-410f-a66c-7b360e460db0",
                    "label": "114"
                },
                {
                    "key": "ca9a60df-c5f4-47a3-8f14-b7817eff83e8",
                    "label": "115"
                }
            ]
        },
        {
            "key": "4a744904-3e55-49a6-b8e9-ac489cbc4ac8",
            "label": "Junior Suite",
            "room": [
                {
                    "key": "01014dfe-3693-4ea4-a08a-9439e3312c80",
                    "label": "205"
                },
                {
                    "key": "e8916d8f-db07-41a8-885f-66f085c4fe0a",
                    "label": "206"
                },
                {
                    "key": "c328ccb7-9c94-4be8-8d2e-12eac221e3d0",
                    "label": "207"
                },
                {
                    "key": "04f00d69-ebc3-47cb-b845-5d9ea450942a",
                    "label": "208"
                }
            ]
        },
        {
            "key": "9b1edca0-fe67-4340-832a-091a9a6aba7c",
            "label": "Superior",
            "room": [
                {
                    "key": "59eb4788-d411-4665-b26c-60de8758dee2",
                    "label": "309"
                },
                {
                    "key": "6ece9929-5939-4976-a7ba-2501aba92885",
                    "label": "310"
                },
                {
                    "key": "eae44a84-1a41-4e80-9a56-e90eba45811d",
                    "label": "311"
                }
            ]
        },
        {
            "key": "865baecb-cf7c-414b-a4f0-d6a0246075f6",
            "label": "Deluxe",
            "room": [
                {
                    "key": "dfda52ce-34fb-4c77-b967-a64f6e06a180",
                    "label": "109"
                }
            ]
        }
    ]
}
 

Request   

POST api/v1/booking/move-room-stay/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: quo

booking_room_id   string     

uuid of Booking Room. Example: maiores

mode   string  optional    

The language. Example: roomavailable

Must be one of:
  • roomavailable
  • taxandservice
  • roomratedaily
  • roomrateplan
room_type_id   string  optional    

use this parameter when mode "roomrateplan". Example: sed

arival_date   string  optional    

use this parameter whed get roomavailable. Exmp: Y-m-d Example: eos

depature_date   string  optional    

use this parameter whed get roomavailable. Exmp: Y-m-d Example: maiores

rate_plan_id   string  optional    

use this parameter when mode "roomratedaily". Example: omnis

tax_and_service_id   string  optional    

use this parameter when mode "roomratedaily". Example: iusto

use_rate_before   boolean  optional    

set true if use current rate. Example: true

Detail Room Move Stay

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/move-room-stay/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"et\",
    \"booking_room_id\": \"necessitatibus\",
    \"room_id\": \"ipsum\",
    \"arival\": \"laudantium\",
    \"depature\": \"velit\",
    \"use_rate_before\": true
}"
const url = new URL(
    "http://localhost/api/v1/booking/move-room-stay/detail"
);

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

let body = {
    "property_id": "et",
    "booking_room_id": "necessitatibus",
    "room_id": "ipsum",
    "arival": "laudantium",
    "depature": "velit",
    "use_rate_before": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/move-room-stay/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'et',
            'booking_room_id' => 'necessitatibus',
            'room_id' => 'ipsum',
            'arival' => 'laudantium',
            'depature' => 'velit',
            'use_rate_before' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Detail Room Found",
    "data": {
        "current_data": {
            "booking_id": "c5411a1e-86f1-4a4b-9aec-3a1361e5d276",
            "booking_room_id": "7a3f34ff-814e-42be-9013-68d490e462a1",
            "booking_no": "20240927/HOTELDUMMY/0000000004",
            "arival": "2024-10-22",
            "depature": "2024-10-27",
            "total_nights": 5,
            "total_adult": 2,
            "total_child": 0,
            "room_type": "Standard",
            "room": "104",
            "room_rate": {
                "detail_mode": "room rate",
                "currency": {
                    "name": "Indonesian rupiah",
                    "code": "IDR",
                    "symbol": "Rp"
                },
                "booking_id": "c5411a1e-86f1-4a4b-9aec-3a1361e5d276",
                "booking_no": "20240927/HOTELDUMMY/0000000004",
                "reference_no": null,
                "guest_name": "Mr. Takayuki Nomoto",
                "guest_id": "2da48c55-2688-443f-99b3-47ab29616604",
                "total_amount": 1214987.7,
                "total_service": 136363.65000000002,
                "total_tax": 148648.65000000002,
                "total_rate": 1500000,
                "room_rates_list": [
                    {
                        "id": "7a3f34ff-814e-42be-9013-68d490e462a1",
                        "room_name": "Standard / 104",
                        "detail": [
                            {
                                "id": "0df096a6-5d3a-4d75-a48b-a48353f3e4e2",
                                "date": "2024-10-22",
                                "description": "Standard / 104",
                                "service": 9090.91,
                                "tax": 9909.91,
                                "amount": 80999.18,
                                "rate": 100000
                            }
                        ],
                        "total_sub_service": 45454.55,
                        "total_sub_tax": 49549.55,
                        "total_sub_amount": 404995.89999999997,
                        "total_sub_rate": 500000
                    }
                ]
            }
        },
        "move_data": {
            "detail": {
                "booking_room_id": "7a3f34ff-814e-42be-9013-68d490e462a1",
                "arival": "2024-10-15",
                "depature": "2024-10-20",
                "room_type_id": "4a744904-3e55-49a6-b8e9-ac489cbc4ac8",
                "room_id": "04f00d69-ebc3-47cb-b845-5d9ea450942a",
                "currency": {
                    "name": "Indonesian rupiah",
                    "code": "IDR",
                    "symbol": "Rp"
                },
                "rate_plan_default": {
                    "id": "c68d0a27-6a73-4f6d-b5d5-0fa8a7854832",
                    "name": "Room And Breakfast Rate"
                },
                "tax_and_service_default": {
                    "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "name": "Room Rate Tax 11 and Service 10"
                },
                "room_rate": [
                    {
                        "rate_plan_id": "c68d0a27-6a73-4f6d-b5d5-0fa8a7854832",
                        "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "rate_date": "2024-10-15",
                        "rate": 1200000
                    }
                ],
                "total_rate": 6000000,
                "room_type": {
                    "id": "4a744904-3e55-49a6-b8e9-ac489cbc4ac8",
                    "name": "Junior Suite"
                },
                "room": {
                    "id": "04f00d69-ebc3-47cb-b845-5d9ea450942a",
                    "name": "208"
                },
                "total_adults": 2,
                "total_childrens": 0
            },
            "option": {
                "room_available": [
                    {
                        "key": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
                        "label": "Standard",
                        "room": [
                            {
                                "key": "e7541067-7551-4905-b13a-e7f026a06a48",
                                "label": "101"
                            }
                        ]
                    },
                    {
                        "key": "c059b085-358d-456f-bb7d-4a6dd80da101",
                        "label": "Standard Balcony",
                        "room": [
                            {
                                "key": "c7c2509f-a4e5-4e8a-bd6f-95b71844e7b3",
                                "label": "110"
                            }
                        ]
                    },
                    {
                        "key": "4a744904-3e55-49a6-b8e9-ac489cbc4ac8",
                        "label": "Junior Suite",
                        "room": [
                            {
                                "key": "01014dfe-3693-4ea4-a08a-9439e3312c80",
                                "label": "205"
                            }
                        ]
                    },
                    {
                        "key": "9b1edca0-fe67-4340-832a-091a9a6aba7c",
                        "label": "Superior",
                        "room": [
                            {
                                "key": "59eb4788-d411-4665-b26c-60de8758dee2",
                                "label": "309"
                            }
                        ]
                    },
                    {
                        "key": "865baecb-cf7c-414b-a4f0-d6a0246075f6",
                        "label": "Deluxe",
                        "room": [
                            {
                                "key": "dfda52ce-34fb-4c77-b967-a64f6e06a180",
                                "label": "109"
                            }
                        ]
                    }
                ],
                "tax_and_service": [
                    {
                        "label": "Room Rate Tax 11 and Service 10",
                        "key": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "is_default": false
                    }
                ],
                "rate_plan": [
                    {
                        "key": "c68d0a27-6a73-4f6d-b5d5-0fa8a7854832",
                        "label": "Room And Breakfast Rate",
                        "start_date": "2024-08-03",
                        "end_date": "2024-08-03",
                        "min_night": 1,
                        "max_night": 1,
                        "max_adult": 2,
                        "max_pax": 4,
                        "room_rate": 1200000,
                        "extra_adult_rate": 200000,
                        "extra_child_rate": 100000,
                        "rate_plan_type": {
                            "id": "2ec584a2-18a8-46ec-ac5a-51597eae3055",
                            "name": "STANDAR"
                        },
                        "tax_and_service": {
                            "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                            "name": "Room Rate Tax 11 and Service 10"
                        },
                        "currency": {
                            "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                            "name": "Indonesian rupiah",
                            "code": "IDR",
                            "symbol": "Rp"
                        }
                    }
                ]
            }
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/move-room-stay/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: et

booking_room_id   string     

uuid of Booking. Example: necessitatibus

room_id   string     

uuid of new Room id if have new room please provide id. Example: ipsum

arival   string     

uuid of new arival date format Y-m-d if have new arival date. Example: laudantium

depature   string     

uuid of new depature date format Y-m-d if have new depature date. Example: velit

use_rate_before   boolean  optional    

set true if use current rate. Example: true

Update Room Move Stay

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/move-room-stay/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"in\",
    \"booking_room_id\": \"quibusdam\",
    \"room_type_id\": \"non\",
    \"room_id\": \"sunt\",
    \"arival\": \"2024-02-18\",
    \"depature\": \"2024-02-18\",
    \"room_rate\": [
        {
            \"rate_plan_id\": \"97b6b6fa-f6d0-4d96-9ad2-86561c59b673\",
            \"tax_and_service_id\": \"5d80d7db-f029-44b8-9864-44f3607e2417\",
            \"rate_date\": \"2024-10-22\",
            \"rate\": 100000
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/move-room-stay/update"
);

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

let body = {
    "property_id": "in",
    "booking_room_id": "quibusdam",
    "room_type_id": "non",
    "room_id": "sunt",
    "arival": "2024-02-18",
    "depature": "2024-02-18",
    "room_rate": [
        {
            "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
            "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
            "rate_date": "2024-10-22",
            "rate": 100000
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/move-room-stay/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'in',
            'booking_room_id' => 'quibusdam',
            'room_type_id' => 'non',
            'room_id' => 'sunt',
            'arival' => '2024-02-18',
            'depature' => '2024-02-18',
            'room_rate' => [
                [
                    'rate_plan_id' => '97b6b6fa-f6d0-4d96-9ad2-86561c59b673',
                    'tax_and_service_id' => '5d80d7db-f029-44b8-9864-44f3607e2417',
                    'rate_date' => '2024-10-22',
                    'rate' => 100000,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/move-room-stay/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: in

booking_room_id   string     

uuid of Booking Room. Example: quibusdam

room_type_id   string     

uuid of Room type. Example: non

room_id   string     

uuid of Room. Example: sunt

arival   string  optional    

add this value arival format date Y-m-d. Example: 2024-02-18

depature   string  optional    

add this value depature format date Y-m-d. Example: 2024-02-18

room_rate   object  optional    

this list room rate for this booking.

Unassign / Assign Room (same room type, same stay dates)

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/room-assignment/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"qui\",
    \"booking_room_id\": \"ut\",
    \"room_id\": \"iure\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/room-assignment/update"
);

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

let body = {
    "property_id": "qui",
    "booking_room_id": "ut",
    "room_id": "iure"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/room-assignment/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'qui',
            'booking_room_id' => 'ut',
            'room_id' => 'iure',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Unassign Room Booking",
    "data": []
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/room-assignment/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: qui

booking_room_id   string     

uuid of Booking Room. Example: ut

room_id   string  optional    

uuid of the target Room. Omit or send null to unassign the current room. Example: iure

Booking Outstanding List

Outstanding List

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/outstanding/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"occaecati\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/outstanding/list"
);

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

let body = {
    "property_id": "occaecati"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/outstanding/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'occaecati',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Daily Found",
    "data": {
        "in_house": [
            {
                "room_type_name": "Standard",
                "list": [
                    {
                        "booking_id": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
                        "booking_room_id": "7a35bc8f-1403-4d8a-9c05-7191ed8445e7",
                        "booking_no": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
                        "guest": {
                            "name": "Mr. Takayuki Nomoto",
                            "id": "2da48c55-2688-443f-99b3-47ab29616604"
                        },
                        "country": {
                            "name": "Japan",
                            "id": "72a89d6b-78a8-4db9-b66c-3a16af183567"
                        },
                        "room_type": {
                            "name": "Standard",
                            "id": "a880635a-810f-4f9b-b39a-3f49387ec7d5"
                        },
                        "room": {
                            "name": "101",
                            "id": "e7541067-7551-4905-b13a-e7f026a06a48"
                        },
                        "agent": {
                            "name": "Walk In",
                            "id": "e41961d9-620e-4290-9497-64ece423e82c"
                        },
                        "arival": "2024-09-17",
                        "depature": "2024-09-19",
                        "adult": 2,
                        "child": 2,
                        "special_request": null,
                        "remark": null
                    }
                ]
            }
        ]
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/outstanding/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: occaecati

Booking Room General Update Editor

Room General Update

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/room-general-update/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quos\",
    \"booking_id\": \"voluptatem\",
    \"booking_room_id\": \"perferendis\",
    \"payment_collect_type_id\": \"accusantium\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/room-general-update/update"
);

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

let body = {
    "property_id": "quos",
    "booking_id": "voluptatem",
    "booking_room_id": "perferendis",
    "payment_collect_type_id": "accusantium"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/room-general-update/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quos',
            'booking_id' => 'voluptatem',
            'booking_room_id' => 'perferendis',
            'payment_collect_type_id' => 'accusantium',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Booking Room General Update",
    "data": {
        "booking_id": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
        "booking_room_id": "7a35bc8f-1403-4d8a-9c05-7191ed8445e7",
        "special_request": "this special request Testing update test",
        "user_created": {
            "id": "7acc2f8b-1a4c-406a-8731-fceeea5cf202",
            "name": "Agus Bawa Nadi Putra"
        },
        "date_created": "2024-10-17T10:06:29.000000Z"
    }
}
 

Request   

POST api/v1/booking/room-general-update/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: quos

booking_id   string     

uuid of booking Example: voluptatem

booking_room_id   string     

uuid of booking room Example: perferendis

payment_collect_type_id   string     

uuid of Payment Collect Type Example: accusantium

Room General Update Detail

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/room-general-update/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"recusandae\",
    \"booking_id\": \"enim\",
    \"booking_room_id\": \"est\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/room-general-update/detail"
);

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

let body = {
    "property_id": "recusandae",
    "booking_id": "enim",
    "booking_room_id": "est"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/room-general-update/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'recusandae',
            'booking_id' => 'enim',
            'booking_room_id' => 'est',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room General Data",
    "data": {
        "booking_id": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
        "booking_room_id": "7a35bc8f-1403-4d8a-9c05-7191ed8445e7",
        "special_request": "this special request Testing update test",
        "user_created": {
            "id": "7acc2f8b-1a4c-406a-8731-fceeea5cf202",
            "name": "Agus Bawa Nadi Putra"
        },
        "date_created": "2024-10-17T10:06:29.000000Z"
    }
}
 

Request   

POST api/v1/booking/room-general-update/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: recusandae

booking_id   string     

uuid of booking Example: enim

booking_room_id   string     

uuid of booking room Example: est

Booking Update Room Rate

Detail Booking Room Rate

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/roomrate/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"et\",
    \"booking_id\": \"doloribus\",
    \"booking_room_id\": \"qui\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/roomrate/detail"
);

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

let body = {
    "property_id": "et",
    "booking_id": "doloribus",
    "booking_room_id": "qui"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/roomrate/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'et',
            'booking_id' => 'doloribus',
            'booking_room_id' => 'qui',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Room Rate Detail",
    "data": {
        "option": {
            "tax_and_service_list": [
                {
                    "label": "Room Rate Tax 11 and Service 10",
                    "key": "5d80d7db-f029-44b8-9864-44f3607e2417"
                }
            ],
            "rate_plan_list": [
                {
                    "key": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "label": "Room And Breakfast Rate",
                    "start_date": "2024-08-03",
                    "end_date": "2024-08-03",
                    "min_night": 1,
                    "max_night": 1,
                    "max_adult": 2,
                    "max_pax": 4,
                    "room_rate": 100000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "rate_plan_type": {
                        "id": "2ec584a2-18a8-46ec-ac5a-51597eae3055",
                        "name": "STANDAR"
                    },
                    "tax_and_service": {
                        "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "name": "Room Rate Tax 11 and Service 10"
                    },
                    "currency": {
                        "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                        "name": "Indonesian rupiah",
                        "code": "IDR",
                        "symbol": "Rp"
                    }
                }
            ]
        },
        "detail": {
            "booking_id": "20116992-4e7d-46d6-8688-3bda65b5b782",
            "booking_room_id": "8b8f158b-263e-4244-a9d3-444b65dbe512",
            "room_type_id": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
            "room_id": "e7541067-7551-4905-b13a-e7f026a06a48",
            "arival": "2024-09-23",
            "depature": "2024-09-26",
            "rate_plan_default": {
                "id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "name": "Room And Breakfast Rate"
            },
            "tax_and_service_default": {
                "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "name": "Room Rate Tax 11 and Service 10"
            },
            "rate_list": [
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-23",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-24",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-25",
                    "rate": 200000
                }
            ],
            "total_amount": 485995.07999999996,
            "total_service": 54545.46,
            "total_tax": 59459.46,
            "total_rate": 0,
            "currency": {
                "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                "name": "Indonesian rupiah",
                "code": "IDR",
                "symbol": "Rp"
            }
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/roomrate/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: et

booking_id   string     

uuid of Booking. Example: doloribus

booking_room_id   string     

uuid of Booking Room ID. Example: qui

Option Booking Room Rate Update

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/roomrate/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ratione\",
    \"booking_id\": \"nihil\",
    \"booking_room_id\": \"vero\",
    \"rate_plan_id\": \"eaque\",
    \"tax_and_service_id\": \"non\",
    \"total_adult\": \"nisi\",
    \"total_child\": \"sunt\",
    \"default_rate\": \"cupiditate\",
    \"default_extra_adult_rate\": \"omnis\",
    \"default_extra_child_rate\": \"natus\",
    \"default_rate_detail\": \"consequatur\",
    \"mode\": \"\'roomratedaily\'\"
}"
const url = new URL(
    "http://localhost/api/v1/booking/roomrate/dropdownoptionlist"
);

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

let body = {
    "property_id": "ratione",
    "booking_id": "nihil",
    "booking_room_id": "vero",
    "rate_plan_id": "eaque",
    "tax_and_service_id": "non",
    "total_adult": "nisi",
    "total_child": "sunt",
    "default_rate": "cupiditate",
    "default_extra_adult_rate": "omnis",
    "default_extra_child_rate": "natus",
    "default_rate_detail": "consequatur",
    "mode": "'roomratedaily'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/roomrate/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ratione',
            'booking_id' => 'nihil',
            'booking_room_id' => 'vero',
            'rate_plan_id' => 'eaque',
            'tax_and_service_id' => 'non',
            'total_adult' => 'nisi',
            'total_child' => 'sunt',
            'default_rate' => 'cupiditate',
            'default_extra_adult_rate' => 'omnis',
            'default_extra_child_rate' => 'natus',
            'default_rate_detail' => 'consequatur',
            'mode' => '\'roomratedaily\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Room Rate Daily Available",
    "data": [
        {
            "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
            "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
            "rate_date": "2024-09-23",
            "rate": 750000
        },
        {
            "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
            "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
            "rate_date": "2024-09-24",
            "rate": 750000
        },
        {
            "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
            "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
            "rate_date": "2024-09-25",
            "rate": 750000
        }
    ]
}
 

Request   

POST api/v1/booking/roomrate/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: ratione

booking_id   string     

uuid of Booking. Example: nihil

booking_room_id   string     

uuid of Booking Room ID. Example: vero

rate_plan_id   string     

uuid of Rate Plan ID if use mode roomratedaily. Example: eaque

tax_and_service_id   string     

uuid of Rate Plan ID if use mode roomratedaily. Example: non

total_adult   string  optional    

use this parameter when mode "roomrateplan". Exmp:1, Example: nisi

total_child   string  optional    

use this parameter when mode "roomrateplan". Exmp:1, Example: sunt

default_rate   string  optional    

use this parameter when get roomratedaily with set default rate. Example: cupiditate

default_extra_adult_rate   string  optional    

use this parameter when get roomratedaily with set default rate. Example: omnis

default_extra_child_rate   string  optional    

use this parameter when get roomratedaily with set default rate. Example: natus

default_rate_detail   string  optional    

use this parameter required when get roomratedaily with default rate. Example: consequatur

mode   string  optional    

mode result. Example: 'roomratedaily'

Must be one of:
  • ['taxandservice'
  • 'roomrateplan'
  • 'roomratedaily'
  • 'calculation']

Calculate Booking Room Rate

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/roomrate/calculate" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"molestiae\",
    \"booking_id\": \"excepturi\",
    \"booking_room_id\": \"ea\",
    \"rate_plan_id\": \"repellat\",
    \"room_rate_daily\": [
        {
            \"tax_and_service_id\": \"99f5c5f5-4bdd-449f-950c-15ec32322a7d\",
            \"is_open_rate\": true,
            \"rate_date\": \"2025-02-26\",
            \"rate\": 1000000,
            \"extra_adult\": 0,
            \"extra_child\": 0,
            \"extra_adult_rate\": 100000,
            \"extra_child_rate\": 50000,
            \"min_rate\": 700000,
            \"rate_detail\": [
                {
                    \"id\": \"54528d0a-407a-4bb4-8026-bd338ea81a83\",
                    \"property_product\": {
                        \"id\": \"a1ba606b-4310-47f8-b94b-fd24a6049ea9\",
                        \"name\": \"Room Charges\",
                        \"slug\": \"room-charges\",
                        \"remark\": \"This Product create default by system\",
                        \"sell_amount\": 0,
                        \"cost_amount\": 0
                    },
                    \"remark\": \"Room Charges\",
                    \"rate\": 300000
                },
                {
                    \"id\": \"ba1d81bb-5e0e-4ceb-bce6-3ce5cdebae99\",
                    \"property_product\": {
                        \"id\": \"3603288e-ed2d-4d72-a9af-8d80df1ae663\",
                        \"name\": \"Breakfasts\",
                        \"slug\": \"breakfasts\",
                        \"remark\": \"This Product create default by system\",
                        \"sell_amount\": 0,
                        \"cost_amount\": 0
                    },
                    \"remark\": \"Breakfasts\",
                    \"rate\": 200000
                }
            ]
        }
    ],
    \"room_rate_inclusion\": [
        {
            \"id\": \"e6bc500d-697c-45f3-a233-e2358db511ab\",
            \"property_product\": {
                \"id\": \"6b3ec723-5da9-4ceb-bf6c-85f2cd65b172\",
                \"name\": \"Honeymoon Package\",
                \"remark\": \"this test product package\",
                \"sell_amount\": 500000,
                \"cost_amount\": 300000
            },
            \"qty\": 1,
            \"unit_rate\": 500000,
            \"rate\": 500000,
            \"add_remark\": null
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/roomrate/calculate"
);

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

let body = {
    "property_id": "molestiae",
    "booking_id": "excepturi",
    "booking_room_id": "ea",
    "rate_plan_id": "repellat",
    "room_rate_daily": [
        {
            "tax_and_service_id": "99f5c5f5-4bdd-449f-950c-15ec32322a7d",
            "is_open_rate": true,
            "rate_date": "2025-02-26",
            "rate": 1000000,
            "extra_adult": 0,
            "extra_child": 0,
            "extra_adult_rate": 100000,
            "extra_child_rate": 50000,
            "min_rate": 700000,
            "rate_detail": [
                {
                    "id": "54528d0a-407a-4bb4-8026-bd338ea81a83",
                    "property_product": {
                        "id": "a1ba606b-4310-47f8-b94b-fd24a6049ea9",
                        "name": "Room Charges",
                        "slug": "room-charges",
                        "remark": "This Product create default by system",
                        "sell_amount": 0,
                        "cost_amount": 0
                    },
                    "remark": "Room Charges",
                    "rate": 300000
                },
                {
                    "id": "ba1d81bb-5e0e-4ceb-bce6-3ce5cdebae99",
                    "property_product": {
                        "id": "3603288e-ed2d-4d72-a9af-8d80df1ae663",
                        "name": "Breakfasts",
                        "slug": "breakfasts",
                        "remark": "This Product create default by system",
                        "sell_amount": 0,
                        "cost_amount": 0
                    },
                    "remark": "Breakfasts",
                    "rate": 200000
                }
            ]
        }
    ],
    "room_rate_inclusion": [
        {
            "id": "e6bc500d-697c-45f3-a233-e2358db511ab",
            "property_product": {
                "id": "6b3ec723-5da9-4ceb-bf6c-85f2cd65b172",
                "name": "Honeymoon Package",
                "remark": "this test product package",
                "sell_amount": 500000,
                "cost_amount": 300000
            },
            "qty": 1,
            "unit_rate": 500000,
            "rate": 500000,
            "add_remark": null
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/roomrate/calculate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (($p = &\Symfony\Component\VarExporter\Internal\Registry::$prototypes)['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
            ],
            null,
            [
                'stdClass' => [
                    'tax_and_service_id' => [
                        '99f5c5f5-4bdd-449f-950c-15ec32322a7d',
                    ],
                    'is_open_rate' => [
                        true,
                    ],
                    'rate_date' => [
                        '2025-02-26',
                    ],
                    'rate' => [
                        1000000,
                        300000,
                        3 => 200000,
                        5 => 500000,
                    ],
                    'extra_adult' => [
                        0,
                    ],
                    'extra_child' => [
                        0,
                    ],
                    'extra_adult_rate' => [
                        100000,
                    ],
                    'extra_child_rate' => [
                        50000,
                    ],
                    'min_rate' => [
                        700000,
                    ],
                    'rate_detail' => [
                        [
                            $o[1],
                            $o[3],
                        ],
                    ],
                    'id' => [
                        1 => '54528d0a-407a-4bb4-8026-bd338ea81a83',
                        'a1ba606b-4310-47f8-b94b-fd24a6049ea9',
                        'ba1d81bb-5e0e-4ceb-bce6-3ce5cdebae99',
                        '3603288e-ed2d-4d72-a9af-8d80df1ae663',
                        'e6bc500d-697c-45f3-a233-e2358db511ab',
                        '6b3ec723-5da9-4ceb-bf6c-85f2cd65b172',
                    ],
                    'property_product' => [
                        1 => $o[2],
                        3 => $o[4],
                        5 => $o[6],
                    ],
                    'remark' => [
                        1 => 'Room Charges',
                        'This Product create default by system',
                        'Breakfasts',
                        'This Product create default by system',
                        6 => 'this test product package',
                    ],
                    'name' => [
                        2 => 'Room Charges',
                        4 => 'Breakfasts',
                        6 => 'Honeymoon Package',
                    ],
                    'slug' => [
                        2 => 'room-charges',
                        4 => 'breakfasts',
                    ],
                    'sell_amount' => [
                        2 => 0,
                        4 => 0,
                        6 => 500000,
                    ],
                    'cost_amount' => [
                        2 => 0,
                        4 => 0,
                        6 => 300000,
                    ],
                    'qty' => [
                        5 => 1,
                    ],
                    'unit_rate' => [
                        5 => 500000,
                    ],
                    'add_remark' => [
                        5 => null,
                    ],
                ],
            ],
            [
                'property_id' => 'molestiae',
                'booking_id' => 'excepturi',
                'booking_room_id' => 'ea',
                'rate_plan_id' => 'repellat',
                'room_rate_daily' => [
                    $o[0],
                ],
                'room_rate_inclusion' => [
                    $o[5],
                ],
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/roomrate/calculate

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: molestiae

booking_id   string     

uuid of Booking. Example: excepturi

booking_room_id   string     

uuid of Booking Room ID. Example: ea

rate_plan_id   string     

uuid of Rate Plan ID if use mode roomratedaily. Example: repellat

room_rate_daily   string[]     

detail Room rate Daily.

room_rate_inclusion   string[]     

detail Room Rate Inclusion.

Update Booking Room Rate

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/roomrate/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"sunt\",
    \"booking_id\": \"vero\",
    \"booking_room_id\": \"aspernatur\",
    \"rate_plan_id\": \"non\",
    \"room_rate_daily\": [
        {
            \"tax_and_service_id\": \"99f5c5f5-4bdd-449f-950c-15ec32322a7d\",
            \"is_open_rate\": true,
            \"rate_date\": \"2025-02-26\",
            \"rate\": 1000000,
            \"extra_adult\": 0,
            \"extra_child\": 0,
            \"extra_adult_rate\": 100000,
            \"extra_child_rate\": 50000,
            \"min_rate\": 700000,
            \"rate_detail\": [
                {
                    \"id\": \"54528d0a-407a-4bb4-8026-bd338ea81a83\",
                    \"property_product\": {
                        \"id\": \"a1ba606b-4310-47f8-b94b-fd24a6049ea9\",
                        \"name\": \"Room Charges\",
                        \"slug\": \"room-charges\",
                        \"remark\": \"This Product create default by system\",
                        \"sell_amount\": 0,
                        \"cost_amount\": 0
                    },
                    \"remark\": \"Room Charges\",
                    \"rate\": 300000
                },
                {
                    \"id\": \"ba1d81bb-5e0e-4ceb-bce6-3ce5cdebae99\",
                    \"property_product\": {
                        \"id\": \"3603288e-ed2d-4d72-a9af-8d80df1ae663\",
                        \"name\": \"Breakfasts\",
                        \"slug\": \"breakfasts\",
                        \"remark\": \"This Product create default by system\",
                        \"sell_amount\": 0,
                        \"cost_amount\": 0
                    },
                    \"remark\": \"Breakfasts\",
                    \"rate\": 200000
                }
            ]
        }
    ],
    \"room_rate_inclusion\": [
        {
            \"id\": \"e6bc500d-697c-45f3-a233-e2358db511ab\",
            \"property_product\": {
                \"id\": \"6b3ec723-5da9-4ceb-bf6c-85f2cd65b172\",
                \"name\": \"Honeymoon Package\",
                \"remark\": \"this test product package\",
                \"sell_amount\": 500000,
                \"cost_amount\": 300000
            },
            \"qty\": 1,
            \"unit_rate\": 500000,
            \"rate\": 500000,
            \"add_remark\": null
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/roomrate/update"
);

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

let body = {
    "property_id": "sunt",
    "booking_id": "vero",
    "booking_room_id": "aspernatur",
    "rate_plan_id": "non",
    "room_rate_daily": [
        {
            "tax_and_service_id": "99f5c5f5-4bdd-449f-950c-15ec32322a7d",
            "is_open_rate": true,
            "rate_date": "2025-02-26",
            "rate": 1000000,
            "extra_adult": 0,
            "extra_child": 0,
            "extra_adult_rate": 100000,
            "extra_child_rate": 50000,
            "min_rate": 700000,
            "rate_detail": [
                {
                    "id": "54528d0a-407a-4bb4-8026-bd338ea81a83",
                    "property_product": {
                        "id": "a1ba606b-4310-47f8-b94b-fd24a6049ea9",
                        "name": "Room Charges",
                        "slug": "room-charges",
                        "remark": "This Product create default by system",
                        "sell_amount": 0,
                        "cost_amount": 0
                    },
                    "remark": "Room Charges",
                    "rate": 300000
                },
                {
                    "id": "ba1d81bb-5e0e-4ceb-bce6-3ce5cdebae99",
                    "property_product": {
                        "id": "3603288e-ed2d-4d72-a9af-8d80df1ae663",
                        "name": "Breakfasts",
                        "slug": "breakfasts",
                        "remark": "This Product create default by system",
                        "sell_amount": 0,
                        "cost_amount": 0
                    },
                    "remark": "Breakfasts",
                    "rate": 200000
                }
            ]
        }
    ],
    "room_rate_inclusion": [
        {
            "id": "e6bc500d-697c-45f3-a233-e2358db511ab",
            "property_product": {
                "id": "6b3ec723-5da9-4ceb-bf6c-85f2cd65b172",
                "name": "Honeymoon Package",
                "remark": "this test product package",
                "sell_amount": 500000,
                "cost_amount": 300000
            },
            "qty": 1,
            "unit_rate": 500000,
            "rate": 500000,
            "add_remark": null
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/roomrate/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (($p = &\Symfony\Component\VarExporter\Internal\Registry::$prototypes)['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
            ],
            null,
            [
                'stdClass' => [
                    'tax_and_service_id' => [
                        '99f5c5f5-4bdd-449f-950c-15ec32322a7d',
                    ],
                    'is_open_rate' => [
                        true,
                    ],
                    'rate_date' => [
                        '2025-02-26',
                    ],
                    'rate' => [
                        1000000,
                        300000,
                        3 => 200000,
                        5 => 500000,
                    ],
                    'extra_adult' => [
                        0,
                    ],
                    'extra_child' => [
                        0,
                    ],
                    'extra_adult_rate' => [
                        100000,
                    ],
                    'extra_child_rate' => [
                        50000,
                    ],
                    'min_rate' => [
                        700000,
                    ],
                    'rate_detail' => [
                        [
                            $o[1],
                            $o[3],
                        ],
                    ],
                    'id' => [
                        1 => '54528d0a-407a-4bb4-8026-bd338ea81a83',
                        'a1ba606b-4310-47f8-b94b-fd24a6049ea9',
                        'ba1d81bb-5e0e-4ceb-bce6-3ce5cdebae99',
                        '3603288e-ed2d-4d72-a9af-8d80df1ae663',
                        'e6bc500d-697c-45f3-a233-e2358db511ab',
                        '6b3ec723-5da9-4ceb-bf6c-85f2cd65b172',
                    ],
                    'property_product' => [
                        1 => $o[2],
                        3 => $o[4],
                        5 => $o[6],
                    ],
                    'remark' => [
                        1 => 'Room Charges',
                        'This Product create default by system',
                        'Breakfasts',
                        'This Product create default by system',
                        6 => 'this test product package',
                    ],
                    'name' => [
                        2 => 'Room Charges',
                        4 => 'Breakfasts',
                        6 => 'Honeymoon Package',
                    ],
                    'slug' => [
                        2 => 'room-charges',
                        4 => 'breakfasts',
                    ],
                    'sell_amount' => [
                        2 => 0,
                        4 => 0,
                        6 => 500000,
                    ],
                    'cost_amount' => [
                        2 => 0,
                        4 => 0,
                        6 => 300000,
                    ],
                    'qty' => [
                        5 => 1,
                    ],
                    'unit_rate' => [
                        5 => 500000,
                    ],
                    'add_remark' => [
                        5 => null,
                    ],
                ],
            ],
            [
                'property_id' => 'sunt',
                'booking_id' => 'vero',
                'booking_room_id' => 'aspernatur',
                'rate_plan_id' => 'non',
                'room_rate_daily' => [
                    $o[0],
                ],
                'room_rate_inclusion' => [
                    $o[5],
                ],
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Booking Room Rate",
    "data": {
        "booking_id": "20116992-4e7d-46d6-8688-3bda65b5b782",
        "booking_room_id": "8b8f158b-263e-4244-a9d3-444b65dbe512",
        "room_type_id": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
        "room_id": "e7541067-7551-4905-b13a-e7f026a06a48",
        "arival": "2024-09-23",
        "depature": "2024-09-26",
        "rate_plan_default": {
            "id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
            "name": "Room And Breakfast Rate"
        },
        "tax_and_service_default": {
            "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
            "name": "Room Rate Tax 11 and Service 10"
        },
        "rate_list": [
            {
                "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "rate_date": "2024-09-23",
                "rate": 250000
            },
            {
                "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "rate_date": "2024-09-24",
                "rate": 250000
            },
            {
                "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "rate_date": "2024-09-25",
                "rate": 250000
            }
        ],
        "total_amount": 607493.8500000001,
        "total_service": 68181.81,
        "total_tax": 74324.31,
        "total_rate": 0,
        "currency": {
            "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
            "name": "Indonesian rupiah",
            "code": "IDR",
            "symbol": "Rp"
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/roomrate/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: sunt

booking_id   string     

uuid of Booking. Example: vero

booking_room_id   string     

uuid of Booking Room ID. Example: aspernatur

rate_plan_id   string     

uuid of Rate Plan ID if use mode roomratedaily. Example: non

room_rate_daily   string[]     

detail Room rate Daily.

room_rate_inclusion   string[]     

detail Room Rate Inclusion.

Booking Voucher

Detail Data

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/voucher-detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"booking_token_key\": \"dolores\",
    \"is_test_detail_voucher\": false
}"
const url = new URL(
    "http://localhost/api/v1/booking/voucher-detail"
);

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

let body = {
    "booking_token_key": "dolores",
    "is_test_detail_voucher": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/voucher-detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_token_key' => 'dolores',
            'is_test_detail_voucher' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"Url Target on Frontend":https://(domain frontend)/booking/voucher/(voucher token data)}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/booking/voucher-detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

booking_token_key   string     

token of Booking Voucher. Example: dolores

is_test_detail_voucher   boolean  optional    

if you want get testing booking voucher you could set this with true. Example: false

CM - Activity Log

datatable Activity Log Channel Manager list

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/activity-logs/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"cm_active_list_id\": \"deleniti\",
    \"activity_log_id\": \"perferendis\",
    \"status\": \"error\",
    \"page_number\": \"amet\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/activity-logs/datatables"
);

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

let body = {
    "cm_active_list_id": "deleniti",
    "activity_log_id": "perferendis",
    "status": "error",
    "page_number": "amet"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/activity-logs/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'cm_active_list_id' => 'deleniti',
            'activity_log_id' => 'perferendis',
            'status' => 'error',
            'page_number' => 'amet',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Booking Data",
    "data": {
        "item": [
            {
                "booking_id": "ebbe1188-5c63-444c-947f-3e1e1fa9e217",
                "booking_no": "20250324/HOTELDUMMY/0000000005",
                "booking_reference": null,
                "booking_by": "Mr. Anton Poernomo",
                "total_nights": 3,
                "total_adults": 2,
                "total_childrens": 0,
                "user_created": "Agus Bawa",
                "user_updated": null,
                "created_at": "2025-03-24T04:07:46.000000Z",
                "updated_at": "2025-03-24T04:07:46.000000Z",
                "status": {
                    "name": "In Hold",
                    "fg_color": "#000000",
                    "bg_color": "#ffc107"
                },
                "hold_date": "2025-03-24",
                "list_room": [
                    {
                        "id": "5caf7ef6-f0b1-45ab-9284-943b3016a64d",
                        "room_type": "Standard",
                        "room": "103",
                        "guest_in_room": "Mr. Anton Poernomo",
                        "guest_status_in_room": "No Status",
                        "arival": "2025-03-25",
                        "depature": "2025-03-28",
                        "check_in": null,
                        "check_out": null,
                        "check_in_by": null,
                        "check_out_by": null
                    }
                ],
                "booking_function": {
                    "cancel": null,
                    "confirm": {
                        "status": true,
                        "id": "ad430d5a-a2f1-4927-bb0a-926f00ebf8b6"
                    },
                    "update": {
                        "status": true,
                        "id": "ebbe1188-5c63-444c-947f-3e1e1fa9e217"
                    }
                }
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/cm/activity-logs/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

cm_active_list_id   string     

uuid of Cm Active List Example: deleniti

activity_log_id   string     

uuid of Cm Activity Log Example: perferendis

status   string  optional    

The language. Example: error

Must be one of:
  • debug
  • info
  • notice
  • warning
  • error
  • critical
  • alert
  • emergency
page_number   string  optional    

number of page Example: amet

Option Activity Log Channel Manager list

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/activity-logs/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"cm_list\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/activity-logs/dropdown/list"
);

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

let body = {
    "mode": "cm_list"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/activity-logs/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'cm_list',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/cm/activity-logs/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: cm_list

Must be one of:
  • cm_list

CM - Agent Map

Add / Update Agent Maping

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/agent/property/map" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quod\",
    \"property_agent_list_id\": \"veniam\",
    \"cm_ota_list_id\": \"cum\",
    \"map_id\": \"\'********-****-****-****-************\'\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/agent/property/map"
);

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

let body = {
    "property_id": "quod",
    "property_agent_list_id": "veniam",
    "cm_ota_list_id": "cum",
    "map_id": "'********-****-****-****-************'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/agent/property/map';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quod',
            'property_agent_list_id' => 'veniam',
            'cm_ota_list_id' => 'cum',
            'map_id' => '\'********-****-****-****-************\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/cm/agent/property/map

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

UUID of Property Example: quod

property_agent_list_id   string     

UUID of Property Agent List Example: veniam

cm_ota_list_id   string     

UUID of CM OTA List Example: cum

map_id   string  optional    

if need uuid for update Agent Mapping Channel Manager Input . Example: '********-****-****-****-************'

Agent Maping Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/cm/agent/property/map/detail/579c3921-815c-3220-bee9-4a178f6f5bc0" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/cm/agent/property/map/detail/579c3921-815c-3220-bee9-4a178f6f5bc0"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/agent/property/map/detail/579c3921-815c-3220-bee9-4a178f6f5bc0';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"message":"Success get Feature Detail","data":{"id":"e1679215-52d3-49b2-b369-09e1496f759a","name":"System Features","category"{"id":"796b8a28-e184-49e8-be8c-19fe898e0439","name":"System Setup"}}}
 

Request   

GET api/v1/cm/agent/property/map/detail/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Agent Maping. Example: 579c3921-815c-3220-bee9-4a178f6f5bc0

datatable Property Maping

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/agent/property/map/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"vitae\",
    \"property_agent_list_id\": \"repellat\",
    \"cm_ota_list_id\": \"voluptatibus\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/agent/property/map/datatables"
);

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

let body = {
    "property_id": "vitae",
    "property_agent_list_id": "repellat",
    "cm_ota_list_id": "voluptatibus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/agent/property/map/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'vitae',
            'property_agent_list_id' => 'repellat',
            'cm_ota_list_id' => 'voluptatibus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Booking Data",
    "data": {
        "item": [
            {
                "booking_id": "ebbe1188-5c63-444c-947f-3e1e1fa9e217",
                "booking_no": "20250324/HOTELDUMMY/0000000005",
                "booking_reference": null,
                "booking_by": "Mr. Anton Poernomo",
                "total_nights": 3,
                "total_adults": 2,
                "total_childrens": 0,
                "user_created": "Agus Bawa",
                "user_updated": null,
                "created_at": "2025-03-24T04:07:46.000000Z",
                "updated_at": "2025-03-24T04:07:46.000000Z",
                "status": {
                    "name": "In Hold",
                    "fg_color": "#000000",
                    "bg_color": "#ffc107"
                },
                "hold_date": "2025-03-24",
                "list_room": [
                    {
                        "id": "5caf7ef6-f0b1-45ab-9284-943b3016a64d",
                        "room_type": "Standard",
                        "room": "103",
                        "guest_in_room": "Mr. Anton Poernomo",
                        "guest_status_in_room": "No Status",
                        "arival": "2025-03-25",
                        "depature": "2025-03-28",
                        "check_in": null,
                        "check_out": null,
                        "check_in_by": null,
                        "check_out_by": null
                    }
                ],
                "booking_function": {
                    "cancel": null,
                    "confirm": {
                        "status": true,
                        "id": "ad430d5a-a2f1-4927-bb0a-926f00ebf8b6"
                    },
                    "update": {
                        "status": true,
                        "id": "ebbe1188-5c63-444c-947f-3e1e1fa9e217"
                    }
                }
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/cm/agent/property/map/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: vitae

property_agent_list_id   string     

uuid of Property Agent List Example: repellat

cm_ota_list_id   string     

uuid of Cm OTA List Example: voluptatibus

Option Agent Maping

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/agent/property/map/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"sequi\",
    \"mode\": \"property_agent_list\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/agent/property/map/dropdown/list"
);

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

let body = {
    "property_id": "sequi",
    "mode": "property_agent_list"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/agent/property/map/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'sequi',
            'mode' => 'property_agent_list',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/cm/agent/property/map/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: sequi

mode   string  optional    

The language. Example: property_agent_list

Must be one of:
  • property_agent_list
  • cm_ota_list

Remove Agent Mapping

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/agent/property/map/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"map_id\": \"quia\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/agent/property/map/remove"
);

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

let body = {
    "map_id": "quia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/agent/property/map/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'map_id' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Agent Mapping",
    "data": []
}
 

Request   

POST api/v1/cm/agent/property/map/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

map_id   string     

uuid of Agent Mapping Example: quia

CM - Availability Update

Datatables update log

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/availability/update/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ut\",
    \"room_type_id\": \"impedit\",
    \"is_multiple_request\": false,
    \"status\": 2,
    \"filter_by\": \"from\",
    \"search_date_from\": \"officia\",
    \"search_date_to\": \"minima\",
    \"page_no\": 10
}"
const url = new URL(
    "http://localhost/api/v1/cm/availability/update/datatables"
);

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

let body = {
    "property_id": "ut",
    "room_type_id": "impedit",
    "is_multiple_request": false,
    "status": 2,
    "filter_by": "from",
    "search_date_from": "officia",
    "search_date_to": "minima",
    "page_no": 10
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/availability/update/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ut',
            'room_type_id' => 'impedit',
            'is_multiple_request' => false,
            'status' => 2,
            'filter_by' => 'from',
            'search_date_from' => 'officia',
            'search_date_to' => 'minima',
            'page_no' => 10,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/availability/update/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: ut

room_type_id   string  optional    

optional uuid of Room Type Property if want filter by room Type Example: impedit

is_multiple_request   boolean  optional    

this for get multiple request when not set room type and rate plan Example: false

status   integer  optional    

with value 1: inprogrees, 2: Success, 3: Errors Example: 2

filter_by   string  optional    

search by. Example: from

Must be one of:
  • from
  • to
search_date_from   string  optional    

with format date Y-m-d Example: officia

search_date_to   string  optional    

with format date Y-m-d Example: minima

page_no   integer  optional    

number of pagination Example: 10

Option Update

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/availability/update/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quis\",
    \"mode\": \"room_type_list\",
    \"room_type_id\": \"non\",
    \"room_type_list\": [
        \"nemo\"
    ],
    \"date_from\": \"eum\",
    \"date_to\": \"molestias\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/availability/update/dropdown/list"
);

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

let body = {
    "property_id": "quis",
    "mode": "room_type_list",
    "room_type_id": "non",
    "room_type_list": [
        "nemo"
    ],
    "date_from": "eum",
    "date_to": "molestias"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/availability/update/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quis',
            'mode' => 'room_type_list',
            'room_type_id' => 'non',
            'room_type_list' => [
                'nemo',
            ],
            'date_from' => 'eum',
            'date_to' => 'molestias',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/cm/availability/update/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: quis

mode   string  optional    

The language. Example: room_type_list

Must be one of:
  • room_type_list
  • availability_list
  • availability_multi_list
room_type_id   string     

uuid of Room Type Property Example: non

room_type_list   string[]     

list of room type property example: [{"room_type_id":"uuid","date_from":"Y-m-d","date_to":"Y-m-d"}]

date_from   string  optional    

with format date Y-m-d, this use when mode availability_list Example: eum

date_to   string  optional    

with format date Y-m-d, this use when mode availability_list Example: molestias

Availability Update Request

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/availability/update/sync-request" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"non\",
    \"room_type_id\": \"dolorem\",
    \"date_request_list\": null
}"
const url = new URL(
    "http://localhost/api/v1/cm/availability/update/sync-request"
);

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

let body = {
    "property_id": "non",
    "room_type_id": "dolorem",
    "date_request_list": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/availability/update/sync-request';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'non',
            'room_type_id' => 'dolorem',
            'date_request_list' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/availability/update/sync-request

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: non

room_type_id   string     

uuid of Room Type Property Example: dolorem

date_request_list   string[]  optional    

date avilable request.

Push Sync Multi Availability Update Request

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/availability/update/multi-sync-request" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"dolorem\",
    \"multi_sync_list\": [
        {
            \"room_type_id\": \"uuid\",
            \"rate_plan_id\": \"uuid\"
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/cm/availability/update/multi-sync-request"
);

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

let body = {
    "property_id": "dolorem",
    "multi_sync_list": [
        {
            "room_type_id": "uuid",
            "rate_plan_id": "uuid"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/availability/update/multi-sync-request';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (\Symfony\Component\VarExporter\Internal\Registry::$prototypes['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
            ],
            null,
            [
                'stdClass' => [
                    'room_type_id' => [
                        'uuid',
                    ],
                    'rate_plan_id' => [
                        'uuid',
                    ],
                ],
            ],
            [
                'property_id' => 'dolorem',
                'multi_sync_list' => [
                    $o[0],
                ],
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/availability/update/multi-sync-request

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: dolorem

multi_sync_list   string[]     

list of Rate Plan Property.

Push Sync Availability Update Request

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/availability/update/push-sync-request" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"rerum\",
    \"room_type_id\": [
        \"rem\"
    ],
    \"date_start\": \"aliquam\",
    \"date_end\": \"dignissimos\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/availability/update/push-sync-request"
);

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

let body = {
    "property_id": "rerum",
    "room_type_id": [
        "rem"
    ],
    "date_start": "aliquam",
    "date_end": "dignissimos"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/availability/update/push-sync-request';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'rerum',
            'room_type_id' => [
                'rem',
            ],
            'date_start' => 'aliquam',
            'date_end' => 'dignissimos',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/availability/update/push-sync-request

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: rerum

room_type_id   string[]     

uuid of Room Type Property

date_start   string     

with format date Y-m-d Example: aliquam

date_end   string     

with format date Y-m-d Example: dignissimos

Datatables Push Sync Log

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/availability/update/push-sync/logs" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"consequatur\",
    \"status\": \"inprogress\",
    \"page_no\": 10
}"
const url = new URL(
    "http://localhost/api/v1/cm/availability/update/push-sync/logs"
);

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

let body = {
    "property_id": "consequatur",
    "status": "inprogress",
    "page_no": 10
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/availability/update/push-sync/logs';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'consequatur',
            'status' => 'inprogress',
            'page_no' => 10,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/availability/update/push-sync/logs

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: consequatur

status   string     

with value Example: inprogress

Must be one of:
  • inprogress
  • done
page_no   integer  optional    

number of pagination Example: 10

CM - Booking List

Datatables booking list

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/booking-list/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"qui\",
    \"ota_reservation_code\": \"alias\",
    \"filter_by\": \"arrival\",
    \"search_date_from\": \"sed\",
    \"search_date_to\": \"tenetur\",
    \"page_no\": 16
}"
const url = new URL(
    "http://localhost/api/v1/cm/booking-list/datatables"
);

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

let body = {
    "property_id": "qui",
    "ota_reservation_code": "alias",
    "filter_by": "arrival",
    "search_date_from": "sed",
    "search_date_to": "tenetur",
    "page_no": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/booking-list/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'qui',
            'ota_reservation_code' => 'alias',
            'filter_by' => 'arrival',
            'search_date_from' => 'sed',
            'search_date_to' => 'tenetur',
            'page_no' => 16,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/booking-list/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: qui

ota_reservation_code   string  optional    

optional reservation code from OTA Example: alias

filter_by   string  optional    

search by. Example: arrival

Must be one of:
  • arrival
  • departure
  • booking_date
search_date_from   string  optional    

with format date Y-m-d Example: sed

search_date_to   string  optional    

with format date Y-m-d Example: tenetur

page_no   integer  optional    

number of pagination Example: 16

CM - Booking Receive

List Booking Sync Error (failed sync from Channel Manager)

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/booking-sync-error/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"necessitatibus\",
    \"search\": \"aspernatur\",
    \"page_number\": \"quibusdam\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/booking-sync-error/datatables"
);

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

let body = {
    "property_id": "necessitatibus",
    "search": "aspernatur",
    "page_number": "quibusdam"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/booking-sync-error/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'necessitatibus',
            'search' => 'aspernatur',
            'page_number' => 'quibusdam',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Booking Sync Error Data",
    "data": {
        "item": [
            {
                "distribution_id": "adf55f31-b769-48b0-bb6f-bed1daa5d0c4",
                "booking_id": "7342b731-0000-0000-0000-000000000000",
                "cm_booking_id": "b9b036da-0000-0000-0000-000000000000",
                "destination_system": "smartloka",
                "distribution_status": "failed",
                "http_status_code": 422,
                "attempt_count": 3,
                "max_attempts": 5,
                "last_error": "Property Not mapping",
                "failed_at": "2026-06-01T00:00:00.000000Z",
                "next_retry_at": null,
                "request_payload": {
                    "cm_booking_id": "b9b036da-0000-0000-0000-000000000000",
                    "cm_property_id": "prop-123"
                },
                "response_payload": null,
                "sent_at": "2026-06-01T00:00:00.000000Z",
                "completed_at": null,
                "created_at": "2026-06-01T00:00:00.000000Z",
                "updated_at": "2026-06-01T00:00:00.000000Z",
                "receive_id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
                "receive_sm_booking_id": null,
                "receive_is_sync": false,
                "receive_is_error": true,
                "receive_error_remark": {
                    "message": "Property Not maping or Not have active maping"
                },
                "receive_detail_booking": {},
                "receive_created_at": "2026-06-01T00:00:00.000000Z",
                "receive_updated_at": "2026-06-01T00:00:00.000000Z"
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (400):


{
    "message": "Channel Manager for this Property is not active",
    "data": []
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/cm/booking-sync-error/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

UUID of Property Example: necessitatibus

search   string  optional    

Pencarian berdasarkan Booking ID dari Channel Manager Example: aspernatur

page_number   numeric  optional    

number of page Example: quibusdam

Retry Sync Booking from Channel Manager

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/booking-sync-error/retry" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"cm_booking_id\": \"qui\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/booking-sync-error/retry"
);

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

let body = {
    "cm_booking_id": "qui"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/booking-sync-error/retry';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'cm_booking_id' => 'qui',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (202):


{
    "message": "Distributions queued for retry successfully.",
    "data": {
        "status": "queued",
        "uuid": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
        "queued_count": 1,
        "distribution_uuids": [
            "adf55f31-b769-48b0-bb6f-bed1daa5d0c4"
        ]
    }
}
 

Example response (400):


{
    "message": "No eligible distributions found to retry.",
    "data": []
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (500):


{
    "message": "Lokaroute access config not set",
    "data": []
}
 

Request   

POST api/v1/cm/booking-sync-error/retry

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

cm_booking_id   string     

Booking ID from Channel Manager (cm_booking_id) Example: qui

CM - Country Map

Maping Country Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/cm/country/map/details/38145552-9fdc-363b-bdf2-c9bfe6304f29" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/cm/country/map/details/38145552-9fdc-363b-bdf2-c9bfe6304f29"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/country/map/details/38145552-9fdc-363b-bdf2-c9bfe6304f29';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"message":"Success get Feature Detail","data":{"id":"e1679215-52d3-49b2-b369-09e1496f759a","name":"System Features","category"{"id":"796b8a28-e184-49e8-be8c-19fe898e0439","name":"System Setup"}}}
 

Request   

GET api/v1/cm/country/map/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Country. Example: 38145552-9fdc-363b-bdf2-c9bfe6304f29

Maping Country Datatable

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/country/map/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/cm/country/map/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/country/map/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/cm/country/map/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Country Maping

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/country/map" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"country_title\": \"quam\",
    \"country_id\": \"repellat\",
    \"id\": \"\'********-****-****-****-************\'\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/country/map"
);

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

let body = {
    "country_title": "quam",
    "country_id": "repellat",
    "id": "'********-****-****-****-************'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/country/map';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'country_title' => 'quam',
            'country_id' => 'repellat',
            'id' => '\'********-****-****-****-************\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/cm/country/map

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

country_title   string     

the name of country Maping. Example: quam

country_id   string     

UUID of Country Example: repellat

id   string  optional    

if need uuid for update coutry title of country maping . Example: '********-****-****-****-************'

Remove Country Maping

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/country/map/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"vel\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/country/map/remove"
);

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

let body = {
    "id": "vel"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/country/map/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'vel',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Country",
    "data": []
}
 

Request   

POST api/v1/cm/country/map/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Country Example: vel

Option Country Maping Smint Input

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/country/map/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"country_list\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/country/map/dropdown/list"
);

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

let body = {
    "mode": "country_list"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/country/map/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'country_list',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/cm/country/map/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: country_list

Must be one of:
  • country_list

CM - Price And Restriction Update

Datatables Price And Restriction Update Smint Log

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/price-restriction/update/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"qui\",
    \"room_type_id\": \"rerum\",
    \"rate_plan_id\": \"corrupti\",
    \"status\": 16,
    \"filter_by\": \"from\",
    \"is_multiple_request\": false,
    \"search_date_from\": \"qui\",
    \"search_date_to\": \"est\",
    \"page_no\": 20
}"
const url = new URL(
    "http://localhost/api/v1/cm/price-restriction/update/datatables"
);

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

let body = {
    "property_id": "qui",
    "room_type_id": "rerum",
    "rate_plan_id": "corrupti",
    "status": 16,
    "filter_by": "from",
    "is_multiple_request": false,
    "search_date_from": "qui",
    "search_date_to": "est",
    "page_no": 20
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/price-restriction/update/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'qui',
            'room_type_id' => 'rerum',
            'rate_plan_id' => 'corrupti',
            'status' => 16,
            'filter_by' => 'from',
            'is_multiple_request' => false,
            'search_date_from' => 'qui',
            'search_date_to' => 'est',
            'page_no' => 20,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/price-restriction/update/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: qui

room_type_id   string  optional    

optional uuid of Room Type Property if want filter by room Type Example: rerum

rate_plan_id   string  optional    

optional uuid of Rate Plan Property if want filter by Rate Plan Example: corrupti

status   integer  optional    

with value 1: inprogrees, 2: Success, 3: Errors Example: 16

filter_by   string  optional    

search by. Example: from

Must be one of:
  • from
  • to
is_multiple_request   boolean  optional    

this for get multiple request when not set room type and rate plan Example: false

search_date_from   string  optional    

with format date Y-m-d Example: qui

search_date_to   string  optional    

with format date Y-m-d Example: est

page_no   integer  optional    

number of pagination Example: 20

Option Price And Restriction

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/price-restriction/update/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"consequatur\",
    \"mode\": \"room_type_list\",
    \"room_type_id\": \"adipisci\",
    \"rate_plan_id\": \"eveniet\",
    \"room_type_and_rate_plan_list\": [
        \"sit\"
    ],
    \"date_from\": \"aut\",
    \"date_to\": \"voluptatibus\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/price-restriction/update/dropdown/list"
);

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

let body = {
    "property_id": "consequatur",
    "mode": "room_type_list",
    "room_type_id": "adipisci",
    "rate_plan_id": "eveniet",
    "room_type_and_rate_plan_list": [
        "sit"
    ],
    "date_from": "aut",
    "date_to": "voluptatibus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/price-restriction/update/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'consequatur',
            'mode' => 'room_type_list',
            'room_type_id' => 'adipisci',
            'rate_plan_id' => 'eveniet',
            'room_type_and_rate_plan_list' => [
                'sit',
            ],
            'date_from' => 'aut',
            'date_to' => 'voluptatibus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/cm/price-restriction/update/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: consequatur

mode   string  optional    

The language. Example: room_type_list

Must be one of:
  • room_type_list
  • rate_plan_list
  • price_restriction_list
  • price_restriction_multi_list
  • room_type_and_rate_plan_list
room_type_id   string     

uuid of Room Type Property Example: adipisci

rate_plan_id   string     

uuid of Rate Plan Property Example: eveniet

room_type_and_rate_plan_list   string[]     

list of room type and rate plan property example: [{"room_type_id":"uuid","rate_plan_id":"uuid","date_from":"Y-m-d","date_to":"Y-m-d"}]

date_from   string  optional    

with format date Y-m-d, this use when mode availability_list Example: aut

date_to   string  optional    

with format date Y-m-d, this use when mode availability_list Example: voluptatibus

Sync Request

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/price-restriction/update/sync-request" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"harum\",
    \"room_type_id\": \"dolorem\",
    \"rate_plan_id\": \"architecto\",
    \"date_request_list\": null
}"
const url = new URL(
    "http://localhost/api/v1/cm/price-restriction/update/sync-request"
);

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

let body = {
    "property_id": "harum",
    "room_type_id": "dolorem",
    "rate_plan_id": "architecto",
    "date_request_list": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/price-restriction/update/sync-request';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'harum',
            'room_type_id' => 'dolorem',
            'rate_plan_id' => 'architecto',
            'date_request_list' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/price-restriction/update/sync-request

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: harum

room_type_id   string     

uuid of Room Type Property Example: dolorem

rate_plan_id   string     

uuid of Rate Plan Property Example: architecto

date_request_list   string[]  optional    

date avilable request.

Multi Sync Request

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/price-restriction/update/multi-sync-request" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"consectetur\",
    \"multi_sync_list\": [
        {
            \"room_type_id\": \"339519d3-9264-42f3-9e09-37a6fa18a91a\",
            \"room_type_name\": \"Twin Room\",
            \"rate_plan_id\": \"a5d4698b-4515-4b33-bcee-1425d24b12c2\",
            \"rate_plan_name\": \"Best Available Rate\",
            \"date_from\": \"2026-11-01\",
            \"date_to\": \"2026-11-10\",
            \"data_list\": [
                {
                    \"date\": \"2026-11-01\",
                    \"rate\": 110
                },
                {
                    \"date\": \"2026-11-02\",
                    \"rate\": 110,
                    \"stop_sell\": true
                },
                {
                    \"date\": \"2026-11-03\",
                    \"rate\": 110,
                    \"stop_sell\": true
                },
                {
                    \"date\": \"2026-11-04\",
                    \"rate\": 110
                },
                {
                    \"date\": \"2026-11-05\",
                    \"rate\": 110
                },
                {
                    \"date\": \"2026-11-06\",
                    \"rate\": 110,
                    \"stop_sell\": false
                },
                {
                    \"date\": \"2026-11-07\",
                    \"rate\": 110
                },
                {
                    \"date\": \"2026-11-08\",
                    \"rate\": 110
                },
                {
                    \"date\": \"2026-11-09\",
                    \"rate\": 110
                },
                {
                    \"date\": \"2026-11-10\",
                    \"rate\": 110
                }
            ]
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/cm/price-restriction/update/multi-sync-request"
);

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

let body = {
    "property_id": "consectetur",
    "multi_sync_list": [
        {
            "room_type_id": "339519d3-9264-42f3-9e09-37a6fa18a91a",
            "room_type_name": "Twin Room",
            "rate_plan_id": "a5d4698b-4515-4b33-bcee-1425d24b12c2",
            "rate_plan_name": "Best Available Rate",
            "date_from": "2026-11-01",
            "date_to": "2026-11-10",
            "data_list": [
                {
                    "date": "2026-11-01",
                    "rate": 110
                },
                {
                    "date": "2026-11-02",
                    "rate": 110,
                    "stop_sell": true
                },
                {
                    "date": "2026-11-03",
                    "rate": 110,
                    "stop_sell": true
                },
                {
                    "date": "2026-11-04",
                    "rate": 110
                },
                {
                    "date": "2026-11-05",
                    "rate": 110
                },
                {
                    "date": "2026-11-06",
                    "rate": 110,
                    "stop_sell": false
                },
                {
                    "date": "2026-11-07",
                    "rate": 110
                },
                {
                    "date": "2026-11-08",
                    "rate": 110
                },
                {
                    "date": "2026-11-09",
                    "rate": 110
                },
                {
                    "date": "2026-11-10",
                    "rate": 110
                }
            ]
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/price-restriction/update/multi-sync-request';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (($p = &\Symfony\Component\VarExporter\Internal\Registry::$prototypes)['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
            ],
            null,
            [
                'stdClass' => [
                    'room_type_id' => [
                        '339519d3-9264-42f3-9e09-37a6fa18a91a',
                    ],
                    'room_type_name' => [
                        'Twin Room',
                    ],
                    'rate_plan_id' => [
                        'a5d4698b-4515-4b33-bcee-1425d24b12c2',
                    ],
                    'rate_plan_name' => [
                        'Best Available Rate',
                    ],
                    'date_from' => [
                        '2026-11-01',
                    ],
                    'date_to' => [
                        '2026-11-10',
                    ],
                    'data_list' => [
                        [
                            $o[1],
                            $o[2],
                            $o[3],
                            $o[4],
                            $o[5],
                            $o[6],
                            $o[7],
                            $o[8],
                            $o[9],
                            $o[10],
                        ],
                    ],
                    'date' => [
                        1 => '2026-11-01',
                        '2026-11-02',
                        '2026-11-03',
                        '2026-11-04',
                        '2026-11-05',
                        '2026-11-06',
                        '2026-11-07',
                        '2026-11-08',
                        '2026-11-09',
                        '2026-11-10',
                    ],
                    'rate' => [
                        1 => 110,
                        110,
                        110,
                        110,
                        110,
                        110,
                        110,
                        110,
                        110,
                        110,
                    ],
                    'stop_sell' => [
                        2 => true,
                        true,
                        6 => false,
                    ],
                ],
            ],
            [
                'property_id' => 'consectetur',
                'multi_sync_list' => [
                    $o[0],
                ],
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/price-restriction/update/multi-sync-request

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: consectetur

multi_sync_list   string[]     

list of Rate Plan Property.

Push Sync Request

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/price-restriction/update/push-sync-request" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"error\",
    \"rate_plan_list\": [
        {
            \"room_type_id\": \"uuid\",
            \"rate_plan_id\": \"uuid\"
        }
    ],
    \"date_start\": \"eligendi\",
    \"date_end\": \"aperiam\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/price-restriction/update/push-sync-request"
);

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

let body = {
    "property_id": "error",
    "rate_plan_list": [
        {
            "room_type_id": "uuid",
            "rate_plan_id": "uuid"
        }
    ],
    "date_start": "eligendi",
    "date_end": "aperiam"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/price-restriction/update/push-sync-request';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (\Symfony\Component\VarExporter\Internal\Registry::$prototypes['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
            ],
            null,
            [
                'stdClass' => [
                    'room_type_id' => [
                        'uuid',
                    ],
                    'rate_plan_id' => [
                        'uuid',
                    ],
                ],
            ],
            [
                'property_id' => 'error',
                'rate_plan_list' => [
                    $o[0],
                ],
                'date_start' => 'eligendi',
                'date_end' => 'aperiam',
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/price-restriction/update/push-sync-request

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: error

rate_plan_list   string[]     

list of Rate Plan Property.

date_start   string     

with format date Y-m-d Example: eligendi

date_end   string     

with format date Y-m-d Example: aperiam

Datatables Push Sync Log

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/price-restriction/update/push-sync/logs" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"laudantium\",
    \"status\": \"inprogress\",
    \"page_no\": 12
}"
const url = new URL(
    "http://localhost/api/v1/cm/price-restriction/update/push-sync/logs"
);

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

let body = {
    "property_id": "laudantium",
    "status": "inprogress",
    "page_no": 12
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/price-restriction/update/push-sync/logs';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'laudantium',
            'status' => 'inprogress',
            'page_no' => 12,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/cm/price-restriction/update/push-sync/logs

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: laudantium

status   string     

with value Example: inprogress

Must be one of:
  • inprogress
  • done
page_no   integer  optional    

number of pagination Example: 12

CM - Property Map

Add / Update Property Maping Channel Manager Input

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/property/map" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"cm_active_list_id\": \"quia\",
    \"property_id\": \"eveniet\",
    \"cm_property_id\": \"culpa\",
    \"cm_property_code\": \"voluptates\",
    \"cm_property_name\": \"laboriosam\",
    \"credentials\": \"qui\",
    \"id\": \"\'********-****-****-****-************\'\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/property/map"
);

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

let body = {
    "cm_active_list_id": "quia",
    "property_id": "eveniet",
    "cm_property_id": "culpa",
    "cm_property_code": "voluptates",
    "cm_property_name": "laboriosam",
    "credentials": "qui",
    "id": "'********-****-****-****-************'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/property/map';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'cm_active_list_id' => 'quia',
            'property_id' => 'eveniet',
            'cm_property_id' => 'culpa',
            'cm_property_code' => 'voluptates',
            'cm_property_name' => 'laboriosam',
            'credentials' => 'qui',
            'id' => '\'********-****-****-****-************\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/cm/property/map

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

cm_active_list_id   string     

UUID of Channel Manager Active List Example: quia

property_id   string     

UUID of Property Example: eveniet

cm_property_id   string     

ID of Property on Channel Manager Example: culpa

cm_property_code   string  optional    

optional Code of Property on Channel Manager Example: voluptates

cm_property_name   string  optional    

optional Name of Property on Channel Manager Example: laboriosam

credentials   string     

Credentials need of Property on Channel Manager Example: qui

id   string  optional    

if need uuid for update Property Mapping Channel Manager Input . Example: '********-****-****-****-************'

Property Maping Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/cm/property/map/detail/8f69bae1-0aac-3b80-b209-a07bf8b91a5d" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/cm/property/map/detail/8f69bae1-0aac-3b80-b209-a07bf8b91a5d"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/property/map/detail/8f69bae1-0aac-3b80-b209-a07bf8b91a5d';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"message":"Success get Feature Detail","data":{"id":"e1679215-52d3-49b2-b369-09e1496f759a","name":"System Features","category"{"id":"796b8a28-e184-49e8-be8c-19fe898e0439","name":"System Setup"}}}
 

Request   

GET api/v1/cm/property/map/detail/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Property Maping. Example: 8f69bae1-0aac-3b80-b209-a07bf8b91a5d

datatable Property Maping

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/property/map/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"est\",
    \"cm_active_list_id\": \"perferendis\",
    \"cm_property_id\": \"voluptas\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/property/map/datatables"
);

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

let body = {
    "property_id": "est",
    "cm_active_list_id": "perferendis",
    "cm_property_id": "voluptas"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/property/map/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'est',
            'cm_active_list_id' => 'perferendis',
            'cm_property_id' => 'voluptas',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Booking Data",
    "data": {
        "item": [
            {
                "booking_id": "ebbe1188-5c63-444c-947f-3e1e1fa9e217",
                "booking_no": "20250324/HOTELDUMMY/0000000005",
                "booking_reference": null,
                "booking_by": "Mr. Anton Poernomo",
                "total_nights": 3,
                "total_adults": 2,
                "total_childrens": 0,
                "user_created": "Agus Bawa",
                "user_updated": null,
                "created_at": "2025-03-24T04:07:46.000000Z",
                "updated_at": "2025-03-24T04:07:46.000000Z",
                "status": {
                    "name": "In Hold",
                    "fg_color": "#000000",
                    "bg_color": "#ffc107"
                },
                "hold_date": "2025-03-24",
                "list_room": [
                    {
                        "id": "5caf7ef6-f0b1-45ab-9284-943b3016a64d",
                        "room_type": "Standard",
                        "room": "103",
                        "guest_in_room": "Mr. Anton Poernomo",
                        "guest_status_in_room": "No Status",
                        "arival": "2025-03-25",
                        "depature": "2025-03-28",
                        "check_in": null,
                        "check_out": null,
                        "check_in_by": null,
                        "check_out_by": null
                    }
                ],
                "booking_function": {
                    "cancel": null,
                    "confirm": {
                        "status": true,
                        "id": "ad430d5a-a2f1-4927-bb0a-926f00ebf8b6"
                    },
                    "update": {
                        "status": true,
                        "id": "ebbe1188-5c63-444c-947f-3e1e1fa9e217"
                    }
                }
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/cm/property/map/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: est

cm_active_list_id   string     

uuid of Cm Active List Example: perferendis

cm_property_id   string     

uuid of Cm Property Example: voluptas

Option Property Maping Channel Manager Input

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/property/map/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"property_list\",
    \"cm_id\": \"consequatur\",
    \"property_id\": \"laborum\",
    \"credentials\": \"quas\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/property/map/dropdown/list"
);

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

let body = {
    "mode": "property_list",
    "cm_id": "consequatur",
    "property_id": "laborum",
    "credentials": "quas"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/property/map/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'property_list',
            'cm_id' => 'consequatur',
            'property_id' => 'laborum',
            'credentials' => 'quas',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/cm/property/map/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: property_list

Must be one of:
  • cm_list
  • property_list
  • verify_cm
  • cm_property_list
cm_id   string  optional    

cm id this use when mode is verify_cm,cm_property_list Example: consequatur

property_id   string  optional    

property id this use when mode is verify_cm,cm_property_list Example: laborum

credentials   string  optional    

cnx user api key this use when mode is verify_cm,cm_property_list Example: quas

Remove Property Maping Channel Manager Input

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/property/map/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"qui\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/property/map/remove"
);

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

let body = {
    "id": "qui"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/property/map/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'qui',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Property Maping Channel Manager Input",
    "data": []
}
 

Request   

POST api/v1/cm/property/map/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Property Maping Channel Manager Input Example: qui

CM - Room Type and Rate Plan Mapping

Add / Update Property Maping Channel Manager Input

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/room-type-and-rate-plan/map" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"delectus\",
    \"room_type_and_rate_plan_list\": [
        \"sequi\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/cm/room-type-and-rate-plan/map"
);

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

let body = {
    "property_id": "delectus",
    "room_type_and_rate_plan_list": [
        "sequi"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/room-type-and-rate-plan/map';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'delectus',
            'room_type_and_rate_plan_list' => [
                'sequi',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/cm/room-type-and-rate-plan/map

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

UUID of Property Example: delectus

room_type_and_rate_plan_list   string[]  optional    

list room type and rate plan will maping. example: [{"room_type_id":"024139d5-824d-4cbb-b591-f23e1c3b3201","room_type_name":"Twin Room","cm_room_type_id":null,"cm_room_type_name":null,"rate_plan_list":[{"rate_plan_id":"e1d50c5a-5a4f-43bb-a6bc-3e42c8016b12","rate_plan_name":"Best Available Rate","rate_plan_remark":"Best Available Rate","cm_rate_plan_id":null,"cm_rate_plan_name":null}]}]

Detail Maping Editor

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/room-type-and-rate-plan/map/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quia\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/room-type-and-rate-plan/map/detail"
);

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

let body = {
    "property_id": "quia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/room-type-and-rate-plan/map/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Property Agent detail",
    "data": {
        "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
        "property": {
            "id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "name": "Hotel Dummy"
        },
        "agent_source_id": {
            "id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In"
        },
        "name": "Walk In",
        "address": null,
        "phone": null,
        "email": null,
        "website": null,
        "logo_path": null,
        "icon_path": null,
        "bg_color": null,
        "fg_color": null
    }
}
 

Request   

POST api/v1/cm/room-type-and-rate-plan/map/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   uuid     

this Property Example: quia

Option Agent Maping

Example request:
curl --request POST \
    "http://localhost/api/v1/cm/room-type-and-rate-plan/map/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"dolorem\",
    \"mode\": \"cm_room_type_list\",
    \"cm_room_type_id\": \"odio\"
}"
const url = new URL(
    "http://localhost/api/v1/cm/room-type-and-rate-plan/map/dropdown/list"
);

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

let body = {
    "property_id": "dolorem",
    "mode": "cm_room_type_list",
    "cm_room_type_id": "odio"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/cm/room-type-and-rate-plan/map/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'dolorem',
            'mode' => 'cm_room_type_list',
            'cm_room_type_id' => 'odio',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/cm/room-type-and-rate-plan/map/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: dolorem

mode   string  optional    

The language. Example: cm_room_type_list

Must be one of:
  • cm_room_type_list
  • cm_rate_plan_list
cm_room_type_id   string  optional    

optional this channel manager room type id Example: odio

Chart Of Account Default

COA Default List

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"query_search\": \"nihil\",
    \"type_id\": \"qui\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default/list"
);

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

let body = {
    "query_search": "nihil",
    "type_id": "qui"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'query_search' => 'nihil',
            'type_id' => 'qui',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 2,
    "recordsFiltered": 2,
    "data": [
        {
            "id": null,
            "name": "Full Chart Of Account",
            "total_account": 1274
        },
        {
            "id": null,
            "name": "Simple Chart Of Account",
            "total_account": 233
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"chart_of_account_default_templates\" where \"chart_of_account_default_templates\".\"deleted_at\" is null",
            "bindings": [],
            "time": 2.17
        },
        {
            "query": "select \"id\", \"name\" from \"chart_of_account_default_templates\" where \"chart_of_account_default_templates\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.31
        },
        {
            "query": "select * from \"chart_of_account_default_template_lists\" where \"chart_of_account_default_template_lists\".\"template_id\" = ? and \"chart_of_account_default_template_lists\".\"template_id\" is not null and \"chart_of_account_default_template_lists\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 4.58
        },
        {
            "query": "select * from \"chart_of_account_default_template_lists\" where \"chart_of_account_default_template_lists\".\"template_id\" = ? and \"chart_of_account_default_template_lists\".\"template_id\" is not null and \"chart_of_account_default_template_lists\".\"deleted_at\" is null",
            "bindings": [
                2
            ],
            "time": 1.03
        }
    ],
    "input": []
}
 

Request   

POST api/v1/master/chart-of-account-default/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

query_search   string     

name of coa finding Example: nihil

type_id   string  optional    

uuid of COA type if want filter by type. Example: qui

Add / Update COA Defaults

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"coa_id\": \"magnam\",
    \"parent_id\": \"autem\",
    \"type_id\": \"repellat\",
    \"department_id\": \"accusamus\",
    \"code\": \"ad\",
    \"name\": \"suscipit\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default/update"
);

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

let body = {
    "coa_id": "magnam",
    "parent_id": "autem",
    "type_id": "repellat",
    "department_id": "accusamus",
    "code": "ad",
    "name": "suscipit"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'coa_id' => 'magnam',
            'parent_id' => 'autem',
            'type_id' => 'repellat',
            'department_id' => 'accusamus',
            'code' => 'ad',
            'name' => 'suscipit',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update Chart Of Account Default Data",
    "data": {
        "id": "10889fad-a074-4c30-8b2c-ae4e1b81b209",
        "parent_id": "210b2362-d9f6-45e0-a25b-ead638df9b91",
        "code": "9999090000",
        "name": "test Chart Of Account Insert edit",
        "type": {
            "id": "0c02278f-ebee-49d2-9d1c-138af408a63f",
            "name": "REVENUE",
            "head_code": 1
        },
        "department": {
            "id": "134cdd02-f46d-4f0c-b273-2bd26a454356",
            "name": "FRONT OFFICE"
        }
    }
}
 

Request   

POST api/v1/master/chart-of-account-default/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

coa_id   string  optional    

uuid of Chart Of Account this required if update current data. Example: magnam

parent_id   string  optional    

uuid of Chart Of Account required if coa is sub. Example: autem

type_id   string  optional    

uuid of COA type required if have coa type. Example: repellat

department_id   string  optional    

uuid of COA type required if have coa department. Example: accusamus

code   string     

Code COA Example: ad

name   string     

Name COA Example: suscipit

Remove COA Defaults

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"coa_id\": \"dolor\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default/remove"
);

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

let body = {
    "coa_id": "dolor"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'coa_id' => 'dolor',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/master/chart-of-account-default/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

coa_id   string     

uuid of COA Example: dolor

Option Input COA Defaults

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"parentcoa\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default/dropdown/list"
);

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

let body = {
    "mode": "parentcoa"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'parentcoa',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Parrent Chart Of Accounts Founds",
    "data": [
        {
            "key": "210b2362-d9f6-45e0-a25b-ead638df9b91",
            "label": "1101 - HOUSE BANK"
        },
        {
            "key": "4ca4727f-53b2-46b7-b075-d91d6e0b4cfe",
            "label": "1102 - BANK"
        },
        {
            "key": "8fc28675-351f-433a-a5db-5a1de3034372",
            "label": "1103 - CASH CLEARANCE"
        },
        {
            "key": "8830ca00-d308-4e6a-95d4-62ad01228e90",
            "label": "1200 - ACCOUNT RECEIVABLE"
        },
        {
            "key": "fd1c04d4-ff02-4dff-90aa-19af7117ba57",
            "label": "1202 - OTHER RECEIVABLE"
        },
        {
            "key": "b42ccf09-1d0e-41a3-8eab-21ae5d2e0f31",
            "label": "1205 - AFFILIATED COMP.RECEIVABLE"
        },
        {
            "key": "81646715-b856-468a-b043-139486a308ca",
            "label": "1206 - DEPOSIT AND ADVANCED"
        },
        {
            "key": "b2267586-3d5e-493b-8ab1-77a112e3e839",
            "label": "1300 - INVENTORY"
        },
        {
            "key": "4081e874-138d-458c-90cb-aa0393c3bd3b",
            "label": "1302 - PREPAID EXPENSES"
        },
        {
            "key": "803cb6c1-fce1-46b0-b17e-37c2de7d8b67",
            "label": "1500 - PROPERTY & EQUIPMENT"
        },
        {
            "key": "23b79ab7-6670-4bad-944a-94483d9bbc28",
            "label": "1503 - FURNITURE, FIXTURE & EQUIPMENT"
        },
        {
            "key": "fc6257ca-106a-4d9e-8a30-b7d0c2f6dab3",
            "label": "1505 - OPERATING EQUIPMENT"
        },
        {
            "key": "f6ee9426-57c4-4a73-a344-ec04dd5f68c2",
            "label": "1600 - FIXED ASSET LEASING"
        },
        {
            "key": "eff45872-f200-426a-8041-c11c064a7166",
            "label": "1700 - ACC. DEPRE PROPERTY & EQUIPMENT"
        },
        {
            "key": "5d020502-871e-4947-bc42-fe51ac519653",
            "label": "1701 - ACC. DEPRE FURNITURE, FIXTURE &"
        },
        {
            "key": "0b09c462-295b-434d-a5d2-9dadc6f239ee",
            "label": "1702 - ACC. DEPRE OPERATING EQUIPMENT"
        },
        {
            "key": "bcb9d228-589b-43a0-b6ed-59aa4568e95c",
            "label": "1703 - ACC. DEPRE FIXED ASSET LEASING"
        },
        {
            "key": "fc5c56af-55b9-4ed2-8bc2-f388e9001554",
            "label": "1800 - OTHER ASSET"
        },
        {
            "key": "06a1cbb6-6f5e-4cfd-80a1-207b580c4717",
            "label": "2100 - ACCOUNT PAYABLE"
        },
        {
            "key": "7a790a80-bd59-4e79-8869-ace6fa7a55e0",
            "label": "2200 - TAX PAYABLE"
        },
        {
            "key": "8c0fd310-cc35-4ace-94e2-deb37cc79aa2",
            "label": "2300 - ACCRUED EXPENSES"
        },
        {
            "key": "00a4706d-5d9e-4a08-ba6d-9caccf45bff0",
            "label": "2400 - GUEST DEPOSIT"
        },
        {
            "key": "23c40acd-12b8-4ba1-aab9-d054cd541b30",
            "label": "2500 - OTHER LIABILITIES"
        },
        {
            "key": "b647d91e-7061-4a12-af2f-6d6cc89a7139",
            "label": "2600 - AFFILIATED COMPANY PAYABLE"
        },
        {
            "key": "7d690279-16ba-4ab1-9903-8cb04e88030f",
            "label": "2700 - PROVISION"
        },
        {
            "key": "a5e8d2a9-9ce6-43db-8283-19b2f4068274",
            "label": "2800 - RESERVE"
        },
        {
            "key": "b5f2fac5-37ae-4e9b-bb6f-7fe3185bfd11",
            "label": "2900 - LONG TERM LIABILITIES"
        },
        {
            "key": "56c709ec-38ea-4def-8c96-5a5fd04946c2",
            "label": "3100 - CAPITAL"
        },
        {
            "key": "7e95b34b-f1e8-4f04-b23a-04e3f2be8187",
            "label": "3200 - RETAINED EARNING"
        },
        {
            "key": "5a5cb85b-1ad5-4da5-a291-f914204af921",
            "label": "4001 - ROOM REVENUE"
        },
        {
            "key": "5555087b-30be-4759-85f8-d8acd3220c05",
            "label": "4102 - RESTAURANT REVENUE"
        },
        {
            "key": "cd40bf4e-8bb0-4af0-a619-22fc8d08e952",
            "label": "4103 - POOL BAR REVENUE"
        },
        {
            "key": "d13274cb-3158-4389-b05e-200f4932e613",
            "label": "4104 - BANQUET REVENUE"
        },
        {
            "key": "1000d05d-6280-4dec-9e1f-3231b821dd96",
            "label": "4105 - ROOM SERVICE REVENUE"
        },
        {
            "key": "480b5176-37b9-4851-b6db-1da3c22a015c",
            "label": "4106 - MINI BAR"
        },
        {
            "key": "2c55fb76-5ea6-4d3a-8430-fa2bbcfd9869",
            "label": "4107 - TELEPHONE REVENUE"
        },
        {
            "key": "6e024e8d-8ead-4623-b9d1-9d3370320af5",
            "label": "4108 - BUSINESS CENTER REVENUE"
        },
        {
            "key": "601d1eec-00a2-4300-9ebf-517fce44cd39",
            "label": "4109 - LAUNDRY REVENUE"
        },
        {
            "key": "698a22e9-7e09-402a-9ddd-13e19140def3",
            "label": "4110 - SPA REVENUE"
        },
        {
            "key": "d25c9ab5-95f5-47d4-a47e-ba8147bb7053",
            "label": "4301 - MOD REVENUE"
        },
        {
            "key": "60a19460-3517-48e6-82cf-e6855fe276f8",
            "label": "4302 - OTHER INCOME"
        },
        {
            "key": "ee51d258-0c3e-4971-ac91-bca3dafb8537",
            "label": "5000 - COST OF RESTAURANT"
        },
        {
            "key": "17d2fd3c-55fa-4e59-8fc2-cba98b557be9",
            "label": "5101 - COST OF POOL BAR"
        },
        {
            "key": "8504db70-44d7-4e62-9510-1ffca276c4c2",
            "label": "5102 - COST OF BANQUET"
        },
        {
            "key": "d7e55854-cc2b-4d9a-a693-8c5ce9d65891",
            "label": "5103 - COST OF ROOM SERVICE"
        },
        {
            "key": "e1c8b321-ebd6-499d-9002-2abd99c8fe66",
            "label": "5104 - TELEPHONE COST OF SALES"
        },
        {
            "key": "e2415705-6352-4899-a164-129e20aaa4aa",
            "label": "5105 - BC COST OF SALES"
        },
        {
            "key": "59c308ac-df35-44fd-b562-1e63312a84ad",
            "label": "5106 - LAUNDRY COST OF SALES"
        },
        {
            "key": "d8ee2e0b-57ac-40a3-b5af-157d539093b7",
            "label": "5109 - SPA COST OF SALES"
        },
        {
            "key": "820d1acc-0efb-4de8-9172-44c62e001a0c",
            "label": "5110 - MOD COST OF SALES"
        },
        {
            "key": "2d243fe1-1cfd-4205-88cc-cac68ef3eb43",
            "label": "6100 - FO PAYROLL & RELATED"
        },
        {
            "key": "5a9f0e73-9aaf-4d19-8dde-7223ae74feeb",
            "label": "6101 - FO OTHER EXPENSES"
        },
        {
            "key": "f4013403-dc42-4c57-bd58-4566fa2647d1",
            "label": "6102 - FO PROVISION"
        },
        {
            "key": "4e58b804-17b3-4447-a1a6-0359d713be34",
            "label": "6110 - HK PAYROLL & RELATED"
        },
        {
            "key": "8d103cc4-73d9-41e1-a647-0003af126eb1",
            "label": "6111 - HK OTHER EXPENSES"
        },
        {
            "key": "700d17b7-a83c-4532-ad5a-a307035687cc",
            "label": "6112 - HK PROVISION"
        },
        {
            "key": "15901219-d41c-4a2f-8329-6c5737cc0b11",
            "label": "6120 - REST PAYROLL & RELATED"
        },
        {
            "key": "9142a74a-ea26-4f5a-a106-5a6a1b0e7df4",
            "label": "6121 - REST OTHER EXPENSES"
        },
        {
            "key": "9a2a4764-6f60-4633-96a4-332dd6571e46",
            "label": "6122 - REST PROVISION"
        },
        {
            "key": "e60ce86c-68b4-4cde-bc85-28231266cee4",
            "label": "6130 - POOL BAR PAYROLL & RELATED"
        },
        {
            "key": "e561a4f8-588d-43aa-8a20-188edd2ae811",
            "label": "6131 - POOL BAR OTHER EXPENSES"
        },
        {
            "key": "4ffa54ed-feaf-4ed4-b661-1cf72df33a31",
            "label": "6132 - POOL BAR PROVISION"
        },
        {
            "key": "1e542c97-b3ee-479e-9859-4a1975e87c52",
            "label": "6140 - RS PAYROLL & RELATED"
        },
        {
            "key": "a05037f3-b44d-489a-a097-837f581d106c",
            "label": "6141 - RS OTHER EXPENSES"
        },
        {
            "key": "2a7be2e9-2c2f-4c77-b6b2-4c83c5ffdf10",
            "label": "6142 - RS PROVISION"
        },
        {
            "key": "d6054b4f-b5b0-4946-b6d9-f05cab48e2f9",
            "label": "6150 - BQT PAYROLL & RELATED"
        },
        {
            "key": "5dfb17b7-644a-43d4-baa5-8f823d0f0abf",
            "label": "6151 - BQT OTHER EXPENSES"
        },
        {
            "key": "8aee3482-d98e-4574-9c62-409c055a2cb5",
            "label": "6152 - BQT PROVISION"
        },
        {
            "key": "97ff15af-1f9f-4b25-9425-8e5b3a0db63d",
            "label": "6160 - MB PAYROLL & RELATED"
        },
        {
            "key": "495d3064-00a5-4cb4-bb60-ca82950575ef",
            "label": "6161 - MB OTHER EXPENSES"
        },
        {
            "key": "4e7838a6-fedd-4db6-a456-0ceac8185a24",
            "label": "6162 - MB PROVISION"
        },
        {
            "key": "508580d4-445e-45a7-8447-9d111e6e0f8b",
            "label": "6170 - FBP PAYROLL & RELATED"
        },
        {
            "key": "7a24967c-4fb5-4864-a53a-4763131953d1",
            "label": "6171 - FBP OTHER EXPENSES"
        },
        {
            "key": "64f6f4e7-6caa-4530-9ffb-596c5c0a5cea",
            "label": "6172 - FBP PROVISION"
        },
        {
            "key": "f4dd92f5-3ef3-4d55-b1b1-253d95bbcf3b",
            "label": "6180 - TLP PAYROLL & RELATED"
        },
        {
            "key": "d9fa0a74-fcf2-45a9-a36a-efb43d5e75b5",
            "label": "6181 - TLP OTHER EXPENSES"
        },
        {
            "key": "255a250c-6b2e-491a-a4ee-8ad05f28adc4",
            "label": "6182 - TLP PROVISION"
        },
        {
            "key": "7d0178a5-6040-462b-9105-a183a4128bf6",
            "label": "6190 - BC PAYROLL & RELATED"
        },
        {
            "key": "a18b0837-5cc4-4742-9080-33cd4415556e",
            "label": "6191 - BC OTHER EXPENSES"
        },
        {
            "key": "6a948b29-0d86-46e8-8cb0-11b0f30b294a",
            "label": "6192 - BC PROVISION"
        },
        {
            "key": "42a8a678-5da8-4644-b26b-977350861f35",
            "label": "6200 - LDY PAYROLL & RELATED"
        },
        {
            "key": "a94ed02c-737f-4056-ae73-707f32e5abc0",
            "label": "6201 - LDY OTHER EXPENSES"
        },
        {
            "key": "fe2c9dba-908a-4435-b954-6ce2ebaec17c",
            "label": "6202 - LDY PROVISION"
        },
        {
            "key": "425639df-c5f6-47cd-88d8-7dd9b945cb2f",
            "label": "6210 - SPA PAYROLL & RELATED"
        },
        {
            "key": "fbd01d6b-377f-4379-8491-b483ed1ed76d",
            "label": "6211 - SPA OTHER EXPENSES"
        },
        {
            "key": "5156f809-0ca5-4421-83bd-e6951df9d9a0",
            "label": "6212 - SPA PROVISION"
        },
        {
            "key": "0d3c9d5b-f7cc-417a-a1eb-75d385f9d502",
            "label": "6230 - MOD PAYROLL & RELATED EXPENSES"
        },
        {
            "key": "26b4f9f7-9e9b-431b-a990-5ed7fead02be",
            "label": "6231 - MOD OTHER EXPENSES"
        },
        {
            "key": "0f681405-70ee-494e-80d9-46660a463c47",
            "label": "6232 - MOD PAYROLL & RELATED EXPENSES"
        },
        {
            "key": "55e203a3-c76b-4c65-864d-1aaf07fe93ba",
            "label": "7100 - A&G PAYROLL & RELATED"
        },
        {
            "key": "f4b92be1-a95a-46ca-a979-c2cf78456826",
            "label": "7101 - A&G OTHER EXPENSES"
        },
        {
            "key": "041c1a24-94a3-4e8e-8e71-38f5dc6bb26d",
            "label": "7200 - HRD PAYROLL & RELATED"
        },
        {
            "key": "55cc5a77-7315-49bb-aa3b-9347f9b206cb",
            "label": "7201 - HRD OTHER EXPENSES"
        },
        {
            "key": "6f36d345-6811-4ce1-9565-7e5aae6239ff",
            "label": "7300 - S&M PAYROLL & RELATED"
        },
        {
            "key": "473fe8e5-c982-443c-b247-841079b198ba",
            "label": "7301 - S&M OTHER EXPENSES"
        },
        {
            "key": "2bef6239-ed37-474e-a2a7-bda57da284f5",
            "label": "7400 - PMC PAYROLL & RELATED"
        },
        {
            "key": "5f558c00-7edb-4d51-9e16-e0c3a5bcfee9",
            "label": "7401 - PMC OTHER EXPENSES"
        },
        {
            "key": "52006a6e-3572-40d3-9a0b-eaa6001fc48b",
            "label": "7403 - PMC ENERGY COST"
        },
        {
            "key": "2246a00e-6edf-45ae-b28f-b26e3c942c30",
            "label": "8000 - OTHER DEDUCTION"
        },
        {
            "key": "72836a7f-caa3-46f0-bfe4-36eba0a4d565",
            "label": "9900 - STATISTIC"
        },
        {
            "key": "b520a39a-24a4-4b81-bfad-053e91218b49",
            "label": "9999090000 - test Chart Of Account Insert"
        },
        {
            "key": "b428bcd8-c55d-40bd-8847-4a59a288e1af",
            "label": "9999090000 - test Chart Of Account Insert"
        },
        {
            "key": "10889fad-a074-4c30-8b2c-ae4e1b81b209",
            "label": "9999090000 - test Chart Of Account Insert edit"
        }
    ]
}
 

Request   

POST api/v1/master/chart-of-account-default/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: parentcoa

Must be one of:
  • parentcoa
  • typecoa
  • departmentcoa

Copy And Setup Property COA Defaults

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default/property/setdefault" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"accusantium\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default/property/setdefault"
);

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

let body = {
    "id": "accusantium"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default/property/setdefault';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'accusantium',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/master/chart-of-account-default/property/setdefault

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of COA Example: accusantium

Download COA List Default

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/chart-of-account-default/list/print/ut" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default/list/print/ut"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default/list/print/ut';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (400):


{
    "message": "Unauthenticated."
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

GET api/v1/master/chart-of-account-default/list/print/{key}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

key   string  optional    

this value must encrypt with base64. parameter value {"property_id":null, "booking_room_id":null, "bill_model":(master,agent,guest)}.

responseFile Example: ut

Chart Of Account Property

Chart Of Account List

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"recusandae\",
    \"query_search\": \"nesciunt\",
    \"type_id\": \"atque\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account/list"
);

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

let body = {
    "property_id": "recusandae",
    "query_search": "nesciunt",
    "type_id": "atque"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'recusandae',
            'query_search' => 'nesciunt',
            'type_id' => 'atque',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/master/chart-of-account/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of property id Example: recusandae

query_search   string     

name of coa finding Example: nesciunt

type_id   string  optional    

uuid of COA type if want filter by type. Example: atque

Add / Update COA Defaults

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"consequuntur\",
    \"coa_id\": \"sint\",
    \"parent_id\": \"et\",
    \"type_id\": \"ut\",
    \"department_id\": \"quaerat\",
    \"code\": \"placeat\",
    \"name\": \"possimus\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account"
);

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

let body = {
    "property_id": "consequuntur",
    "coa_id": "sint",
    "parent_id": "et",
    "type_id": "ut",
    "department_id": "quaerat",
    "code": "placeat",
    "name": "possimus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'consequuntur',
            'coa_id' => 'sint',
            'parent_id' => 'et',
            'type_id' => 'ut',
            'department_id' => 'quaerat',
            'code' => 'placeat',
            'name' => 'possimus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/master/chart-of-account

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: consequuntur

coa_id   string  optional    

uuid of Chart Of Account this required if update current data. Example: sint

parent_id   string  optional    

uuid of Chart Of Account required if coa is sub. Example: et

type_id   string  optional    

uuid of COA type required if have coa type. Example: ut

department_id   string  optional    

uuid of COA type required if have coa department. Example: quaerat

code   string     

Code COA Example: placeat

name   string     

Name COA Example: possimus

Remove Property COA

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"coa_id\": \"aut\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account/remove"
);

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

let body = {
    "coa_id": "aut"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'coa_id' => 'aut',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/master/chart-of-account/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

coa_id   string     

uuid of COA Example: aut

Option Property Input COA

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"earum\",
    \"mode\": \"parentcoa\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account/dropdown/list"
);

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

let body = {
    "property_id": "earum",
    "mode": "parentcoa"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'earum',
            'mode' => 'parentcoa',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/master/chart-of-account/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of COA Property Example: earum

mode   string  optional    

The language. Example: parentcoa

Must be one of:
  • parentcoa
  • typecoa
  • departmentcoa

Chart Of Account Template

COA Default Template Datatable

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default-template/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"parameter\": \"et\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default-template/datatables"
);

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

let body = {
    "parameter": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default-template/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'parameter' => 'et',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 2,
    "recordsFiltered": 2,
    "data": [
        {
            "id": null,
            "name": "Full Chart Of Account",
            "total_account": 1274
        },
        {
            "id": null,
            "name": "Simple Chart Of Account",
            "total_account": 233
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"chart_of_account_default_templates\" where \"chart_of_account_default_templates\".\"deleted_at\" is null",
            "bindings": [],
            "time": 2.17
        },
        {
            "query": "select \"id\", \"name\" from \"chart_of_account_default_templates\" where \"chart_of_account_default_templates\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.31
        },
        {
            "query": "select * from \"chart_of_account_default_template_lists\" where \"chart_of_account_default_template_lists\".\"template_id\" = ? and \"chart_of_account_default_template_lists\".\"template_id\" is not null and \"chart_of_account_default_template_lists\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 4.58
        },
        {
            "query": "select * from \"chart_of_account_default_template_lists\" where \"chart_of_account_default_template_lists\".\"template_id\" = ? and \"chart_of_account_default_template_lists\".\"template_id\" is not null and \"chart_of_account_default_template_lists\".\"deleted_at\" is null",
            "bindings": [
                2
            ],
            "time": 1.03
        }
    ],
    "input": []
}
 

Request   

POST api/v1/master/chart-of-account-default-template/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

parameter   using  optional    

default datatable parameter. Example: et

COA Default Template Detail

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default-template/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"template_id\": \"qui\",
    \"type_id\": \"mollitia\",
    \"query_search\": \"magnam\",
    \"page_no\": \"quo\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default-template/detail"
);

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

let body = {
    "template_id": "qui",
    "type_id": "mollitia",
    "query_search": "magnam",
    "page_no": "quo"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default-template/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'template_id' => 'qui',
            'type_id' => 'mollitia',
            'query_search' => 'magnam',
            'page_no' => 'quo',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "e54a9af0-f7fd-437d-a4fc-66dc8e8f4cb8",
    "name": "Full Chart Of Account",
    "list_coa": {
        "total_page": 59,
        "current_page": 3,
        "record": [
            {
                "id": "2092ad65-7839-442b-9007-526009093455",
                "code": "1206",
                "name": "DEPOSIT AND ADVANCED",
                "child": [
                    {
                        "template_item_id": "45267d7b-9c57-40bf-8726-b0ca44853dc4",
                        "id": "94e17aa0-e1f2-4629-b43e-44af1ba78b20",
                        "parent_id": "2092ad65-7839-442b-9007-526009093455",
                        "code": "120-60-999",
                        "name": "Other Advanced",
                        "type": {
                            "id": "157a1548-6ac8-430f-9c52-369a85c5c1a9",
                            "name": "CURRENT ASSETS",
                            "head_code": 31
                        }
                    }
                ]
            },
            {
                "id": "507f9aa8-7f8a-454e-97a3-ae208f3e97ba",
                "code": "1300",
                "name": "INVENTORY",
                "child": [
                    {
                        "template_item_id": "3722c7c7-b046-4620-9c96-27ad66bf5a8f",
                        "id": "773d8fa4-293d-4d8b-a515-fbbd6ba1e19f",
                        "parent_id": "507f9aa8-7f8a-454e-97a3-ae208f3e97ba",
                        "code": "130-00-002",
                        "name": "Inventory Beverage",
                        "type": {
                            "id": "157a1548-6ac8-430f-9c52-369a85c5c1a9",
                            "name": "CURRENT ASSETS",
                            "head_code": 31
                        }
                    }
                ]
            }
        ]
    }
}
 

Request   

POST api/v1/master/chart-of-account-default-template/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

template_id   using  optional    

uuid coa tempalate id. Example: qui

type_id   using  optional    

uuid coa type id. Example: mollitia

query_search   using  optional    

for search coa By code or name. Example: magnam

page_no   using  optional    

for set current page. Example: quo

COA Default Template Update

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default-template/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"template_id\": \"qui\",
    \"name\": \"autem\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default-template/update"
);

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

let body = {
    "template_id": "qui",
    "name": "autem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default-template/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'template_id' => 'qui',
            'name' => 'autem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "detail": {
        "name": "new template test",
        "list_coa": [],
        "id": "28edfa5a-08ab-40d0-ae27-72a487d51427"
    }
}
 

Request   

POST api/v1/master/chart-of-account-default-template/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

template_id   using  optional    

uuid coa tempalate id if this new please not set this parameter. Example: qui

name   this  optional    

name of coa template. Example: autem

COA Default Template list Add new

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default-template/addlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"template_id\": \"recusandae\",
    \"coa_id\": \"repellat\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default-template/addlist"
);

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

let body = {
    "template_id": "recusandae",
    "coa_id": "repellat"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default-template/addlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'template_id' => 'recusandae',
            'coa_id' => 'repellat',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "list_coa": [
        {
            "id": "210b2362-d9f6-45e0-a25b-ead638df9b91",
            "code": "1101",
            "name": "HOUSE BANK",
            "type": {
                "id": "6f2cff3c-3b18-4c6d-b543-f6fb4f55f284",
                "name": "ASSET",
                "head_code": 3
            },
            "child": [
                {
                    "id": "20bb1926-0ae9-4fe7-b445-69c8f5115f1a",
                    "parent_id": "210b2362-d9f6-45e0-a25b-ead638df9b91",
                    "code": "110-10-007",
                    "name": "House Bank Purchasing",
                    "type": {
                        "id": "55f46545-51d1-4c56-9da6-c6919d08e34c",
                        "name": "CURRENT ASSETS",
                        "head_code": 31
                    }
                }
            ]
        },
        {
            "id": "4ca4727f-53b2-46b7-b075-d91d6e0b4cfe",
            "code": "1102",
            "name": "BANK",
            "type": {
                "id": "6f2cff3c-3b18-4c6d-b543-f6fb4f55f284",
                "name": "ASSET",
                "head_code": 3
            },
            "child": [
                {
                    "id": "3877494f-01dc-458e-a90c-d4f158386c56",
                    "parent_id": "4ca4727f-53b2-46b7-b075-d91d6e0b4cfe",
                    "code": "110-20-001",
                    "name": "Bank CIMB (800-121-005-400)",
                    "type": {
                        "id": "55f46545-51d1-4c56-9da6-c6919d08e34c",
                        "name": "CURRENT ASSETS",
                        "head_code": 31
                    }
                }
            ]
        }
    ]
}
 

Request   

POST api/v1/master/chart-of-account-default-template/addlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

template_id   using  optional    

uuid coa tempalate id. Example: recusandae

coa_id   using  optional    

uuid coa id. Example: repellat

COA Default Template Remove

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default-template/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"template_id\": \"impedit\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default-template/remove"
);

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

let body = {
    "template_id": "impedit"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default-template/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'template_id' => 'impedit',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "msg": "success remove Chart Of Account Template"
}
 

Request   

POST api/v1/master/chart-of-account-default-template/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

template_id   using  optional    

uuid coa tempalate id if this new please not set this parameter. Example: impedit

COA Default Template list Remove

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default-template/removelist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"template_id\": \"autem\",
    \"coa_id\": \"impedit\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default-template/removelist"
);

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

let body = {
    "template_id": "autem",
    "coa_id": "impedit"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default-template/removelist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'template_id' => 'autem',
            'coa_id' => 'impedit',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "msg": "Success remove default template list coa"
}
 

Request   

POST api/v1/master/chart-of-account-default-template/removelist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

template_id   using  optional    

uuid coa tempalate id. Example: autem

coa_id   using  optional    

uuid coa id. Example: impedit

Option Input COA Item Default

Example request:
curl --request POST \
    "http://localhost/api/v1/master/chart-of-account-default-template/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"parentcoa\",
    \"parent_id\": \"porro\"
}"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default-template/dropdown/list"
);

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

let body = {
    "mode": "parentcoa",
    "parent_id": "porro"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/chart-of-account-default-template/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'parentcoa',
            'parent_id' => 'porro',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Parrent Chart Of Accounts Founds",
    "data": [
        {
            "key": "210b2362-d9f6-45e0-a25b-ead638df9b91",
            "label": "1101 - HOUSE BANK"
        },
        {
            "key": "4ca4727f-53b2-46b7-b075-d91d6e0b4cfe",
            "label": "1102 - BANK"
        },
        {
            "key": "8fc28675-351f-433a-a5db-5a1de3034372",
            "label": "1103 - CASH CLEARANCE"
        },
        {
            "key": "8830ca00-d308-4e6a-95d4-62ad01228e90",
            "label": "1200 - ACCOUNT RECEIVABLE"
        },
        {
            "key": "fd1c04d4-ff02-4dff-90aa-19af7117ba57",
            "label": "1202 - OTHER RECEIVABLE"
        },
        {
            "key": "b42ccf09-1d0e-41a3-8eab-21ae5d2e0f31",
            "label": "1205 - AFFILIATED COMP.RECEIVABLE"
        },
        {
            "key": "81646715-b856-468a-b043-139486a308ca",
            "label": "1206 - DEPOSIT AND ADVANCED"
        },
        {
            "key": "b2267586-3d5e-493b-8ab1-77a112e3e839",
            "label": "1300 - INVENTORY"
        },
        {
            "key": "4081e874-138d-458c-90cb-aa0393c3bd3b",
            "label": "1302 - PREPAID EXPENSES"
        },
        {
            "key": "803cb6c1-fce1-46b0-b17e-37c2de7d8b67",
            "label": "1500 - PROPERTY & EQUIPMENT"
        },
        {
            "key": "23b79ab7-6670-4bad-944a-94483d9bbc28",
            "label": "1503 - FURNITURE, FIXTURE & EQUIPMENT"
        },
        {
            "key": "fc6257ca-106a-4d9e-8a30-b7d0c2f6dab3",
            "label": "1505 - OPERATING EQUIPMENT"
        },
        {
            "key": "f6ee9426-57c4-4a73-a344-ec04dd5f68c2",
            "label": "1600 - FIXED ASSET LEASING"
        },
        {
            "key": "eff45872-f200-426a-8041-c11c064a7166",
            "label": "1700 - ACC. DEPRE PROPERTY & EQUIPMENT"
        },
        {
            "key": "5d020502-871e-4947-bc42-fe51ac519653",
            "label": "1701 - ACC. DEPRE FURNITURE, FIXTURE &"
        },
        {
            "key": "0b09c462-295b-434d-a5d2-9dadc6f239ee",
            "label": "1702 - ACC. DEPRE OPERATING EQUIPMENT"
        },
        {
            "key": "bcb9d228-589b-43a0-b6ed-59aa4568e95c",
            "label": "1703 - ACC. DEPRE FIXED ASSET LEASING"
        },
        {
            "key": "fc5c56af-55b9-4ed2-8bc2-f388e9001554",
            "label": "1800 - OTHER ASSET"
        },
        {
            "key": "06a1cbb6-6f5e-4cfd-80a1-207b580c4717",
            "label": "2100 - ACCOUNT PAYABLE"
        },
        {
            "key": "7a790a80-bd59-4e79-8869-ace6fa7a55e0",
            "label": "2200 - TAX PAYABLE"
        },
        {
            "key": "8c0fd310-cc35-4ace-94e2-deb37cc79aa2",
            "label": "2300 - ACCRUED EXPENSES"
        },
        {
            "key": "00a4706d-5d9e-4a08-ba6d-9caccf45bff0",
            "label": "2400 - GUEST DEPOSIT"
        },
        {
            "key": "23c40acd-12b8-4ba1-aab9-d054cd541b30",
            "label": "2500 - OTHER LIABILITIES"
        },
        {
            "key": "b647d91e-7061-4a12-af2f-6d6cc89a7139",
            "label": "2600 - AFFILIATED COMPANY PAYABLE"
        },
        {
            "key": "7d690279-16ba-4ab1-9903-8cb04e88030f",
            "label": "2700 - PROVISION"
        },
        {
            "key": "a5e8d2a9-9ce6-43db-8283-19b2f4068274",
            "label": "2800 - RESERVE"
        },
        {
            "key": "b5f2fac5-37ae-4e9b-bb6f-7fe3185bfd11",
            "label": "2900 - LONG TERM LIABILITIES"
        },
        {
            "key": "56c709ec-38ea-4def-8c96-5a5fd04946c2",
            "label": "3100 - CAPITAL"
        },
        {
            "key": "7e95b34b-f1e8-4f04-b23a-04e3f2be8187",
            "label": "3200 - RETAINED EARNING"
        },
        {
            "key": "5a5cb85b-1ad5-4da5-a291-f914204af921",
            "label": "4001 - ROOM REVENUE"
        },
        {
            "key": "5555087b-30be-4759-85f8-d8acd3220c05",
            "label": "4102 - RESTAURANT REVENUE"
        },
        {
            "key": "cd40bf4e-8bb0-4af0-a619-22fc8d08e952",
            "label": "4103 - POOL BAR REVENUE"
        },
        {
            "key": "d13274cb-3158-4389-b05e-200f4932e613",
            "label": "4104 - BANQUET REVENUE"
        },
        {
            "key": "1000d05d-6280-4dec-9e1f-3231b821dd96",
            "label": "4105 - ROOM SERVICE REVENUE"
        },
        {
            "key": "480b5176-37b9-4851-b6db-1da3c22a015c",
            "label": "4106 - MINI BAR"
        },
        {
            "key": "2c55fb76-5ea6-4d3a-8430-fa2bbcfd9869",
            "label": "4107 - TELEPHONE REVENUE"
        },
        {
            "key": "6e024e8d-8ead-4623-b9d1-9d3370320af5",
            "label": "4108 - BUSINESS CENTER REVENUE"
        },
        {
            "key": "601d1eec-00a2-4300-9ebf-517fce44cd39",
            "label": "4109 - LAUNDRY REVENUE"
        },
        {
            "key": "698a22e9-7e09-402a-9ddd-13e19140def3",
            "label": "4110 - SPA REVENUE"
        },
        {
            "key": "d25c9ab5-95f5-47d4-a47e-ba8147bb7053",
            "label": "4301 - MOD REVENUE"
        },
        {
            "key": "60a19460-3517-48e6-82cf-e6855fe276f8",
            "label": "4302 - OTHER INCOME"
        },
        {
            "key": "ee51d258-0c3e-4971-ac91-bca3dafb8537",
            "label": "5000 - COST OF RESTAURANT"
        },
        {
            "key": "17d2fd3c-55fa-4e59-8fc2-cba98b557be9",
            "label": "5101 - COST OF POOL BAR"
        },
        {
            "key": "8504db70-44d7-4e62-9510-1ffca276c4c2",
            "label": "5102 - COST OF BANQUET"
        },
        {
            "key": "d7e55854-cc2b-4d9a-a693-8c5ce9d65891",
            "label": "5103 - COST OF ROOM SERVICE"
        },
        {
            "key": "e1c8b321-ebd6-499d-9002-2abd99c8fe66",
            "label": "5104 - TELEPHONE COST OF SALES"
        },
        {
            "key": "e2415705-6352-4899-a164-129e20aaa4aa",
            "label": "5105 - BC COST OF SALES"
        },
        {
            "key": "59c308ac-df35-44fd-b562-1e63312a84ad",
            "label": "5106 - LAUNDRY COST OF SALES"
        },
        {
            "key": "d8ee2e0b-57ac-40a3-b5af-157d539093b7",
            "label": "5109 - SPA COST OF SALES"
        },
        {
            "key": "820d1acc-0efb-4de8-9172-44c62e001a0c",
            "label": "5110 - MOD COST OF SALES"
        },
        {
            "key": "2d243fe1-1cfd-4205-88cc-cac68ef3eb43",
            "label": "6100 - FO PAYROLL & RELATED"
        },
        {
            "key": "5a9f0e73-9aaf-4d19-8dde-7223ae74feeb",
            "label": "6101 - FO OTHER EXPENSES"
        },
        {
            "key": "f4013403-dc42-4c57-bd58-4566fa2647d1",
            "label": "6102 - FO PROVISION"
        },
        {
            "key": "4e58b804-17b3-4447-a1a6-0359d713be34",
            "label": "6110 - HK PAYROLL & RELATED"
        },
        {
            "key": "8d103cc4-73d9-41e1-a647-0003af126eb1",
            "label": "6111 - HK OTHER EXPENSES"
        },
        {
            "key": "700d17b7-a83c-4532-ad5a-a307035687cc",
            "label": "6112 - HK PROVISION"
        },
        {
            "key": "15901219-d41c-4a2f-8329-6c5737cc0b11",
            "label": "6120 - REST PAYROLL & RELATED"
        },
        {
            "key": "9142a74a-ea26-4f5a-a106-5a6a1b0e7df4",
            "label": "6121 - REST OTHER EXPENSES"
        },
        {
            "key": "9a2a4764-6f60-4633-96a4-332dd6571e46",
            "label": "6122 - REST PROVISION"
        },
        {
            "key": "e60ce86c-68b4-4cde-bc85-28231266cee4",
            "label": "6130 - POOL BAR PAYROLL & RELATED"
        },
        {
            "key": "e561a4f8-588d-43aa-8a20-188edd2ae811",
            "label": "6131 - POOL BAR OTHER EXPENSES"
        },
        {
            "key": "4ffa54ed-feaf-4ed4-b661-1cf72df33a31",
            "label": "6132 - POOL BAR PROVISION"
        },
        {
            "key": "1e542c97-b3ee-479e-9859-4a1975e87c52",
            "label": "6140 - RS PAYROLL & RELATED"
        },
        {
            "key": "a05037f3-b44d-489a-a097-837f581d106c",
            "label": "6141 - RS OTHER EXPENSES"
        },
        {
            "key": "2a7be2e9-2c2f-4c77-b6b2-4c83c5ffdf10",
            "label": "6142 - RS PROVISION"
        },
        {
            "key": "d6054b4f-b5b0-4946-b6d9-f05cab48e2f9",
            "label": "6150 - BQT PAYROLL & RELATED"
        },
        {
            "key": "5dfb17b7-644a-43d4-baa5-8f823d0f0abf",
            "label": "6151 - BQT OTHER EXPENSES"
        },
        {
            "key": "8aee3482-d98e-4574-9c62-409c055a2cb5",
            "label": "6152 - BQT PROVISION"
        },
        {
            "key": "97ff15af-1f9f-4b25-9425-8e5b3a0db63d",
            "label": "6160 - MB PAYROLL & RELATED"
        },
        {
            "key": "495d3064-00a5-4cb4-bb60-ca82950575ef",
            "label": "6161 - MB OTHER EXPENSES"
        },
        {
            "key": "4e7838a6-fedd-4db6-a456-0ceac8185a24",
            "label": "6162 - MB PROVISION"
        },
        {
            "key": "508580d4-445e-45a7-8447-9d111e6e0f8b",
            "label": "6170 - FBP PAYROLL & RELATED"
        },
        {
            "key": "7a24967c-4fb5-4864-a53a-4763131953d1",
            "label": "6171 - FBP OTHER EXPENSES"
        },
        {
            "key": "64f6f4e7-6caa-4530-9ffb-596c5c0a5cea",
            "label": "6172 - FBP PROVISION"
        },
        {
            "key": "f4dd92f5-3ef3-4d55-b1b1-253d95bbcf3b",
            "label": "6180 - TLP PAYROLL & RELATED"
        },
        {
            "key": "d9fa0a74-fcf2-45a9-a36a-efb43d5e75b5",
            "label": "6181 - TLP OTHER EXPENSES"
        },
        {
            "key": "255a250c-6b2e-491a-a4ee-8ad05f28adc4",
            "label": "6182 - TLP PROVISION"
        },
        {
            "key": "7d0178a5-6040-462b-9105-a183a4128bf6",
            "label": "6190 - BC PAYROLL & RELATED"
        },
        {
            "key": "a18b0837-5cc4-4742-9080-33cd4415556e",
            "label": "6191 - BC OTHER EXPENSES"
        },
        {
            "key": "6a948b29-0d86-46e8-8cb0-11b0f30b294a",
            "label": "6192 - BC PROVISION"
        },
        {
            "key": "42a8a678-5da8-4644-b26b-977350861f35",
            "label": "6200 - LDY PAYROLL & RELATED"
        },
        {
            "key": "a94ed02c-737f-4056-ae73-707f32e5abc0",
            "label": "6201 - LDY OTHER EXPENSES"
        },
        {
            "key": "fe2c9dba-908a-4435-b954-6ce2ebaec17c",
            "label": "6202 - LDY PROVISION"
        },
        {
            "key": "425639df-c5f6-47cd-88d8-7dd9b945cb2f",
            "label": "6210 - SPA PAYROLL & RELATED"
        },
        {
            "key": "fbd01d6b-377f-4379-8491-b483ed1ed76d",
            "label": "6211 - SPA OTHER EXPENSES"
        },
        {
            "key": "5156f809-0ca5-4421-83bd-e6951df9d9a0",
            "label": "6212 - SPA PROVISION"
        },
        {
            "key": "0d3c9d5b-f7cc-417a-a1eb-75d385f9d502",
            "label": "6230 - MOD PAYROLL & RELATED EXPENSES"
        },
        {
            "key": "26b4f9f7-9e9b-431b-a990-5ed7fead02be",
            "label": "6231 - MOD OTHER EXPENSES"
        },
        {
            "key": "0f681405-70ee-494e-80d9-46660a463c47",
            "label": "6232 - MOD PAYROLL & RELATED EXPENSES"
        },
        {
            "key": "55e203a3-c76b-4c65-864d-1aaf07fe93ba",
            "label": "7100 - A&G PAYROLL & RELATED"
        },
        {
            "key": "f4b92be1-a95a-46ca-a979-c2cf78456826",
            "label": "7101 - A&G OTHER EXPENSES"
        },
        {
            "key": "041c1a24-94a3-4e8e-8e71-38f5dc6bb26d",
            "label": "7200 - HRD PAYROLL & RELATED"
        },
        {
            "key": "55cc5a77-7315-49bb-aa3b-9347f9b206cb",
            "label": "7201 - HRD OTHER EXPENSES"
        },
        {
            "key": "6f36d345-6811-4ce1-9565-7e5aae6239ff",
            "label": "7300 - S&M PAYROLL & RELATED"
        },
        {
            "key": "473fe8e5-c982-443c-b247-841079b198ba",
            "label": "7301 - S&M OTHER EXPENSES"
        },
        {
            "key": "2bef6239-ed37-474e-a2a7-bda57da284f5",
            "label": "7400 - PMC PAYROLL & RELATED"
        },
        {
            "key": "5f558c00-7edb-4d51-9e16-e0c3a5bcfee9",
            "label": "7401 - PMC OTHER EXPENSES"
        },
        {
            "key": "52006a6e-3572-40d3-9a0b-eaa6001fc48b",
            "label": "7403 - PMC ENERGY COST"
        },
        {
            "key": "2246a00e-6edf-45ae-b28f-b26e3c942c30",
            "label": "8000 - OTHER DEDUCTION"
        },
        {
            "key": "72836a7f-caa3-46f0-bfe4-36eba0a4d565",
            "label": "9900 - STATISTIC"
        },
        {
            "key": "b520a39a-24a4-4b81-bfad-053e91218b49",
            "label": "9999090000 - test Chart Of Account Insert"
        },
        {
            "key": "b428bcd8-c55d-40bd-8847-4a59a288e1af",
            "label": "9999090000 - test Chart Of Account Insert"
        },
        {
            "key": "10889fad-a074-4c30-8b2c-ae4e1b81b209",
            "label": "9999090000 - test Chart Of Account Insert edit"
        }
    ]
}
 

Request   

POST api/v1/master/chart-of-account-default-template/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The mode. Example: parentcoa

Must be one of:
  • parentcoa
  • coa
parent_id   string  optional    

The Parent uuid need if mode coa. Example: porro

Current User Data

Update Current user

Example request:
curl --request POST \
    "http://localhost/api/v1/misc/currentuser" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"qui\",
    \"timezone_id\": \"placeat\",
    \"language_id\": \"ut\",
    \"name\": \"consequatur\",
    \"phone\": \"necessitatibus\",
    \"password\": \"ZD*3AO-b\\/!s\",
    \"password_confirmation\": \"earum\"
}"
const url = new URL(
    "http://localhost/api/v1/misc/currentuser"
);

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

let body = {
    "id": "qui",
    "timezone_id": "placeat",
    "language_id": "ut",
    "name": "consequatur",
    "phone": "necessitatibus",
    "password": "ZD*3AO-b\/!s",
    "password_confirmation": "earum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/misc/currentuser';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'qui',
            'timezone_id' => 'placeat',
            'language_id' => 'ut',
            'name' => 'consequatur',
            'phone' => 'necessitatibus',
            'password' => 'ZD*3AO-b/!s',
            'password_confirmation' => 'earum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update Current User Data",
    "data": {
        "id": "ca8afc19-1c45-468b-a522-047232f959f5",
        "name": "Agus Bawa Nadi Putra update",
        "shortname": "Agus Bawa...",
        "phone": "081805410047",
        "category": "System Admin",
        "timezone": {
            "id": "461ce532-c63f-4ada-8a3b-4a6317b8bff1",
            "name": "Africa/Abidjan"
        },
        "language": {
            "id": "50d954be-3b99-43bf-abf8-50b1462b9825",
            "name": "Afrikaans"
        },
        "email": "[email protected]",
        "google2fa_secret": null,
        "google2fa_is_active": false,
        "properties": [
            {
                "id": "5e1932e0-7d6c-49e4-989c-6c6512263d8f",
                "name": "Hotel Dummy"
            }
        ]
    }
}
 

Request   

POST api/v1/misc/currentuser

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Current User Example: qui

timezone_id   string     

uuid of Timezone Example: placeat

language_id   string     

uuid of Timezone Example: ut

name   string     

Name of Amenities Example: consequatur

phone   string     

User Phone Number Example: necessitatibus

password   string     

if want change user password Example: ZD*3AO-b/!s

password_confirmation   string     

if want change user password must same with this Example: earum

User Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/misc/currentuser/detail" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/misc/currentuser/detail"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/misc/currentuser/detail';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Current User Detail",
    "data": {
        "id": "edc19627-47c2-412c-8a75-1a879c3c03b6",
        "name": "Master User Api",
        "shortname": "Master Use...",
        "phone": null,
        "category": "System Admin",
        "timezone": null,
        "language": null,
        "email": "[email protected]",
        "google2fa_secret": null,
        "google2fa_is_active": false,
        "properties": [
            {
                "id": "31db6935-0f23-4939-b31f-d4bd1a1af828",
                "name": "Hotel Dummy"
            }
        ],
        "features": {
            "language_settings": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "currency_settings": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "timezone_settings": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "country_settings": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "region_settings": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "area_settings": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "features_categories": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "user_category_features_defaults": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "properties": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "users": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "room_status_default": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "amenities_list_default": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "chart_of_account_default": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "chart_of_account_template": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "room_amenities_list": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "room_status_list": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "room_bed_type_list": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "room_type": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "rooms_list": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "room_rates": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "reservation": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "room_available": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "night_audit": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "guest_profile": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "guest_list_daily": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "guest_payment": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "chart_of_account": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "tax_and_service_list": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "agent_property_list": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ],
            "payment_options_list": [
                "can_list",
                "can_view",
                "can_add",
                "can_edit",
                "can_delete"
            ]
        }
    }
}
 

Request   

GET api/v1/misc/currentuser/detail

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Amenities. Example: 049587fc-056c-39c7-b626-12ed011e1e83

Enable / Disable google2fa

Example request:
curl --request POST \
    "http://localhost/api/v1/misc/currentuser/google2fa/setting" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"status\": 12
}"
const url = new URL(
    "http://localhost/api/v1/misc/currentuser/google2fa/setting"
);

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

let body = {
    "status": 12
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/misc/currentuser/google2fa/setting';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'status' => 12,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": true,
    "secret": "ROXTGX2RYNKYB7L5",
    "appname": "Loka Room",
    "qr_code_url": "otpauth://totp/Loka%20Room:master%40lokaroom.net?secret=ROXTGX2RYNKYB7L5&issuer=Loka%20Room&algorithm=SHA1&digits=6&period=30"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/misc/currentuser/google2fa/setting

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

status   integer     

value 1 for enable value 0 for disable Example: 12

Option Editor Current User Input

Example request:
curl --request POST \
    "http://localhost/api/v1/misc/currentuser/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"timezone\"
}"
const url = new URL(
    "http://localhost/api/v1/misc/currentuser/dropdown/list"
);

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

let body = {
    "mode": "timezone"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/misc/currentuser/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'timezone',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Timezone Founds",
    "data": [
        {
            "id": "59af78ff-d35f-40e4-8220-ff67af5d07a3",
            "name": "Africa/Abidjan"
        },
        {
            "id": "f311336a-f1ee-4c7b-9e1e-7d6e61c67e41",
            "name": "Africa/Accra"
        },
        {
            "id": "a9454d6b-abe6-459b-8b97-e710df56c993",
            "name": "Africa/Addis_Ababa"
        }
    ]
}
 

Request   

POST api/v1/misc/currentuser/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: timezone

Must be one of:
  • timezone
  • language

Daily Revenue Report

Daily Revenue List

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/daily-revenue/report" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quis\",
    \"days\": \"ut\",
    \"list_type\": \"source_list.\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/daily-revenue/report"
);

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

let body = {
    "property_id": "quis",
    "days": "ut",
    "list_type": "source_list."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/daily-revenue/report';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quis',
            'days' => 'ut',
            'list_type' => 'source_list.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Daily Found",
    "data": {
        "in_house": [
            {
                "room_type_name": "Standard",
                "list": [
                    {
                        "booking_id": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
                        "booking_room_id": "7a35bc8f-1403-4d8a-9c05-7191ed8445e7",
                        "booking_no": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
                        "guest": {
                            "name": "Mr. Takayuki Nomoto",
                            "id": "2da48c55-2688-443f-99b3-47ab29616604"
                        },
                        "country": {
                            "name": "Japan",
                            "id": "72a89d6b-78a8-4db9-b66c-3a16af183567"
                        },
                        "room_type": {
                            "name": "Standard",
                            "id": "a880635a-810f-4f9b-b39a-3f49387ec7d5"
                        },
                        "room": {
                            "name": "101",
                            "id": "e7541067-7551-4905-b13a-e7f026a06a48"
                        },
                        "agent": {
                            "name": "Walk In",
                            "id": "e41961d9-620e-4290-9497-64ece423e82c"
                        },
                        "arival": "2024-09-17",
                        "depature": "2024-09-19",
                        "adult": 2,
                        "child": 2,
                        "special_request": null,
                        "remark": null
                    }
                ]
            }
        ]
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/backoffice/daily-revenue/report

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: quis

days   string  optional    

date of date report date format Y-m-d. Example: ut

list_type   string  optional    

required. Example: source_list.

Must be one of:
  • drr
  • macro

Day-Use Booking

POST api/v1/booking/dayuse/dropdown/{mode?}

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/dayuse/dropdown/roomratedaily"
const url = new URL(
    "http://localhost/api/v1/booking/dayuse/dropdown/roomratedaily"
);

fetch(url, {
    method: "POST",
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/dayuse/dropdown/roomratedaily';
$response = $client->post($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/booking/dayuse/dropdown/{mode?}

URL Parameters

mode   string     

Example: roomratedaily

Must be one of:
  • rate-plan
  • agent
  • available-room
  • roomratedaily

Calculate Day-Use booking summary (no DB writes).

Same payload shape as createBooking — frontend calls this to preview totals before submitting. Mirrors the procedure of /booking/editor/calculate-summary (CalculateSummaryController::calculation), applying day-use guards (same-day, hours <= max_hours, Day-Use rate plan).

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/dayuse/calculate-summary" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ut\",
    \"arival\": \"quaerat\",
    \"depature\": \"officiis\",
    \"room_lists\": [
        \"repellendus\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/dayuse/calculate-summary"
);

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

let body = {
    "property_id": "ut",
    "arival": "quaerat",
    "depature": "officiis",
    "room_lists": [
        "repellendus"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/dayuse/calculate-summary';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ut',
            'arival' => 'quaerat',
            'depature' => 'officiis',
            'room_lists' => [
                'repellendus',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/booking/dayuse/calculate-summary

Headers

Content-Type        

Example: application/json

Body Parameters

property_id   string     

Example: ut

arival   string     

Y-m-d (same as depature) Example: quaerat

depature   string     

Y-m-d Example: officiis

room_lists   string[]     

(same shape as createBooking)

Create Day-Use Booking.

Procedure mirrors /booking/editor/create:

  1. Validate request (incl. day-use guards: type/source/same-day/hours)
  2. Pre-load room_type / room / rate_plan maps
  3. Verify all requested rooms are available for the date
  4. Create Booking header, then create each BookingRoom (with day-use flags)
  5. setRoomNotAvailable + CM inventory sync per room
  6. Dispatch ProcessBookingRoomRate (room_rate array is built backend-side from hourly_rate × total_hours; list_inclusion passes through unchanged)
Example request:
curl --request POST \
    "http://localhost/api/v1/booking/dayuse/create" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"veritatis\",
    \"property_agent_id\": \"reiciendis\",
    \"booking_status_id\": \"molestias\",
    \"payment_collect_type_id\": \"rerum\",
    \"arival\": \"voluptate\",
    \"depature\": \"velit\",
    \"guest_booking\": [],
    \"remark\": \"atque\",
    \"booking_reference\": \"mollitia\",
    \"room_lists\": [
        \"quaerat\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/dayuse/create"
);

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

let body = {
    "property_id": "veritatis",
    "property_agent_id": "reiciendis",
    "booking_status_id": "molestias",
    "payment_collect_type_id": "rerum",
    "arival": "voluptate",
    "depature": "velit",
    "guest_booking": [],
    "remark": "atque",
    "booking_reference": "mollitia",
    "room_lists": [
        "quaerat"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/dayuse/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'veritatis',
            'property_agent_id' => 'reiciendis',
            'booking_status_id' => 'molestias',
            'payment_collect_type_id' => 'rerum',
            'arival' => 'voluptate',
            'depature' => 'velit',
            'guest_booking' => [],
            'remark' => 'atque',
            'booking_reference' => 'mollitia',
            'room_lists' => [
                'quaerat',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/booking/dayuse/create

Headers

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: veritatis

property_agent_id   string     

uuid of Property Agent (must be Walk-In or Direct source) Example: reiciendis

booking_status_id   string     

uuid of Booking Status (typically Confirm) Example: molestias

payment_collect_type_id   string     

uuid of Payment Collect Type Example: rerum

arival   string     

Y-m-d (must equal depature — same-day) Example: voluptate

depature   string     

Y-m-d (must equal arival — same-day) Example: velit

guest_booking   object     

guest profile

remark   string  optional    

optional Example: atque

booking_reference   string  optional    

optional Example: mollitia

room_lists   string[]     
room_type_id   string     

uuid of Room Type Example: id

room_id   string     

uuid of Room Example: quisquam

rate_plan_id   string     

uuid of a Day-Use rate plan Example: sint

adult   integer     

min:0 Example: 14

child   integer     

min:0 Example: 7

extra_adult   integer     

min:0 Example: 13

extra_child   integer     

min:0 Example: 12

checkin_time   string     

H:i (24-hour) Example: consequatur

checkout_time   string     

H:i, > checkin_time, same day Example: porro

guest_in_room   object  optional    

optional ({"use_booking_guest":true} OK)

list_inclusion   string[]  optional    

optional inclusions (shape: [{"property_product":{"id":"..."},"qty":1,"rate":15000,"unit_rate":15000,"add_remark":""}])

Save / Edit Day-Use booking (update existing).

Procedure mirrors /booking/editor/save:

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/dayuse/save" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"dolor\",
    \"booking_id\": \"omnis\",
    \"booking_status_id\": \"nihil\",
    \"property_agent_id\": \"et\",
    \"payment_collect_type_id\": \"blanditiis\",
    \"booking_reference\": \"provident\",
    \"remark\": \"suscipit\",
    \"guest_booking\": [],
    \"room_lists\": [
        \"ipsum\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/dayuse/save"
);

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

let body = {
    "property_id": "dolor",
    "booking_id": "omnis",
    "booking_status_id": "nihil",
    "property_agent_id": "et",
    "payment_collect_type_id": "blanditiis",
    "booking_reference": "provident",
    "remark": "suscipit",
    "guest_booking": [],
    "room_lists": [
        "ipsum"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/dayuse/save';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'dolor',
            'booking_id' => 'omnis',
            'booking_status_id' => 'nihil',
            'property_agent_id' => 'et',
            'payment_collect_type_id' => 'blanditiis',
            'booking_reference' => 'provident',
            'remark' => 'suscipit',
            'guest_booking' => [],
            'room_lists' => [
                'ipsum',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/booking/dayuse/save

Headers

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid Property Example: dolor

booking_id   string     

uuid Booking Example: omnis

booking_status_id   string  optional    

optional uuid Booking Status Example: nihil

property_agent_id   string  optional    

optional uuid Property Agent Example: et

payment_collect_type_id   string  optional    

optional uuid Payment Collect Type Example: blanditiis

booking_reference   string  optional    

optional Example: provident

remark   string  optional    

optional Example: suscipit

guest_booking   object  optional    

optional

room_lists   string[]     
changes_status   string     

Example: remove

Must be one of:
  • add
  • update
  • remove
booking_room_id   string     

for update/remove Example: consequatur

room_type_id   string     

for add Example: exercitationem

room_id   string     

for add Example: totam

rate_plan_id   string     

for add/update Example: est

arrival   string     

for add/update Y-m-d (must equal departure) Example: assumenda

departure   string     

for add/update Y-m-d (must equal arrival) Example: porro

checkin_time   string     

for add/update H:i Example: illum

checkout_time   string     

for add/update H:i Example: vel

adult   integer     

for add/update Example: 9

child   integer     

for add/update Example: 6

extra_adult   integer     

for add/update Example: 19

extra_child   integer     

for add/update Example: 14

list_inclusion   string[]  optional    

optional

Endpoints

Get night audit report summary for a given property and date.

Example request:
curl --request POST \
    "http://localhost/api/v1/property/nightaudit/report/summary" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ea\",
    \"audit_date\": \"eaque\"
}"
const url = new URL(
    "http://localhost/api/v1/property/nightaudit/report/summary"
);

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

let body = {
    "property_id": "ea",
    "audit_date": "eaque"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/nightaudit/report/summary';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ea',
            'audit_date' => 'eaque',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Summary Report",
    "data": {
        "audit_date": "2026-07-05",
        "total_rooms": 18,
        "available_rooms": 18,
        "room_sold": 18,
        "occupancy_pct": 100,
        "room_revenue": 1364544976,
        "adr": 75808054,
        "revpar": 75808054,
        "coa": {
            "revenue": "410101 Room Revenue",
            "tax": "210206 Recontruction Tax - PB 1",
            "service": "210501 A/P - Service Charge"
        }
    }
}
 

Request   

POST api/v1/property/nightaudit/report/summary

Headers

Content-Type        

Example: application/json

Body Parameters

property_id   string     

UUID of Property. Example: ea

audit_date   string     

Date (Y-m-d). Example: eaque

POST api/v1/property/trx/test

Example request:
curl --request POST \
    "http://localhost/api/v1/property/trx/test"
const url = new URL(
    "http://localhost/api/v1/property/trx/test"
);

fetch(url, {
    method: "POST",
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/trx/test';
$response = $client->post($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/property/trx/test

Future Booking Import

Upload & Import Booking File

Upload a CSV/XLSX/XLS file from an OTA or PMS and import it into the staging table. The source OTA is auto-detected from the file name (e.g. agoda_report.csv → Agoda), with fallback to heading-row fingerprint detection if the file name is not recognisable. A row is written to future_booking_import_logs for the request (log_id in the response).

Example request:
curl --request POST \
    "http://localhost/api/v1/property/future-booking-imports/store" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: multipart/form-data" \
    --form "property_id=1"\
    --form "file=@C:\Users\agusb\AppData\Local\Temp\php9A7F.tmp" 
const url = new URL(
    "http://localhost/api/v1/property/future-booking-imports/store"
);

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

const body = new FormData();
body.append('property_id', '1');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/future-booking-imports/store';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'multipart/form-data',
        ],
        'multipart' => [
            [
                'name' => 'property_id',
                'contents' => '1'
            ],
            [
                'name' => 'file',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php9A7F.tmp', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Import successful.",
    "data": {
        "log_id": 1,
        "import_result": {
            "import_batch": "550e8400-e29b-41d4-a716-446655440000",
            "source": "agoda",
            "total_rows": 120,
            "imported_rows": 118,
            "skipped_rows": 2,
            "error_count": 0,
            "failure_count": 0
        },
        "db_summary": {
            "total_records": 118,
            "by_status": {
                "confirmed": 100,
                "cancelled": 10,
                "pending": 5,
                "no_show": 3,
                "unknown": 0
            },
            "by_payment_type": {
                "ota_collect": 90,
                "hotel_collect": 20,
                "virtual_credit_card": 5,
                "bank_transfer": 3,
                "unknown": 0
            },
            "revenue": {
                "total_amount": 50000000,
                "commission": 5000000,
                "net_amount": 45000000,
                "currency": "IDR"
            },
            "imported_data": []
        },
        "errors": [],
        "failures": []
    }
}
 

Example response (207):


{
    "message": "Import completed with 2 problematic rows.",
    "data": {
        "log_id": 1,
        "import_result": {
            "import_batch": "550e8400-e29b-41d4-a716-446655440000",
            "source": "agoda",
            "total_rows": 10,
            "imported_rows": 8,
            "skipped_rows": 0,
            "error_count": 2,
            "failure_count": 0
        },
        "db_summary": null,
        "errors": [],
        "failures": []
    }
}
 

Example response (400):


{
    "message": "Invalid request data.",
    "data": {}
}
 

Example response (500):


{
    "message": "Something went wrong. Please try again.",
    "data": []
}
 

Request   

POST api/v1/property/future-booking-imports/store

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: multipart/form-data

Body Parameters

file   file     

The booking file to import. Accepted: csv, xlsx, xls. Max 10240 KB (10 MB). Example: C:\Users\agusb\AppData\Local\Temp\php9A7F.tmp

property_id   integer     

Internal property primary key. Must exist in properties.id. Example: 1

List Future Booking Imports

Paginated list of imported rows for a property, with optional filters. Response shape matches the frontoffice booking list pattern: data.item and data.pagination.

Example request:
curl --request POST \
    "http://localhost/api/v1/property/future-booking-imports/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"cfc616bb-3145-4a98-bb6b-0efb5c8203ed\",
    \"search\": \"John\",
    \"check_in_start_date\": \"non\",
    \"check_in_end_date\": \"quidem\",
    \"booking_id\": \"voluptas\",
    \"guest_name\": \"et\",
    \"ota_name\": \"qui\",
    \"import_batch\": \"est\",
    \"source\": \"asperiores\",
    \"status\": \"eos\",
    \"page_number\": 17,
    \"per_page\": 1
}"
const url = new URL(
    "http://localhost/api/v1/property/future-booking-imports/list"
);

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

let body = {
    "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
    "search": "John",
    "check_in_start_date": "non",
    "check_in_end_date": "quidem",
    "booking_id": "voluptas",
    "guest_name": "et",
    "ota_name": "qui",
    "import_batch": "est",
    "source": "asperiores",
    "status": "eos",
    "page_number": 17,
    "per_page": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/future-booking-imports/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'cfc616bb-3145-4a98-bb6b-0efb5c8203ed',
            'search' => 'John',
            'check_in_start_date' => 'non',
            'check_in_end_date' => 'quidem',
            'booking_id' => 'voluptas',
            'guest_name' => 'et',
            'ota_name' => 'qui',
            'import_batch' => 'est',
            'source' => 'asperiores',
            'status' => 'eos',
            'page_number' => 17,
            'per_page' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Future booking import list retrieved successfully.",
    "data": {
        "item": [
            {
                "id": "550e8400-e29b-41d4-a716-446655440000",
                "booking_uuid": "550e8400-e29b-41d4-a716-446655440000",
                "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
                "import_batch": "650e8400-e29b-41d4-a716-446655440001",
                "source": "agoda",
                "booking_id": "AGD-123456",
                "ota_name": "Agoda",
                "ota_channel": "Direct",
                "ota_booking_reference": "REF-001",
                "confirmation_id": "CNF-001",
                "ota_commission_type": "GROSS",
                "ota_commission_pct": "15.00",
                "sm_agent_id": "8b8e2678-8179-40f5-973d-6824ced83590",
                "sm_agent_name": "Agoda",
                "guest_name": "John Doe",
                "sm_guest_id": null,
                "nationality": "ID",
                "sm_nationality_id": null,
                "country": null,
                "sm_country_id": null,
                "adults": 2,
                "children": 0,
                "check_in": "2026-05-01",
                "check_out": "2026-05-03",
                "nights": 2,
                "num_rooms": 1,
                "special_request": null,
                "room_type": "Standard Double",
                "room_type_id": "123",
                "rate_type": "Room Only",
                "room_number": null,
                "sm_room_type_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                "sm_room_type_name": "Standard Double",
                "sm_room_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
                "sm_room_name": "101",
                "sm_rate_plan_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
                "sm_rate_plan_name": "Room Only",
                "sm_rate_type_id": "d4e5f6a7-b8c9-0123-def0-1234567890123",
                "sm_rate_type_name": "STANDAR",
                "payment_type": "ota_collect",
                "payment_type_raw": "OTA Collect",
                "payment_collect_type": "ota-collect",
                "status": "confirmed",
                "status_raw": "Confirmed",
                "sync_status": false,
                "already_inbooking": false,
                "currency": "IDR",
                "total_amount": "500000.00",
                "commission": "75000.00",
                "net_amount": "425000.00",
                "booked_at": "2026-04-01",
                "created_at": "2026-04-20T10:00:00.000000Z",
                "updated_at": "2026-04-20T10:00:00.000000Z"
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 4,
            "total_item": 118,
            "total_item_current_page": 30
        }
    }
}
 

Example response (400):


{
    "message": "Invalid request data.",
    "data": {}
}
 

Example response (500):


{
    "message": "Something went wrong. Please try again.",
    "data": []
}
 

Request   

POST api/v1/property/future-booking-imports/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

Property UUID. Example: cfc616bb-3145-4a98-bb6b-0efb5c8203ed

search   string  optional    

optional Keyword search (case-insensitive). Matches against guest name, booking ID, OTA name. Example: John

check_in_start_date   string  optional    

optional Check-in from (Y-m-d). Use together with check_in_end_date. Example: non

check_in_end_date   string  optional    

optional Check-in to (Y-m-d). Use together with check_in_start_date. Example: quidem

booking_id   string  optional    

optional Partial match on booking ID. Example: voluptas

guest_name   string  optional    

optional Partial match (case-insensitive) on guest name. Example: et

ota_name   string  optional    

optional Partial match (case-insensitive) on OTA name. Example: qui

import_batch   string  optional    

optional Filter by import batch ID. Example: est

source   string  optional    

optional Exact source key (e.g. agoda). Example: asperiores

status   string  optional    

optional Partial match (case-insensitive) on booking status. Example: eos

page_number   integer  optional    

optional Page number (minimum 1). If omitted, page 1 is used. Example: 17

per_page   integer  optional    

optional Results per page. Default: 30, max: 100. Example: 1

Future Booking Import Dropdown Options

Get dropdown options for future booking import mapping needs.

Example request:
curl --request POST \
    "http://localhost/api/v1/property/future-booking-imports/dropdown/guestexistingfind" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"rem\",
    \"query\": \"aspernatur\",
    \"arival_date\": \"aut\",
    \"depature_date\": \"sit\",
    \"room_type_id\": \"aut\",
    \"total_adult\": 10,
    \"total_child\": 19,
    \"findby\": \"name\",
    \"findvalue\": \"hic\"
}"
const url = new URL(
    "http://localhost/api/v1/property/future-booking-imports/dropdown/guestexistingfind"
);

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

let body = {
    "property_id": "rem",
    "query": "aspernatur",
    "arival_date": "aut",
    "depature_date": "sit",
    "room_type_id": "aut",
    "total_adult": 10,
    "total_child": 19,
    "findby": "name",
    "findvalue": "hic"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/future-booking-imports/dropdown/guestexistingfind';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'rem',
            'query' => 'aspernatur',
            'arival_date' => 'aut',
            'depature_date' => 'sit',
            'room_type_id' => 'aut',
            'total_adult' => 10,
            'total_child' => 19,
            'findby' => 'name',
            'findvalue' => 'hic',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/property/future-booking-imports/dropdown/{mode?}

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

URL Parameters

mode   string     

Dropdown mode. Example: guestexistingfind

Must be one of:
  • sources
  • agent
  • room
  • room_type
  • rate_plan
  • guestcountry
  • guestnationality
  • guestexistingfind

Body Parameters

property_id   string  optional    

optional Required for agent, room, room_type, rate_plan, and guestexistingfind modes. Property UUID. Example: rem

query   string  optional    

optional Search keyword for agent, room_type, and rate_plan. Example: aspernatur

arival_date   string  optional    

optional Required for room and rate_plan. Format: Y-m-d. Example: aut

depature_date   string  optional    

optional Required for room and rate_plan. Format: Y-m-d. Example: sit

room_type_id   string  optional    

optional Required for rate_plan. Room type UUID. Example: aut

total_adult   integer  optional    

optional Additional filter for rate_plan. Example: 10

total_child   integer  optional    

optional Additional filter for rate_plan. Example: 19

findby   string  optional    

optional Required for guestexistingfind. Example: name

Must be one of:
  • first_name
  • name
  • identityno
  • email
  • phone
findvalue   string  optional    

optional Required for guestexistingfind. Value to search by. Example: hic

Update SM Mapping (Bulk)

Update SM mapping fields on multiple future booking import records in one request. Each item must include an id. On each processed row, sync_status is reset to false and sync_response to null. All field changes are recorded in the change log.

Example request:
curl --request POST \
    "http://localhost/api/v1/property/future-booking-imports/mapping/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"updates\": [
        \"earum\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/property/future-booking-imports/mapping/update"
);

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

let body = {
    "updates": [
        "earum"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/future-booking-imports/mapping/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'updates' => [
                'earum',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Mapping updated successfully.",
    "data": {
        "updated": 2,
        "not_found": 1,
        "results": [
            {
                "id": "550e8400-e29b-41d4-a716-446655440010",
                "status": "updated",
                "changes": [
                    {
                        "field": "sm_room_type_id",
                        "old_value": null,
                        "new_value": 5
                    }
                ]
            },
            {
                "id": "550e8400-e29b-41d4-a716-446655440011",
                "status": "no_change",
                "changes": []
            },
            {
                "id": "550e8400-e29b-41d4-a716-446655440099",
                "status": "not_found"
            }
        ]
    }
}
 

Example response (400):


{
    "message": "Invalid request data.",
    "data": {
        "updates": []
    }
}
 

Example response (500):


{
    "message": "Something went wrong. Please try again.",
    "data": []
}
 

Request   

POST api/v1/property/future-booking-imports/mapping/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

updates   string[]     

Array of objects, each with a uuid and one or more SM fields.

id   string     

UUID of the record. Example: 550e8400-e29b-41d4-a716-446655440000

sm_agent_id   string  optional    

optional UUID. Example: 550e8400-e29b-41d4-a716-446655440003

sm_room_type_id   string  optional    

optional UUID. Example: 550e8400-e29b-41d4-a716-446655440005

sm_room_id   string  optional    

optional UUID. Example: 550e8400-e29b-41d4-a716-446655440012

sm_rate_type_id   string  optional    

optional UUID. Example: 550e8400-e29b-41d4-a716-446655440002

sm_rate_plan_id   string  optional    

optional UUID. Example: 550e8400-e29b-41d4-a716-446655440007

sm_guest_id   string  optional    

optional UUID. Example: 550e8400-e29b-41d4-a716-446655440009

sm_country_id   string  optional    

optional UUID. Example: 550e8400-e29b-41d4-a716-446655440101

sm_nationality_id   string  optional    

optional UUID. Example: 550e8400-e29b-41d4-a716-446655440101

num_rooms   integer  optional    

optional Number of rooms. Minimum 1. Example: 2

total_amount   string  optional    

optional Numeric, up to 2 decimal places, >= 0. Example: 500000.00

commission   string  optional    

optional Numeric, up to 2 decimal places, >= 0. Example: 75000.00

net_amount   string  optional    

optional Numeric, up to 2 decimal places, >= 0. Example: 425000.00

deposit_amount   string  optional    

optional Numeric, up to 2 decimal places, >= 0. Example: `100000.00

Payload example:

{
  "updates": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "sm_agent_id": "550e8400-e29b-41d4-a716-446655440003",
      "sm_room_type_id": "550e8400-e29b-41d4-a716-446655440005",
      "sm_room_id": "550e8400-e29b-41d4-a716-446655440012",
      "sm_rate_type_id": "550e8400-e29b-41d4-a716-446655440002",
      "sm_rate_plan_id": "550e8400-e29b-41d4-a716-446655440007",
      "sm_guest_id": "550e8400-e29b-41d4-a716-446655440009",
      "sm_country_id": "550e8400-e29b-41d4-a716-446655440101",
      "sm_nationality_id": "550e8400-e29b-41d4-a716-446655440101",
      "num_rooms": 2,
      "total_amount": "500000.00",
      "commission": "75000.00",
      "net_amount": "425000.00",
      "deposit_amount": "100000.00"
    }
  ]
}

Sync Import data to Smartloka

Example request:
curl --request POST \
    "http://localhost/api/v1/property/future-booking-imports/syncdata" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"numquam\",
    \"future_booking_import_id\": [
        \"consectetur\"
    ],
    \"import_batch_id\": \"facere\"
}"
const url = new URL(
    "http://localhost/api/v1/property/future-booking-imports/syncdata"
);

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

let body = {
    "property_id": "numquam",
    "future_booking_import_id": [
        "consectetur"
    ],
    "import_batch_id": "facere"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/future-booking-imports/syncdata';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'numquam',
            'future_booking_import_id' => [
                'consectetur',
            ],
            'import_batch_id' => 'facere',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/property/future-booking-imports/syncdata

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: numquam

future_booking_import_id   string[]     

uuid of future booking import

import_batch_id   string  optional    

this batch id of import batch, this required if import by batch Example: facere

General Area

Area Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/area/details/3460f0b2-5fb5-3a71-ac65-be10b16aab96" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/area/details/3460f0b2-5fb5-3a71-ac65-be10b16aab96"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/area/details/3460f0b2-5fb5-3a71-ac65-be10b16aab96';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

GET api/v1/general/area/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Regions. Example: 3460f0b2-5fb5-3a71-ac65-be10b16aab96

Area Datatables

Example request:
curl --request POST \
    "http://localhost/api/v1/general/area/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/area/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/area/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/general/area/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Area

Example request:
curl --request POST \
    "http://localhost/api/v1/general/area" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"labore\",
    \"region_id\": \"\'********-****-****-****-************\'\",
    \"id\": \"\'********-****-****-****-************\'\"
}"
const url = new URL(
    "http://localhost/api/v1/general/area"
);

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

let body = {
    "name": "labore",
    "region_id": "'********-****-****-****-************'",
    "id": "'********-****-****-****-************'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/area';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'labore',
            'region_id' => '\'********-****-****-****-************\'',
            'id' => '\'********-****-****-****-************\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/general/area

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

name   string     

the name of Area. Example: labore

region_id   string     

the uuid of Region. Example: '********-****-****-****-************'

id   string  optional    

if need uuid for update name of Area. Example: '********-****-****-****-************'

Remove Area

Example request:
curl --request POST \
    "http://localhost/api/v1/general/area/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"modi\"
}"
const url = new URL(
    "http://localhost/api/v1/general/area/remove"
);

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

let body = {
    "id": "modi"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/area/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'modi',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Country",
    "data": []
}
 

Request   

POST api/v1/general/area/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Area Example: modi

General Country

Country Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/country/details/81cbdbdd-7433-3f0a-90a3-95921ba71df6" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/country/details/81cbdbdd-7433-3f0a-90a3-95921ba71df6"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/country/details/81cbdbdd-7433-3f0a-90a3-95921ba71df6';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"message":"Success get Feature Detail","data":{"id":"e1679215-52d3-49b2-b369-09e1496f759a","name":"System Features","category"{"id":"796b8a28-e184-49e8-be8c-19fe898e0439","name":"System Setup"}}}
 

Request   

GET api/v1/general/country/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Country. Example: 81cbdbdd-7433-3f0a-90a3-95921ba71df6

Country Datatable

Example request:
curl --request POST \
    "http://localhost/api/v1/general/country/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/country/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/country/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/general/country/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Country

Example request:
curl --request POST \
    "http://localhost/api/v1/general/country" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"et\",
    \"phonecode\": \"+62\",
    \"id\": \"\'********-****-****-****-************\'\"
}"
const url = new URL(
    "http://localhost/api/v1/general/country"
);

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

let body = {
    "name": "et",
    "phonecode": "+62",
    "id": "'********-****-****-****-************'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/country';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'et',
            'phonecode' => '+62',
            'id' => '\'********-****-****-****-************\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/general/country

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

name   string     

the name of country. Example: et

phonecode   string     

the name of country. Example: +62

id   string  optional    

if need uuid for update name of country. Example: '********-****-****-****-************'

Remove Country

Example request:
curl --request POST \
    "http://localhost/api/v1/general/country/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"et\"
}"
const url = new URL(
    "http://localhost/api/v1/general/country/remove"
);

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

let body = {
    "id": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/country/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'et',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Country",
    "data": []
}
 

Request   

POST api/v1/general/country/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Country Example: et

General Currency

Currency Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/currency/details/731d97b9-16cd-3e1a-b5b1-2ca7299c1b46" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/currency/details/731d97b9-16cd-3e1a-b5b1-2ca7299c1b46"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/currency/details/731d97b9-16cd-3e1a-b5b1-2ca7299c1b46';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Currency Detail",
    "data": {
        "id": "3a80ca6a-d642-4bc2-8d1e-652bf99b4ad9",
        "name": "Euro",
        "code": "EUR",
        "symbol": "€",
        "country": {
            "id": "8f42c620-ab87-440a-b146-dd4d477a4ac5",
            "name": "Andorra"
        }
    }
}
 

Request   

GET api/v1/general/currency/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Currency. Example: 731d97b9-16cd-3e1a-b5b1-2ca7299c1b46

Get Datatables Currency

Example request:
curl --request POST \
    "http://localhost/api/v1/general/currency/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/currency/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/currency/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 217,
    "recordsFiltered": 217,
    "data": [
        {
            "id": "d2cb66bd-8705-411d-9818-96795a7d971b",
            "name": "Afghan afghani",
            "code": "AFN",
            "symbol": "؋",
            "country_name": "Afghanistan"
        }
    ]
}
 

Request   

POST api/v1/general/currency/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Currency

Example request:
curl --request POST \
    "http://localhost/api/v1/general/currency" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"sint\",
    \"code\": \"et\",
    \"symbol\": \"ea\",
    \"country_id\": \"\'********-****-****-****-************\'\",
    \"id\": \"\'********-****-****-****-************\'\"
}"
const url = new URL(
    "http://localhost/api/v1/general/currency"
);

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

let body = {
    "name": "sint",
    "code": "et",
    "symbol": "ea",
    "country_id": "'********-****-****-****-************'",
    "id": "'********-****-****-****-************'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/currency';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'sint',
            'code' => 'et',
            'symbol' => 'ea',
            'country_id' => '\'********-****-****-****-************\'',
            'id' => '\'********-****-****-****-************\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Currency Detail",
    "data": {
        "id": "3a80ca6a-d642-4bc2-8d1e-652bf99b4ad9",
        "name": "Euro",
        "code": "EUR",
        "symbol": "€",
        "country": {
            "id": "8f42c620-ab87-440a-b146-dd4d477a4ac5",
            "name": "Andorra"
        }
    }
}
 

Request   

POST api/v1/general/currency

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

name   string     

the name of Currency. Example: sint

code   string     

the code of Currency. Example: et

symbol   string     

the symbol of Currency. Example: ea

country_id   string     

the uuid of country. Example: '********-****-****-****-************'

id   string  optional    

if need uuid for update name of region. Example: '********-****-****-****-************'

Remove Currency

Example request:
curl --request POST \
    "http://localhost/api/v1/general/currency/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"in\"
}"
const url = new URL(
    "http://localhost/api/v1/general/currency/remove"
);

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

let body = {
    "id": "in"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/currency/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'in',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Currency",
    "data": []
}
 

Request   

POST api/v1/general/currency/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Currency Example: in

General Language

Language Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/languages/details/b8d4a368-2572-3266-9f29-aecc9e572d9a" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/languages/details/b8d4a368-2572-3266-9f29-aecc9e572d9a"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/languages/details/b8d4a368-2572-3266-9f29-aecc9e572d9a';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

GET api/v1/general/languages/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Language. Example: b8d4a368-2572-3266-9f29-aecc9e572d9a

Languages Datatables

Example request:
curl --request POST \
    "http://localhost/api/v1/general/languages/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/languages/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/languages/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/general/languages/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Region

Example request:
curl --request POST \
    "http://localhost/api/v1/general/languages" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"aliquid\",
    \"id\": 12,
    \"remove\": \"true\"
}"
const url = new URL(
    "http://localhost/api/v1/general/languages"
);

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

let body = {
    "name": "aliquid",
    "id": 12,
    "remove": "true"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/languages';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'aliquid',
            'id' => 12,
            'remove' => 'true',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/general/languages

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

name   string     

the name of Languages. Example: aliquid

id   integer  optional    

if need id for update name of Languages. Example: 12

remove   bolean     

if want remove Languages. Example: true

Remove Language

Example request:
curl --request POST \
    "http://localhost/api/v1/general/languages/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"rerum\"
}"
const url = new URL(
    "http://localhost/api/v1/general/languages/remove"
);

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

let body = {
    "id": "rerum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/languages/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'rerum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Language",
    "data": []
}
 

Request   

POST api/v1/general/languages/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Language Example: rerum

General Region

Regions Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/region/details/b6678782-2415-3f8c-b586-b3d23b118dca" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/region/details/b6678782-2415-3f8c-b586-b3d23b118dca"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/region/details/b6678782-2415-3f8c-b586-b3d23b118dca';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"message":"Success get Feature Detail","data":{"id":"e1679215-52d3-49b2-b369-09e1496f759a","name":"System Features","category"{"id":"796b8a28-e184-49e8-be8c-19fe898e0439","name":"System Setup"}}}
 

Request   

GET api/v1/general/region/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Regions. Example: b6678782-2415-3f8c-b586-b3d23b118dca

Regions Datatables

Example request:
curl --request POST \
    "http://localhost/api/v1/general/region/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/region/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/region/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/general/region/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Region

Example request:
curl --request POST \
    "http://localhost/api/v1/general/region" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"veniam\",
    \"country_id\": \"\'********-****-****-****-************\'\",
    \"id\": \"\'********-****-****-****-************\'\"
}"
const url = new URL(
    "http://localhost/api/v1/general/region"
);

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

let body = {
    "name": "veniam",
    "country_id": "'********-****-****-****-************'",
    "id": "'********-****-****-****-************'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/region';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'veniam',
            'country_id' => '\'********-****-****-****-************\'',
            'id' => '\'********-****-****-****-************\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Region update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/general/region

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

name   string     

the name of Region. Example: veniam

country_id   string     

the uuid of country. Example: '********-****-****-****-************'

id   string  optional    

if need uuid for update name of region. Example: '********-****-****-****-************'

Remove Region

Example request:
curl --request POST \
    "http://localhost/api/v1/general/region/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"omnis\"
}"
const url = new URL(
    "http://localhost/api/v1/general/region/remove"
);

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

let body = {
    "id": "omnis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/region/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'omnis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Region",
    "data": []
}
 

Request   

POST api/v1/general/region/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Region Example: omnis

General Timezone

TimeZone Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/timezone/details/b425dbff-2817-38fd-823e-63b09dc9dde0" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/timezone/details/b425dbff-2817-38fd-823e-63b09dc9dde0"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/timezone/details/b425dbff-2817-38fd-823e-63b09dc9dde0';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Time Zone Detail",
    "data": {
        "id": "6a8d3106-a22e-4f63-a81f-e2464c9a1461",
        "name": "Africa/Algiers"
    }
}
 

Request   

GET api/v1/general/timezone/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of TimeZone. Example: b425dbff-2817-38fd-823e-63b09dc9dde0

Get Datatables Timezone

Example request:
curl --request POST \
    "http://localhost/api/v1/general/timezone/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/timezone/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/timezone/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 425,
    "recordsFiltered": 425,
    "data": [
        {
            "id": "59af78ff-d35f-40e4-8220-ff67af5d07a3",
            "name": "Africa/Abidjan"
        },
        {
            "id": "f311336a-f1ee-4c7b-9e1e-7d6e61c67e41",
            "name": "Africa/Accra"
        }
    ]
}
 

Request   

POST api/v1/general/timezone/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Timezone

Example request:
curl --request POST \
    "http://localhost/api/v1/general/timezone" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"nihil\",
    \"id\": \"\'********-****-****-****-************\'\"
}"
const url = new URL(
    "http://localhost/api/v1/general/timezone"
);

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

let body = {
    "name": "nihil",
    "id": "'********-****-****-****-************'"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/timezone';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'nihil',
            'id' => '\'********-****-****-****-************\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update Time Zone Data",
    "data": {
        "id": "fdc4a74b-f837-40e2-bd2a-435c7603c7f3",
        "name": "Asia/banyuwangi"
    }
}
 

Request   

POST api/v1/general/timezone

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

name   string     

the name of Timezone. Example: nihil

id   string  optional    

if need uuid for update name of Timezone. Example: '********-****-****-****-************'

Remove Timezone

Example request:
curl --request POST \
    "http://localhost/api/v1/general/timezone/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"quo\"
}"
const url = new URL(
    "http://localhost/api/v1/general/timezone/remove"
);

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

let body = {
    "id": "quo"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/general/timezone/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'quo',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Timezone",
    "data": []
}
 

Request   

POST api/v1/general/timezone/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Country Example: quo

Guest List Daily

Option Guest List Daily

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestdaily/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"est\",
    \"mode\": \"show_by\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestdaily/dropdownoptionlist"
);

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

let body = {
    "property_id": "est",
    "mode": "show_by"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestdaily/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'est',
            'mode' => 'show_by',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Type",
    "data": {
        "all": "All",
        "arival": "Arival",
        "in_house": "In House",
        "depature": "Depature"
    }
}
 

Request   

POST api/v1/property/guestdaily/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: est

mode   string  optional    

The language. Example: show_by

Must be one of:
  • list_type
  • show_by

Detail List

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestdaily/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"iusto\",
    \"days\": \"enim\",
    \"list_type\": \"source_list.\",
    \"show_by\": \"room_type.\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestdaily/list"
);

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

let body = {
    "property_id": "iusto",
    "days": "enim",
    "list_type": "source_list.",
    "show_by": "room_type."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestdaily/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'iusto',
            'days' => 'enim',
            'list_type' => 'source_list.',
            'show_by' => 'room_type.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Daily Found",
    "data": {
        "in_house": [
            {
                "room_type_name": "Standard",
                "list": [
                    {
                        "booking_id": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
                        "booking_room_id": "7a35bc8f-1403-4d8a-9c05-7191ed8445e7",
                        "booking_no": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
                        "guest": {
                            "name": "Mr. Takayuki Nomoto",
                            "id": "2da48c55-2688-443f-99b3-47ab29616604"
                        },
                        "country": {
                            "name": "Japan",
                            "id": "72a89d6b-78a8-4db9-b66c-3a16af183567"
                        },
                        "room_type": {
                            "name": "Standard",
                            "id": "a880635a-810f-4f9b-b39a-3f49387ec7d5"
                        },
                        "room": {
                            "name": "101",
                            "id": "e7541067-7551-4905-b13a-e7f026a06a48"
                        },
                        "agent": {
                            "name": "Walk In",
                            "id": "e41961d9-620e-4290-9497-64ece423e82c"
                        },
                        "arival": "2024-09-17",
                        "depature": "2024-09-19",
                        "adult": 2,
                        "child": 2,
                        "special_request": null,
                        "remark": null
                    }
                ]
            }
        ]
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/guestdaily/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: iusto

days   string  optional    

date of date report date format Y-m-d. Example: enim

list_type   string  optional    

required. Example: source_list.

Must be one of:
  • all
  • arival
  • in_house
  • depature
show_by   string  optional    

required. Example: room_type.

Must be one of:
  • room_type
  • booking

Print List

Example request:
curl --request GET \
    --get "http://localhost/api/v1/property/guestdaily/list/print/voluptatem" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"earum\",
    \"days\": \"velit\",
    \"list_type\": \"source_list.\",
    \"show_by\": \"room_type.\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestdaily/list/print/voluptatem"
);

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

let body = {
    "property_id": "earum",
    "days": "velit",
    "list_type": "source_list.",
    "show_by": "room_type."
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestdaily/list/print/voluptatem';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'earum',
            'days' => 'velit',
            'list_type' => 'source_list.',
            'show_by' => 'room_type.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Guest List Daily Found",
    "data": {
        "in_house": [
            {
                "room_type_name": "Standard",
                "list": [
                    {
                        "booking_id": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
                        "booking_room_id": "7a35bc8f-1403-4d8a-9c05-7191ed8445e7",
                        "booking_no": "c75fe791-ec00-4687-9a7d-34734e8b38bd",
                        "guest": {
                            "name": "Mr. Takayuki Nomoto",
                            "id": "2da48c55-2688-443f-99b3-47ab29616604"
                        },
                        "country": {
                            "name": "Japan",
                            "id": "72a89d6b-78a8-4db9-b66c-3a16af183567"
                        },
                        "room_type": {
                            "name": "Standard",
                            "id": "a880635a-810f-4f9b-b39a-3f49387ec7d5"
                        },
                        "room": {
                            "name": "101",
                            "id": "e7541067-7551-4905-b13a-e7f026a06a48"
                        },
                        "agent": {
                            "name": "Walk In",
                            "id": "e41961d9-620e-4290-9497-64ece423e82c"
                        },
                        "arival": "2024-09-17",
                        "depature": "2024-09-19",
                        "adult": 2,
                        "child": 2,
                        "special_request": null,
                        "remark": null
                    }
                ]
            }
        ]
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/property/guestdaily/list/print/{key}

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

URL Parameters

key   string     

Example: voluptatem

Body Parameters

property_id   string     

uuid of Property. Example: earum

days   string  optional    

date of date report date format Y-m-d. Example: velit

list_type   string  optional    

required. Example: source_list.

Must be one of:
  • all
  • arival
  • in_house
  • depature
show_by   string  optional    

required. Example: room_type.

Must be one of:
  • room_type
  • booking

Master Property Groups

Property Groups Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/property-groups/details/ebde9624-c414-32db-bb2e-fb9d6ace5fee" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property-groups/details/ebde9624-c414-32db-bb2e-fb9d6ace5fee"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property-groups/details/ebde9624-c414-32db-bb2e-fb9d6ace5fee';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Property Group Detail",
    "data": {
        "id": "c96fcd65-593a-4f6b-bc90-2f005f0e5652",
        "name": "Hotel Dummy Group"
    }
}
 

Request   

GET api/v1/master/property-groups/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Property Groups. Example: ebde9624-c414-32db-bb2e-fb9d6ace5fee

Miscellaneous Endpoint

Option Editor Input

Example request:
curl --request POST \
    "http://localhost/api/v1/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"parentcoa\"
}"
const url = new URL(
    "http://localhost/api/v1/dropdown/list"
);

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

let body = {
    "mode": "parentcoa"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'parentcoa',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: parentcoa

Must be one of:
  • property
  • property-group
  • country-name
  • region-name
  • area-name
  • currency
  • language
  • timezone
  • user-category
  • amenities-category

Nightautdit

Detail Data

Example request:
curl --request POST \
    "http://localhost/api/v1/property/nightaudit/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"accusantium\"
}"
const url = new URL(
    "http://localhost/api/v1/property/nightaudit/detail"
);

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

let body = {
    "property_id": "accusantium"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/nightaudit/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'accusantium',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get Room Rate Detail",
    "data": {
        "option": {
            "tax_and_service_list": [
                {
                    "label": "Room Rate Tax 11 and Service 10",
                    "key": "5d80d7db-f029-44b8-9864-44f3607e2417"
                }
            ],
            "rate_plan_list": [
                {
                    "key": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "label": "Room And Breakfast Rate",
                    "start_date": "2024-08-03",
                    "end_date": "2024-08-03",
                    "min_night": 1,
                    "max_night": 1,
                    "max_adult": 2,
                    "max_pax": 4,
                    "room_rate": 100000,
                    "extra_adult_rate": 0,
                    "extra_child_rate": 0,
                    "rate_plan_type": {
                        "id": "2ec584a2-18a8-46ec-ac5a-51597eae3055",
                        "name": "STANDAR"
                    },
                    "tax_and_service": {
                        "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                        "name": "Room Rate Tax 11 and Service 10"
                    },
                    "currency": {
                        "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                        "name": "Indonesian rupiah",
                        "code": "IDR",
                        "symbol": "Rp"
                    }
                }
            ]
        },
        "detail": {
            "booking_id": "20116992-4e7d-46d6-8688-3bda65b5b782",
            "booking_room_id": "8b8f158b-263e-4244-a9d3-444b65dbe512",
            "room_type_id": "a880635a-810f-4f9b-b39a-3f49387ec7d5",
            "room_id": "e7541067-7551-4905-b13a-e7f026a06a48",
            "arival": "2024-09-23",
            "depature": "2024-09-26",
            "rate_plan_default": {
                "id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                "name": "Room And Breakfast Rate"
            },
            "tax_and_service_default": {
                "id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                "name": "Room Rate Tax 11 and Service 10"
            },
            "rate_list": [
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-23",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-24",
                    "rate": 200000
                },
                {
                    "rate_plan_id": "97b6b6fa-f6d0-4d96-9ad2-86561c59b673",
                    "tax_and_service_id": "5d80d7db-f029-44b8-9864-44f3607e2417",
                    "rate_date": "2024-09-25",
                    "rate": 200000
                }
            ],
            "total_amount": 485995.07999999996,
            "total_service": 54545.46,
            "total_tax": 59459.46,
            "total_rate": 0,
            "currency": {
                "id": "75dd1475-858b-46b4-9d17-80b9d0640057",
                "name": "Indonesian rupiah",
                "code": "IDR",
                "symbol": "Rp"
            }
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/nightaudit/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: accusantium

Process Nightautdit

Example request:
curl --request POST \
    "http://localhost/api/v1/property/nightaudit/process" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ad\",
    \"nightaudit_process_date\": \"repellendus\",
    \"ignore_bill_outstanding\": \"id\"
}"
const url = new URL(
    "http://localhost/api/v1/property/nightaudit/process"
);

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

let body = {
    "property_id": "ad",
    "nightaudit_process_date": "repellendus",
    "ignore_bill_outstanding": "id"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/nightaudit/process';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ad',
            'nightaudit_process_date' => 'repellendus',
            'ignore_bill_outstanding' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Payment Option",
    "data": {
        "id": "d7b69ca5-9ee5-4edd-b3ec-0b7e9877cf1a",
        "name": "Cash"
    }
}
 

Request   

POST api/v1/property/nightaudit/process

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of booking Example: ad

nightaudit_process_date   string  optional    

add this value nightaudit date will process with format date Y-m-d. Exmp:2024-02-18 Example: repellendus

ignore_bill_outstanding   bolean  optional    

this value set if you want ignore outstanding bill Example: id

Nightautdit Backdate

Verify user identity for night audit backdate.

Example request:
curl --request POST \
    "http://localhost/api/v1/property/nightaudit/backdate/verify" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"debitis\",
    \"nightaudit_backdate\": \"ut\",
    \"password\": \"AmJ2KKy\"
}"
const url = new URL(
    "http://localhost/api/v1/property/nightaudit/backdate/verify"
);

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

let body = {
    "property_id": "debitis",
    "nightaudit_backdate": "ut",
    "password": "AmJ2KKy"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/nightaudit/backdate/verify';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'debitis',
            'nightaudit_backdate' => 'ut',
            'password' => 'AmJ2KKy',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/property/nightaudit/backdate/verify

Headers

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: debitis

nightaudit_backdate   string     

target backdate (Y-m-d). Example: ut

password   string     

Current user password. Example: AmJ2KKy

Recalculate night audit backdate.

Example request:
curl --request POST \
    "http://localhost/api/v1/property/nightaudit/backdate/recalculate" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"eum\",
    \"nightaudit_backdate\": \"natus\",
    \"password\": \"5s`5K34BgI#g\\\"\'<7\"
}"
const url = new URL(
    "http://localhost/api/v1/property/nightaudit/backdate/recalculate"
);

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

let body = {
    "property_id": "eum",
    "nightaudit_backdate": "natus",
    "password": "5s`5K34BgI#g\"'<7"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/nightaudit/backdate/recalculate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eum',
            'nightaudit_backdate' => 'natus',
            'password' => '5s`5K34BgI#g"\'<7',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=utf-8
access-control-allow-origin: *
 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-300 { --text-opacity: 1; color: #e2e8f0; color: rgba(226,232,240,var(--text-opacity)) }}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0" role="main">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <h1 class="px-4 text-lg dark:text-gray-300 text-gray-700 border-r border-gray-400 tracking-wider">
                        404                    </h1>

                    <div class="ml-4 text-lg dark:text-gray-300 text-gray-700 uppercase tracking-wider">
                        Not Found                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

 

Request   

POST api/v1/property/nightaudit/backdate/recalculate

Headers

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: eum

nightaudit_backdate   string     

target backdate (Y-m-d). Example: natus

password   string     

re-verify password. Example: 5s5K34BgI#g"'<7`

Payment Collect Type Setup

Payment Collect Type Details

Example request:
curl --request POST \
    "http://localhost/api/v1/master/payment-collect-type/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"payment_collect_type_id\": \"eius\"
}"
const url = new URL(
    "http://localhost/api/v1/master/payment-collect-type/detail"
);

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

let body = {
    "payment_collect_type_id": "eius"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/payment-collect-type/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'payment_collect_type_id' => 'eius',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Payment Collect Type detail",
    "data": {
        "id": "4ec7d72b-34c7-4390-9e78-71e0136221c8",
        "name": "Hotel Collect",
        "name_slug": "hotel-collect",
        "is_permanent": true
    }
}
 

Request   

POST api/v1/master/payment-collect-type/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

payment_collect_type_id   string     

uuid of Bill Type Example: eius

Datatables Payment Collect Type

Example request:
curl --request POST \
    "http://localhost/api/v1/master/payment-collect-type/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/payment-collect-type/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/payment-collect-type/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 4,
    "recordsFiltered": 4,
    "data": [
        {
            "id": "4ec7d72b-34c7-4390-9e78-71e0136221c8",
            "name": "Hotel Collect",
            "name_slug": "hotel-collect",
            "is_permanent": "Yes"
        },
        {
            "id": "9afb548f-77a9-4ad6-b528-651dfe856c6f",
            "name": "Channel Collect",
            "name_slug": "channel-collect",
            "is_permanent": "Yes"
        },
        {
            "id": "b89389e9-b007-437c-a45f-d24bdefa1276",
            "name": "Agent Collect",
            "name_slug": "agent-collect",
            "is_permanent": "Yes"
        },
        {
            "id": "273472fb-f27c-4b2a-8cf0-5d147946c2ff",
            "name": "Guest Collect",
            "name_slug": "guest-collect",
            "is_permanent": "Yes"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"payment_collect_types\" where \"payment_collect_types\".\"deleted_at\" is null",
            "bindings": [],
            "time": 1.13
        },
        {
            "query": "select * from \"payment_collect_types\" where \"payment_collect_types\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.2
        }
    ],
    "input": {
        "payment_collect_type_id": "4ec7d72b-34c7-4390-9e78-71e0136221c8"
    }
}
 

Request   

POST api/v1/master/payment-collect-type/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Payment Collect Type

Example request:
curl --request POST \
    "http://localhost/api/v1/master/payment-collect-type" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"et\",
    \"name\": \"excepturi\",
    \"is_permanent\": \"minima\"
}"
const url = new URL(
    "http://localhost/api/v1/master/payment-collect-type"
);

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

let body = {
    "id": "et",
    "name": "excepturi",
    "is_permanent": "minima"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/payment-collect-type';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'et',
            'name' => 'excepturi',
            'is_permanent' => 'minima',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room type",
    "data": {
        "id": "3696cda0-035d-4827-a406-c14e6fcdf264",
        "name": "Room Type baru",
        "description": "Room Type Baru Description",
        "position_order": 1,
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
        "amenities": [
            {
                "category_id": "37b32a73-0c29-4d5a-80bd-1717901d015e",
                "category_name": "Room Amenities",
                "amenities_list": [
                    {
                        "id": "78e7914b-21b5-4bdd-b461-2d3cd72b8f67",
                        "name": "Adapter",
                        "is_select": false
                    },
                    {
                        "id": "05300f15-884d-409e-a396-536929d3cbcf",
                        "name": "Air conditioning",
                        "is_select": true
                    },
                    {
                        "id": "a7d9dedc-cf0b-4d68-9a48-37e14461fdf4",
                        "name": "Air conditioning single room",
                        "is_select": false
                    },
                    {
                        "id": "fd1f09c8-0aca-4f66-b071-cc030a76b36b",
                        "name": "Balcony",
                        "is_select": true
                    },
                    {
                        "id": "dba356b4-5d41-4546-84cf-b08f6585f457",
                        "name": "Bathtub",
                        "is_select": false
                    },
                    {
                        "id": "252b28a2-6add-4a37-85c5-d22598b5e2a1",
                        "name": "Carpeted",
                        "is_select": false
                    },
                    {
                        "id": "f214eca9-262c-4307-979d-3e4bd8de39b4",
                        "name": "Childrens cribs",
                        "is_select": true
                    },
                    {
                        "id": "dc05d273-baec-48b0-acdf-559c39a35f61",
                        "name": "Cleaning products",
                        "is_select": false
                    },
                    {
                        "id": "404dd22a-26e0-4931-b3b2-99333f1e968e",
                        "name": "Clothes rack",
                        "is_select": false
                    },
                    {
                        "id": "3c23f5bb-59ee-4f48-b88a-be1d94681df6",
                        "name": "Desk",
                        "is_select": false
                    },
                    {
                        "id": "bc0c5784-2809-4904-b4e0-bab8b9e1e3d0",
                        "name": "Dryer",
                        "is_select": true
                    },
                    {
                        "id": "99fedee9-ecef-4875-81ce-2a4b9f16cd0a",
                        "name": "Drying rack for clothing",
                        "is_select": false
                    },
                    {
                        "id": "7a8eee4a-155a-4214-b105-68705f2e381b",
                        "name": "Electric blankets",
                        "is_select": false
                    },
                    {
                        "id": "b7757b5e-fa8e-465b-8c3e-f481ed0aba66",
                        "name": "Electric kettle",
                        "is_select": false
                    },
                    {
                        "id": "ce91b7d8-afa1-466d-bfd2-cbc01d107aa8",
                        "name": "Extra long beds (> 6.5 ft)",
                        "is_select": false
                    },
                    {
                        "id": "d0de7cd0-bf27-416f-9317-d65ede231d2f",
                        "name": "Fan",
                        "is_select": false
                    },
                    {
                        "id": "ef8e700d-34cd-46f3-ad83-e40192ff2a8f",
                        "name": "Feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "68d1483f-999a-4155-b2e4-86e0edf8c3ab",
                        "name": "Fireplace",
                        "is_select": false
                    },
                    {
                        "id": "9c1b1920-b3c0-4ce6-8e76-e9a41ceb3b28",
                        "name": "Flat-screen TV",
                        "is_select": false
                    },
                    {
                        "id": "206d34a2-716d-4f08-8895-b18a152c5c5c",
                        "name": "Fold-up bed",
                        "is_select": false
                    },
                    {
                        "id": "feb09933-4210-4e53-a083-60e0ff5f2076",
                        "name": "Hardwood or parquet floors",
                        "is_select": false
                    },
                    {
                        "id": "2d83428c-67f0-424c-b3cf-7b64c7bbde4d",
                        "name": "Heated pool",
                        "is_select": false
                    },
                    {
                        "id": "0e457b6c-27f9-4170-9174-ddcc4a44dbbc",
                        "name": "Heating",
                        "is_select": false
                    },
                    {
                        "id": "a91728b8-4c62-4644-bfc3-8673cdd06c5e",
                        "name": "Hot tub",
                        "is_select": false
                    },
                    {
                        "id": "96fc900e-041f-454c-9aae-45dd06b9a142",
                        "name": "Hypoallergenic",
                        "is_select": false
                    },
                    {
                        "id": "daeea86a-79c0-45b8-81a7-e76333134b3d",
                        "name": "Hypoallergenic pillow",
                        "is_select": false
                    },
                    {
                        "id": "9f577ec2-34e9-4d5c-87df-868bb8ffae4d",
                        "name": "Infinity Pool",
                        "is_select": false
                    },
                    {
                        "id": "0897bc60-47b1-46dd-a822-2bcaeb07d8e8",
                        "name": "Interconnecting rooms",
                        "is_select": false
                    },
                    {
                        "id": "a662f19e-419c-41a9-a0a0-b0c2f00f24dd",
                        "name": "Iron",
                        "is_select": false
                    },
                    {
                        "id": "46a2ee4a-c711-4dd2-a99d-ce6c6ebf3a31",
                        "name": "Ironing facilities",
                        "is_select": false
                    },
                    {
                        "id": "6107ec89-e45a-43f5-ac25-598f20535951",
                        "name": "Mosquito net",
                        "is_select": false
                    },
                    {
                        "id": "1818a164-cfd0-435a-8398-f7ddc11401f4",
                        "name": "Non-feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "1ca6771c-37ae-4ff6-84d0-4277f27365b0",
                        "name": "Pajamas",
                        "is_select": false
                    },
                    {
                        "id": "3e611ae2-edf5-4473-ae7b-c6ab2d6ce946",
                        "name": "Plunge Pool",
                        "is_select": false
                    },
                    {
                        "id": "a13e0b46-0d5e-4503-bc11-af25b568609a",
                        "name": "Pool cover",
                        "is_select": false
                    },
                    {
                        "id": "86854195-b984-415f-925e-bee9172388dc",
                        "name": "Pool towels",
                        "is_select": false
                    },
                    {
                        "id": "b5687b9d-65b2-4d1a-aa22-b2ef72a26685",
                        "name": "Pool with a view",
                        "is_select": false
                    },
                    {
                        "id": "bc8c3d71-115f-45ff-8d98-6d6c7c1ad6b7",
                        "name": "Private pool",
                        "is_select": false
                    },
                    {
                        "id": "7ba1a081-d56b-4608-9d2e-1110fa4cd601",
                        "name": "Rooftop pool",
                        "is_select": false
                    },
                    {
                        "id": "b808b875-492d-458d-a6bc-720372622767",
                        "name": "Safe",
                        "is_select": false
                    },
                    {
                        "id": "d990b235-5121-4b63-ad8c-5ee1721196b4",
                        "name": "Saltwater pool",
                        "is_select": false
                    },
                    {
                        "id": "b38466d0-9e59-4736-8204-0b01d379faa0",
                        "name": "Shallow end",
                        "is_select": false
                    },
                    {
                        "id": "bc33df3d-9f0f-425b-a0df-46ab53e7aa83",
                        "name": "Sitting area",
                        "is_select": false
                    },
                    {
                        "id": "441d79fb-82a4-458a-8bd2-8f91f40f5e2b",
                        "name": "Socket near the bed",
                        "is_select": false
                    },
                    {
                        "id": "30d5b8ec-8f2e-4fc6-899a-5714a9d7be63",
                        "name": "Sofa",
                        "is_select": false
                    },
                    {
                        "id": "06b027ce-138e-4f61-bc25-10165e24cbfd",
                        "name": "Sofa bed",
                        "is_select": false
                    },
                    {
                        "id": "f2d7c256-4b44-48bf-a2a0-04917f773784",
                        "name": "Soundproof",
                        "is_select": false
                    },
                    {
                        "id": "f39be007-f9d0-413a-9434-335578838ac8",
                        "name": "Suit press",
                        "is_select": false
                    },
                    {
                        "id": "892e321b-5422-48d7-8c1d-950486a1ea57",
                        "name": "Tile/Marble floor",
                        "is_select": false
                    },
                    {
                        "id": "7bdbc02c-4cf0-487a-9faa-bbe25447795a",
                        "name": "Toilet paper",
                        "is_select": false
                    },
                    {
                        "id": "5f84000a-c63d-4234-93c7-dcf36434b1ff",
                        "name": "Towels",
                        "is_select": false
                    },
                    {
                        "id": "b8937943-2b2c-4818-8943-cea8f0754fe6",
                        "name": "Trash cans",
                        "is_select": false
                    },
                    {
                        "id": "26ad03ba-c55c-489a-a550-92f19982df53",
                        "name": "View",
                        "is_select": false
                    },
                    {
                        "id": "ec55c805-84d8-4457-b5b8-fec22adf8ec6",
                        "name": "Walk-in closet",
                        "is_select": false
                    },
                    {
                        "id": "8d560293-82fd-4135-99df-761aa540dbb7",
                        "name": "Wardrobe or closet",
                        "is_select": false
                    },
                    {
                        "id": "b0d7bf28-75d2-4f0a-8ad9-baabe2e50608",
                        "name": "Washing machine",
                        "is_select": false
                    },
                    {
                        "id": "17d5df9c-0bb9-4390-8177-9dc05b0ea92c",
                        "name": "Yukata",
                        "is_select": false
                    },
                    {
                        "id": "336a2aa5-fb92-432e-9d15-496f0638fd60",
                        "name": "Air purifiers",
                        "is_select": false
                    },
                    {
                        "id": "f822da69-c6d3-439d-aab2-58c28e09dc39",
                        "name": "Hand sanitizer",
                        "is_select": false
                    },
                    {
                        "id": "932710b6-8c27-4184-b3b3-7df86e2fb36f",
                        "name": "Bolsters",
                        "is_select": false
                    }
                ]
            }
        ]
    }
}
 

Request   

POST api/v1/master/payment-collect-type

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Payment Collect Type id please not set param if you want create new Payment Collect Type Example: et

name   string     

Name of Payment Collect Type Example: excepturi

is_permanent   bolean     

set true if Payment Collect Type permanent can't update or edit Example: minima

Remove Payment Collect Type

Example request:
curl --request POST \
    "http://localhost/api/v1/master/payment-collect-type/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"soluta\"
}"
const url = new URL(
    "http://localhost/api/v1/master/payment-collect-type/remove"
);

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

let body = {
    "id": "soluta"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/payment-collect-type/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'soluta',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Room Type",
    "data": []
}
 

Request   

POST api/v1/master/payment-collect-type/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Bill Type Example: soluta

Payment Recive List

Detail List

Example request:
curl --request POST \
    "http://localhost/api/v1/property/paymentreceive/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"excepturi\",
    \"start_date\": \"in\",
    \"end_date\": \"repellendus\",
    \"payment_option_id\": \"est\",
    \"created_by_id\": \"accusantium\"
}"
const url = new URL(
    "http://localhost/api/v1/property/paymentreceive/list"
);

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

let body = {
    "property_id": "excepturi",
    "start_date": "in",
    "end_date": "repellendus",
    "payment_option_id": "est",
    "created_by_id": "accusantium"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/paymentreceive/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'excepturi',
            'start_date' => 'in',
            'end_date' => 'repellendus',
            'payment_option_id' => 'est',
            'created_by_id' => 'accusantium',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Payment Receive List Found",
    "data": {
        "currency": {
            "name": "Indonesian rupiah",
            "code": "IDR",
            "symbol": "Rp"
        },
        "list": [
            {
                "payment_id": "e0de0fbd-e21c-4c0c-bb5b-da270a799270",
                "booking_id": "1ac58f56-1d2b-4020-8e3f-e7bba4c087a4",
                "booking_no": "20241107/HOTELDUMMY/0000000001",
                "booking_room_id": "b010c436-0833-43ca-857f-0ef395f9832a",
                "room_type": {
                    "id": "7736ad22-7de4-428d-8a8b-092e4cf87464",
                    "name": "Standard"
                },
                "room": {
                    "id": "f7876405-f036-4a9b-84ab-35689f2b9581",
                    "name": "101"
                },
                "guest": {
                    "id": "5f86d74d-89e3-454e-b541-fa4c87f540f7",
                    "name": "Mr. Agus Bawa I Nyoman"
                },
                "payment_date": "2024-11-08 10:38:23",
                "amount": 100000,
                "remark": "-",
                "payment_option": {
                    "id": "bcd4e196-88da-4e24-a5fa-ec94c6666b31",
                    "name": "Cash"
                },
                "coa": {
                    "id": "f9cd7c38-f694-4f5e-8a8a-b9ca92ded38c",
                    "code": "110-10-004",
                    "name": "House Bank Front Money Changer"
                },
                "payment_method_list": {
                    "list": [
                        {
                            "payment_option": {
                                "id": "bcd4e196-88da-4e24-a5fa-ec94c6666b31",
                                "name": "Cash"
                            },
                            "payment_option_methods": {
                                "id": "8fa223d1-0864-49c4-804a-84311468da6a",
                                "name": "Front Office Cash Clearance"
                            },
                            "coa": {
                                "id": "c59a97c4-ccbf-4a82-9eef-edbb89065280",
                                "code": "110-30-001",
                                "name": "F/O Cash Clearance"
                            },
                            "amount": 100000
                        }
                    ],
                    "total_amount": 100000
                },
                "bill_list": [
                    {
                        "bill_id": "1e4da49d-ee53-45cb-b87e-7e16dafb7094",
                        "bill_type": {
                            "id": "ede0a0bc-f1f9-489e-bb87-cd305ffdd0cb",
                            "name": "Room Charge"
                        },
                        "rate_plan": {
                            "id": "f196d387-9527-485c-8fc2-467e3fbfe289",
                            "name": "Room And Breakfast Rate"
                        },
                        "tax_and_service": {
                            "id": "a55185c0-de35-496f-b47e-5798b02bbbff",
                            "calculation_type": "INCLUDE",
                            "name": "Room Rate Tax 11 and Service 10",
                            "tax_percent": "11",
                            "service_percent": "10"
                        },
                        "bill_date": "2024-11-07",
                        "amount": 80999.18,
                        "tax_amount": 9909.91,
                        "service_amount": 9090.91,
                        "total": 100000
                    }
                ],
                "created_by": "Master User Api",
                "updated_by": null
            }
        ],
        "summary": {
            "total": 100000,
            "payment_option": [
                {
                    "name": "Cash - Front Office Cash Clearance",
                    "qty": 1,
                    "amount": 100000
                }
            ],
            "payment_option_total": 100000,
            "payment_option_total_qty": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/paymentreceive/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: excepturi

start_date   string  optional    

start date of date receive payment date format Y-m-d. Example: in

end_date   string  optional    

end date of date receive payment date format Y-m-d. Example: repellendus

payment_option_id   string     

uuid of payment_option add this parameter if want for spesification method. Example: est

created_by_id   string     

uuid of user add this parameter if want for payment created by. Example: accusantium

Option Payment Receive

Example request:
curl --request POST \
    "http://localhost/api/v1/property/paymentreceive/dropdownoptionlist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"odio\",
    \"mode\": \"roomavailable\"
}"
const url = new URL(
    "http://localhost/api/v1/property/paymentreceive/dropdownoptionlist"
);

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

let body = {
    "property_id": "odio",
    "mode": "roomavailable"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/paymentreceive/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'odio',
            'mode' => 'roomavailable',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List user Created",
    "data": [
        {
            "key": "0ad093e6-3587-4257-a118-0d6265d3347c",
            "label": "Master User Api"
        }
    ]
}
 

Request   

POST api/v1/property/paymentreceive/dropdownoptionlist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: odio

mode   string  optional    

The language. Example: roomavailable

Must be one of:
  • payment_option
  • user_receive

Property Agent

Update Agent Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/agent" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: multipart/form-data" \
    --form "id=voluptatem"\
    --form "property_id=unde"\
    --form "agent_source_id=nostrum"\
    --form "name=eveniet"\
    --form "address=quidem"\
    --form "phone=eos"\
    --form "[email protected]"\
    --form "website=eius"\
    --form "bg_color=#000000"\
    --form "fg_color=#ffffff"\
    --form "ar_coa_id=dolores"\
    --form "ap_coa_id=esse"\
    --form "logo_path=@C:\Users\agusb\AppData\Local\Temp\php9634.tmp" \
    --form "icon_path=@C:\Users\agusb\AppData\Local\Temp\php9635.tmp" 
const url = new URL(
    "http://localhost/api/v1/property/agent"
);

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

const body = new FormData();
body.append('id', 'voluptatem');
body.append('property_id', 'unde');
body.append('agent_source_id', 'nostrum');
body.append('name', 'eveniet');
body.append('address', 'quidem');
body.append('phone', 'eos');
body.append('email', '[email protected]');
body.append('website', 'eius');
body.append('bg_color', '#000000');
body.append('fg_color', '#ffffff');
body.append('ar_coa_id', 'dolores');
body.append('ap_coa_id', 'esse');
body.append('logo_path', document.querySelector('input[name="logo_path"]').files[0]);
body.append('icon_path', document.querySelector('input[name="icon_path"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/agent';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'multipart/form-data',
        ],
        'multipart' => [
            [
                'name' => 'id',
                'contents' => 'voluptatem'
            ],
            [
                'name' => 'property_id',
                'contents' => 'unde'
            ],
            [
                'name' => 'agent_source_id',
                'contents' => 'nostrum'
            ],
            [
                'name' => 'name',
                'contents' => 'eveniet'
            ],
            [
                'name' => 'address',
                'contents' => 'quidem'
            ],
            [
                'name' => 'phone',
                'contents' => 'eos'
            ],
            [
                'name' => 'email',
                'contents' => '[email protected]'
            ],
            [
                'name' => 'website',
                'contents' => 'eius'
            ],
            [
                'name' => 'bg_color',
                'contents' => '#000000'
            ],
            [
                'name' => 'fg_color',
                'contents' => '#ffffff'
            ],
            [
                'name' => 'ar_coa_id',
                'contents' => 'dolores'
            ],
            [
                'name' => 'ap_coa_id',
                'contents' => 'esse'
            ],
            [
                'name' => 'logo_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php9634.tmp', 'r')
            ],
            [
                'name' => 'icon_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php9635.tmp', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Agent Property",
    "data": {
        "id": "4aaf11d1-8008-48a9-a339-e76c0b8a55f6",
        "property": {
            "id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "name": "Hotel Dummy"
        },
        "agent_source_id": {
            "id": "2dae9823-80cc-4dac-aace-505cf5e406ea",
            "name": "Direct"
        },
        "name": "Property Agent Data update",
        "address": "Jl. Raya Andong.",
        "phone": "+6281805410047",
        "email": "[email protected]",
        "website": "www.agentdata.com",
        "logo_path": "https://lokaroom-api.lc/cdn/asset/83d515e0-626b-4c24-bae1-ba316ad9c8b1",
        "icon_path": "https://lokaroom-api.lc/cdn/asset/fc62dd9a-bb01-4681-aff7-8b4f67972580",
        "bg_color": "#000000",
        "fg_color": "#ffffff",
        "ar_coa": {
            "id": "a1b2c3d4-0000-0000-0000-000000000001",
            "code": "1100",
            "name": "Accounts Receivable"
        },
        "ap_coa": {
            "id": "a1b2c3d4-0000-0000-0000-000000000002",
            "code": "2100",
            "name": "Accounts Payable"
        }
    }
}
 

Request   

POST api/v1/property/agent

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: multipart/form-data

Body Parameters

id   string  optional    

uuid of Property Agent (required for update, omit for create). Example: voluptatem

property_id   string     

uuid of Property. Example: unde

agent_source_id   string     

uuid of Agent Source. Example: nostrum

name   string     

Name of Agent. Example: eveniet

address   string  optional    

Address of Agent. Example: quidem

phone   string  optional    

Phone of Agent. Example: eos

email   string  optional    

E-mail of Agent. Example: [email protected]

website   string  optional    

Website of Agent. Example: eius

logo_path   file  optional    

Logo image. Must be PNG, dimension 1350x750, max 1MB. Example: C:\Users\agusb\AppData\Local\Temp\php9634.tmp

icon_path   file  optional    

Icon image. Must be PNG, ratio 1:1, max 512KB. Example: C:\Users\agusb\AppData\Local\Temp\php9635.tmp

bg_color   string  optional    

Background color in hex format. Example: #000000

fg_color   string  optional    

Foreground color in hex format. Example: #ffffff

ar_coa_id   string  optional    

uuid of Chart of Account for Accounts Receivable. Example: dolores

ap_coa_id   string  optional    

uuid of Chart of Account for Accounts Payable. Example: esse

Detail Agent Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/agent/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"magni\",
    \"agent_id\": \"quia\"
}"
const url = new URL(
    "http://localhost/api/v1/property/agent/detail"
);

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

let body = {
    "property_id": "magni",
    "agent_id": "quia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/agent/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'magni',
            'agent_id' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Property Agent detail",
    "data": {
        "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
        "property": {
            "id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "name": "Hotel Dummy"
        },
        "agent_source_id": {
            "id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In"
        },
        "name": "Walk In",
        "address": "Jl. Raya Andong.",
        "phone": "+6281805410047",
        "email": "[email protected]",
        "website": "www.agentdata.com",
        "logo_path": "https://lokaroom-api.lc/cdn/asset/83d515e0-626b-4c24-bae1-ba316ad9c8b1",
        "icon_path": "https://lokaroom-api.lc/cdn/asset/fc62dd9a-bb01-4681-aff7-8b4f67972580",
        "bg_color": "#000000",
        "fg_color": "#ffffff",
        "ar_coa": {
            "id": "a1b2c3d4-0000-0000-0000-000000000001",
            "code": "1100",
            "name": "Accounts Receivable"
        },
        "ap_coa": {
            "id": "a1b2c3d4-0000-0000-0000-000000000002",
            "code": "2100",
            "name": "Accounts Payable"
        }
    }
}
 

Example response (400):


{
    "message": "Property Agent detail Not Found.",
    "data": []
}
 

Request   

POST api/v1/property/agent/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: magni

agent_id   string     

uuid of Property Agent. Example: quia

Datatables Agent Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/agent/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"non\"
}"
const url = new URL(
    "http://localhost/api/v1/property/agent/datatables"
);

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

let body = {
    "property_id": "non"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/agent/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'non',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/property/agent/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: non

Remove Agent Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/agent/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"deserunt\"
}"
const url = new URL(
    "http://localhost/api/v1/property/agent/remove"
);

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

let body = {
    "id": "deserunt"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/agent/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'deserunt',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Property Agent",
    "data": []
}
 

Request   

POST api/v1/property/agent/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Agent Property Example: deserunt

Option Agent Input

Example request:
curl --request POST \
    "http://localhost/api/v1/property/agent/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"sunt\",
    \"mode\": \"source_list\"
}"
const url = new URL(
    "http://localhost/api/v1/property/agent/dropdown/list"
);

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

let body = {
    "property_id": "sunt",
    "mode": "source_list"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/agent/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'sunt',
            'mode' => 'source_list',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/property/agent/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: sunt

mode   string  optional    

The language. Example: source_list

Must be one of:
  • source_list

Property Default Coa Mapping

List Default Coa Mapping

Example request:
curl --request POST \
    "http://localhost/api/v1/property/defaultcoamaping/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"aut\"
}"
const url = new URL(
    "http://localhost/api/v1/property/defaultcoamaping/list"
);

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

let body = {
    "property_id": "aut"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/defaultcoamaping/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'aut',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get list Coa",
    "data": {
        "id": "151f85bf-cb51-4aab-985c-8d451dcd901c",
        "name": "Room Rate Tax 11 and Service 10",
        "tax": "11",
        "service": "10",
        "use_service": true,
        "tax_coa": {
            "id": "563770be-ecf2-4f77-a717-46fcb69e90e9",
            "name": "220-00-060 | Recontruction Tax - PB 1"
        },
        "service_coa": {
            "id": "639fdb54-d802-442b-a19e-3bd5af5507ea",
            "name": "250-00-010 | A/P - Service Charge"
        }
    }
}
 

Request   

POST api/v1/property/defaultcoamaping/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: aut

Option Input Default Coa Mapping

Example request:
curl --request POST \
    "http://localhost/api/v1/property/defaultcoamaping/dropdown" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"aut\",
    \"mode\": \"coa_list\",
    \"coa_search\": \"corrupti\"
}"
const url = new URL(
    "http://localhost/api/v1/property/defaultcoamaping/dropdown"
);

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

let body = {
    "property_id": "aut",
    "mode": "coa_list",
    "coa_search": "corrupti"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/defaultcoamaping/dropdown';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'aut',
            'mode' => 'coa_list',
            'coa_search' => 'corrupti',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Caclculation Type Founds",
    "data": [
        {
            "key": "INCLUDE",
            "label": "Include on Rate"
        },
        {
            "key": "EXCLUDE",
            "label": "Exclude on Rate"
        }
    ]
}
 

Request   

POST api/v1/property/defaultcoamaping/dropdown

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: aut

mode   string  optional    

The language. Example: coa_list

Must be one of:
  • coa_list
coa_search   string  optional    

name of Chart Account Example: corrupti

Update Default Coa Mapping

Example request:
curl --request POST \
    "http://localhost/api/v1/property/defaultcoamaping" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"illum\",
    \"property_products\": [
        {
            \"id\": \"a1ba606b-4310-47f8-b94b-fd24a6049ea9\",
            \"name\": \"Room Charges\",
            \"sell_coa\": {
                \"id\": null,
                \"name\": null
            },
            \"cost_coa\": {
                \"id\": null,
                \"name\": null
            }
        }
    ],
    \"tax_and_services\": [
        {
            \"id\": \"99f5c5f5-4bdd-449f-950c-15ec32322a7d\",
            \"name\": \"Room Rate Tax 11 and Service 10\",
            \"tax_coa\": {
                \"id\": \"b6dd834c-1943-4996-89fe-fe98bd236ea4\",
                \"name\": \"220-00-060 | Recontruction Tax - PB 1\"
            },
            \"service_coa\": {
                \"id\": \"d928815a-2d1e-460d-af3d-4876edaa0fca\",
                \"name\": \"250-00-010 | A\\/P - Service Charge\"
            }
        }
    ],
    \"payment_options\": [
        {
            \"id\": \"fe3c8133-fb8b-4af2-8ac8-d74669daa7c1\",
            \"name\": \"Cash\",
            \"coa\": {
                \"id\": \"3427bc54-e123-4b13-84fb-3b05952bdb40\",
                \"name\": \"110-10-020 | Cash In Transit\"
            },
            \"payment_option_methods\": [
                {
                    \"id\": \"51a8722c-3e73-4dd3-99b9-67c842f53940\",
                    \"name\": \"Front Office Cash Clearance\",
                    \"coa\": {
                        \"id\": \"379d278f-df9a-4ac3-940e-9d889fa5f160\",
                        \"name\": \"110-30-001 | F\\/O Cash Clearance\"
                    }
                },
                {
                    \"id\": \"9e0b1d18-ed6f-440c-8ccc-735a203e03fb\",
                    \"name\": \"Outlet Cash Clearance\",
                    \"coa\": {
                        \"id\": \"7c477ddf-3247-4e9f-8b23-71bc35c5c6ff\",
                        \"name\": \"110-30-002 | Outlet Cash Clearance\"
                    }
                }
            ]
        }
    ],
    \"discount_options\": [
        {
            \"id\": \"7d2d649a-ddfd-4058-b9a2-f1d086d80b0b\",
            \"title\": \"Test Discount data\",
            \"coa\": {
                \"id\": \"f2a27621-3161-4bf2-ba7f-c19f58fe08c3\",
                \"name\": \"00001-01 | test Booking Discount\"
            }
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/property/defaultcoamaping"
);

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

let body = {
    "property_id": "illum",
    "property_products": [
        {
            "id": "a1ba606b-4310-47f8-b94b-fd24a6049ea9",
            "name": "Room Charges",
            "sell_coa": {
                "id": null,
                "name": null
            },
            "cost_coa": {
                "id": null,
                "name": null
            }
        }
    ],
    "tax_and_services": [
        {
            "id": "99f5c5f5-4bdd-449f-950c-15ec32322a7d",
            "name": "Room Rate Tax 11 and Service 10",
            "tax_coa": {
                "id": "b6dd834c-1943-4996-89fe-fe98bd236ea4",
                "name": "220-00-060 | Recontruction Tax - PB 1"
            },
            "service_coa": {
                "id": "d928815a-2d1e-460d-af3d-4876edaa0fca",
                "name": "250-00-010 | A\/P - Service Charge"
            }
        }
    ],
    "payment_options": [
        {
            "id": "fe3c8133-fb8b-4af2-8ac8-d74669daa7c1",
            "name": "Cash",
            "coa": {
                "id": "3427bc54-e123-4b13-84fb-3b05952bdb40",
                "name": "110-10-020 | Cash In Transit"
            },
            "payment_option_methods": [
                {
                    "id": "51a8722c-3e73-4dd3-99b9-67c842f53940",
                    "name": "Front Office Cash Clearance",
                    "coa": {
                        "id": "379d278f-df9a-4ac3-940e-9d889fa5f160",
                        "name": "110-30-001 | F\/O Cash Clearance"
                    }
                },
                {
                    "id": "9e0b1d18-ed6f-440c-8ccc-735a203e03fb",
                    "name": "Outlet Cash Clearance",
                    "coa": {
                        "id": "7c477ddf-3247-4e9f-8b23-71bc35c5c6ff",
                        "name": "110-30-002 | Outlet Cash Clearance"
                    }
                }
            ]
        }
    ],
    "discount_options": [
        {
            "id": "7d2d649a-ddfd-4058-b9a2-f1d086d80b0b",
            "title": "Test Discount data",
            "coa": {
                "id": "f2a27621-3161-4bf2-ba7f-c19f58fe08c3",
                "name": "00001-01 | test Booking Discount"
            }
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/defaultcoamaping';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'illum',
            'property_products' => [
                [
                    'id' => 'a1ba606b-4310-47f8-b94b-fd24a6049ea9',
                    'name' => 'Room Charges',
                    'sell_coa' => [
                        'id' => null,
                        'name' => null,
                    ],
                    'cost_coa' => [
                        'id' => null,
                        'name' => null,
                    ],
                ],
            ],
            'tax_and_services' => [
                [
                    'id' => '99f5c5f5-4bdd-449f-950c-15ec32322a7d',
                    'name' => 'Room Rate Tax 11 and Service 10',
                    'tax_coa' => [
                        'id' => 'b6dd834c-1943-4996-89fe-fe98bd236ea4',
                        'name' => '220-00-060 | Recontruction Tax - PB 1',
                    ],
                    'service_coa' => [
                        'id' => 'd928815a-2d1e-460d-af3d-4876edaa0fca',
                        'name' => '250-00-010 | A/P - Service Charge',
                    ],
                ],
            ],
            'payment_options' => [
                [
                    'id' => 'fe3c8133-fb8b-4af2-8ac8-d74669daa7c1',
                    'name' => 'Cash',
                    'coa' => [
                        'id' => '3427bc54-e123-4b13-84fb-3b05952bdb40',
                        'name' => '110-10-020 | Cash In Transit',
                    ],
                    'payment_option_methods' => [
                        [
                            'id' => '51a8722c-3e73-4dd3-99b9-67c842f53940',
                            'name' => 'Front Office Cash Clearance',
                            'coa' => [
                                'id' => '379d278f-df9a-4ac3-940e-9d889fa5f160',
                                'name' => '110-30-001 | F/O Cash Clearance',
                            ],
                        ],
                        [
                            'id' => '9e0b1d18-ed6f-440c-8ccc-735a203e03fb',
                            'name' => 'Outlet Cash Clearance',
                            'coa' => [
                                'id' => '7c477ddf-3247-4e9f-8b23-71bc35c5c6ff',
                                'name' => '110-30-002 | Outlet Cash Clearance',
                            ],
                        ],
                    ],
                ],
            ],
            'discount_options' => [
                [
                    'id' => '7d2d649a-ddfd-4058-b9a2-f1d086d80b0b',
                    'title' => 'Test Discount data',
                    'coa' => [
                        'id' => 'f2a27621-3161-4bf2-ba7f-c19f58fe08c3',
                        'name' => '00001-01 | test Booking Discount',
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Tax and Service",
    "data": {
        "id": "ef9fd502-2b67-4ce2-a72c-2df489060659",
        "name": "tax and service test",
        "tax": "10",
        "service": "11",
        "use_service": true,
        "tax_coa": {
            "id": "6300fe91-d73e-49a2-a52a-59118078cf06",
            "name": "110-30-004 | FA Cash Clearnce"
        },
        "service_coa": {
            "id": "f57cfcf5-ef2f-4222-9476-f10f1822e0d5",
            "name": "120-00-007 | A/R JCB"
        }
    }
}
 

Request   

POST api/v1/property/defaultcoamaping

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: illum

property_products   object  optional    

list maping product

tax_and_services   object  optional    

list maping product

payment_options   object  optional    

list maping product

discount_options   object  optional    

list maping product

Property Department

Detail Department

Example request:
curl --request POST \
    "http://localhost/api/v1/property/department/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"necessitatibus\",
    \"department_id\": \"aspernatur\"
}"
const url = new URL(
    "http://localhost/api/v1/property/department/detail"
);

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

let body = {
    "property_id": "necessitatibus",
    "department_id": "aspernatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/department/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'necessitatibus',
            'department_id' => 'aspernatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room Bed Type detail",
    "data": {
        "id": "628af586-7e1e-438c-9f06-f32513ea0577",
        "name": "Twin",
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/department/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: necessitatibus

department_id   string     

uuid of Property Department Example: aspernatur

Datatables Department

Example request:
curl --request POST \
    "http://localhost/api/v1/property/department/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/department/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/department/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 3,
    "recordsFiltered": 3,
    "data": [
        {
            "id": "e9954628-6ab7-4a55-8605-590e4db0754a",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Single",
            "property_name": "Hotel Dummy"
        },
        {
            "id": "628af586-7e1e-438c-9f06-f32513ea0577",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Twin",
            "property_name": "Hotel Dummy"
        },
        {
            "id": "a9d33065-8207-4c52-9cfa-b69a9c7753b3",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Twin",
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"room_bed_types\" where \"property_id\" = ? and \"room_bed_types\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 2.01
        },
        {
            "query": "select * from \"room_bed_types\" where \"property_id\" = ? and \"room_bed_types\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 0.49
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.9
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.82
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.67
        }
    ],
    "input": {
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/department/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Department

Example request:
curl --request POST \
    "http://localhost/api/v1/property/department" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"veniam\",
    \"department_id\": \"neque\",
    \"department_name\": \"ut\"
}"
const url = new URL(
    "http://localhost/api/v1/property/department"
);

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

let body = {
    "property_id": "veniam",
    "department_id": "neque",
    "department_name": "ut"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/department';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'veniam',
            'department_id' => 'neque',
            'department_name' => 'ut',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/property/department

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: veniam

department_id   string     

uuid of Department Example: neque

department_name   string     

Name of Department Example: ut

Property Expense

Update Expense Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/expense-invoice" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"exp_invoice_id\": \"modi\",
    \"property_id\": \"necessitatibus\",
    \"supplier_id\": \"hic\",
    \"coa_id\": \"et\",
    \"trx_date\": \"architecto\",
    \"total_amount\": 19,
    \"total_discount\": 12,
    \"total_commision\": 6,
    \"exp_details\": null,
    \"exp_payments\": null
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/expense-invoice"
);

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

let body = {
    "exp_invoice_id": "modi",
    "property_id": "necessitatibus",
    "supplier_id": "hic",
    "coa_id": "et",
    "trx_date": "architecto",
    "total_amount": 19,
    "total_discount": 12,
    "total_commision": 6,
    "exp_details": null,
    "exp_payments": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/expense-invoice';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'exp_invoice_id' => 'modi',
            'property_id' => 'necessitatibus',
            'supplier_id' => 'hic',
            'coa_id' => 'et',
            'trx_date' => 'architecto',
            'total_amount' => 19,
            'total_discount' => 12,
            'total_commision' => 6,
            'exp_details' => null,
            'exp_payments' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Supplier Property",
    "data": {
        "id": "bbe093cb-9554-4d63-b91e-07ffc1a4caf8",
        "property": {
            "id": "ca301eec-832f-4154-99d7-7089a0ec941f",
            "name": "Hotel Dummy"
        },
        "supplier_no": "SUP-00002",
        "name": "Supplier Sayur",
        "address": "Jl Raya Umalas, kerobokan kelod, kuta utara, badung, bali",
        "phone": "081805410047",
        "email": "[email protected]",
        "website": "supplierdaging.com",
        "logo_path": null,
        "icon_path": null,
        "bg_color": "#000000",
        "fg_color": "#ffffff"
    }
}
 

Request   

POST api/v1/property/backoffice/expense-invoice

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

exp_invoice_id   string  optional    

uuid of Expense this parameter required if you want update expense Example: modi

property_id   string     

uuid of Property Example: necessitatibus

supplier_id   string     

uuid of Supplier Example: hic

coa_id   string     

uuid of Chart of Account Example: et

trx_date   string  optional    

add this value expense date with format date Y-m-d H:i:s. Exmp:2024-02-18 Example: architecto

total_amount   integer     

of expense amount Example: 19

total_discount   integer     

of expense amount Example: 12

total_commision   integer     

of expense amount Example: 6

exp_details   object[]  optional    

if have expense detail.

exp_payments   object[]  optional    

if have expense payment detail.

Remove Expense Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/expense-invoice/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"exp_invoice_id\": \"qui\",
    \"property_id\": \"voluptatem\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/expense-invoice/remove"
);

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

let body = {
    "exp_invoice_id": "qui",
    "property_id": "voluptatem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/expense-invoice/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'exp_invoice_id' => 'qui',
            'property_id' => 'voluptatem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Supplier Property",
    "data": {
        "id": "bbe093cb-9554-4d63-b91e-07ffc1a4caf8",
        "property": {
            "id": "ca301eec-832f-4154-99d7-7089a0ec941f",
            "name": "Hotel Dummy"
        },
        "supplier_no": "SUP-00002",
        "name": "Supplier Sayur",
        "address": "Jl Raya Umalas, kerobokan kelod, kuta utara, badung, bali",
        "phone": "081805410047",
        "email": "[email protected]",
        "website": "supplierdaging.com",
        "logo_path": null,
        "icon_path": null,
        "bg_color": "#000000",
        "fg_color": "#ffffff"
    }
}
 

Request   

POST api/v1/property/backoffice/expense-invoice/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

exp_invoice_id   string  optional    

uuid of Expense this parameter required if you want update expense Example: qui

property_id   string     

uuid of Property Example: voluptatem

Reconcile Expense Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/expense-invoice/close" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"exp_invoice_id\": \"veniam\",
    \"property_id\": \"sunt\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/expense-invoice/close"
);

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

let body = {
    "exp_invoice_id": "veniam",
    "property_id": "sunt"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/expense-invoice/close';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'exp_invoice_id' => 'veniam',
            'property_id' => 'sunt',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Supplier Property",
    "data": {
        "id": "bbe093cb-9554-4d63-b91e-07ffc1a4caf8",
        "property": {
            "id": "ca301eec-832f-4154-99d7-7089a0ec941f",
            "name": "Hotel Dummy"
        },
        "supplier_no": "SUP-00002",
        "name": "Supplier Sayur",
        "address": "Jl Raya Umalas, kerobokan kelod, kuta utara, badung, bali",
        "phone": "081805410047",
        "email": "[email protected]",
        "website": "supplierdaging.com",
        "logo_path": null,
        "icon_path": null,
        "bg_color": "#000000",
        "fg_color": "#ffffff"
    }
}
 

Request   

POST api/v1/property/backoffice/expense-invoice/close

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

exp_invoice_id   string  optional    

uuid of Expense this parameter required if you want update expense Example: veniam

property_id   string     

uuid of Property Example: sunt

Option Property Expense

Example request:
curl --request POST \
    "http://localhost/api/v1/property/backoffice/expense-invoice/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"coa\",
    \"property_id\": \"molestiae\",
    \"supplier_search\": \"ipsam\",
    \"coa_search\": \"nobis\",
    \"default_value\": \"at\",
    \"payment_option_id\": \"quaerat\",
    \"payment_option_search\": \"cum\",
    \"payment_method_search\": \"et\"
}"
const url = new URL(
    "http://localhost/api/v1/property/backoffice/expense-invoice/dropdown/list"
);

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

let body = {
    "mode": "coa",
    "property_id": "molestiae",
    "supplier_search": "ipsam",
    "coa_search": "nobis",
    "default_value": "at",
    "payment_option_id": "quaerat",
    "payment_option_search": "cum",
    "payment_method_search": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/backoffice/expense-invoice/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'coa',
            'property_id' => 'molestiae',
            'supplier_search' => 'ipsam',
            'coa_search' => 'nobis',
            'default_value' => 'at',
            'payment_option_id' => 'quaerat',
            'payment_option_search' => 'cum',
            'payment_method_search' => 'et',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart of Account Founds",
    "data": [
        {
            "key": null,
            "label": "1200 | ACCOUNT RECEIVABLE",
            "sub": [
                {
                    "key": "3c94c024-c6a6-4207-b091-d6fb893e8396",
                    "label": "--120-00-009 | A/R Other Credit Cards"
                }
            ]
        }
    ]
}
 

Request   

POST api/v1/property/backoffice/expense-invoice/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
  • supplier
property_id   string     

uuid of Room Type Example: molestiae

supplier_search   string     

supplier name Example: ipsam

coa_search   string     

name of coa finding Example: nobis

default_value   string     

name of coa default value Example: at

payment_option_id   string     

uuid of payment option Example: quaerat

payment_option_search   string     

name of Payment option Example: cum

payment_method_search   string     

name of Payment method Example: et

Property Groups

Property Groups Datatables

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property-groups/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property-groups/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property-groups/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 1,
    "recordsFiltered": 1,
    "data": [
        {
            "id": 1,
            "name": "Hotel Dummy Group"
        }
    ]
}
 

Request   

POST api/v1/master/property-groups/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Property Groups

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property-groups" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"occaecati\",
    \"name\": \"sunt\"
}"
const url = new URL(
    "http://localhost/api/v1/master/property-groups"
);

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

let body = {
    "id": "occaecati",
    "name": "sunt"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property-groups';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'occaecati',
            'name' => 'sunt',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update Property Groups",
    "data": {
        "id": "d495d56f-3db7-46c9-a468-e94153ad1a06",
        "name": "New Group Property"
    }
}
 

Request   

POST api/v1/master/property-groups

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Property Groups Example: occaecati

name   string     

Name of Amenities Example: sunt

Remove Property Groups

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property-groups/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"eaque\"
}"
const url = new URL(
    "http://localhost/api/v1/master/property-groups/remove"
);

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

let body = {
    "id": "eaque"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property-groups/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'eaque',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Property Groups",
    "data": []
}
 

Request   

POST api/v1/master/property-groups/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Country Example: eaque

Property Guest History

History Booking List by Guest

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/history/booking/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"aut\",
    \"guest_id\": \"sed\",
    \"page_number\": 1
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/history/booking/list"
);

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

let body = {
    "property_id": "aut",
    "guest_id": "sed",
    "page_number": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/history/booking/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'aut',
            'guest_id' => 'sed',
            'page_number' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get History Booking List",
    "data": {
        "item": [
            {
                "booking_id": "98ae7959-32bd-4626-9f80-a21a8942ac6c",
                "booking_room_id": "09256420-2049-4b52-974f-c9e1373cd214",
                "booking_no": "20240704/HOTELDUMMY/0000000001",
                "booking_reference": "Rai Bali Family Trip",
                "agent": "Walk In",
                "arrival": "2024-07-08",
                "departure": "2024-07-15",
                "booking_create": "2024-07-04 09:56:59",
                "guest_detail": {
                    "guest_id": "6dca87d1-bbe1-4255-9f54-df139399eb3a",
                    "guest_name": "Mrs. Ernawati Ni Luh"
                },
                "booking_status": {
                    "status_id": "1a2b3c",
                    "status_name": "Confirm"
                },
                "guest_status": {
                    "status_id": "4d5e6f",
                    "status_name": "No Status"
                },
                "room_type_name": "Junior Suite",
                "room_name": "207"
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/guestprofile/history/booking/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: aut

guest_id   string     

uuid of Property Guest Profile Example: sed

page_number   integer  optional    

page number for pagination. Example: 1

History Booking Special Request List by Guest

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/history/booking-special-request/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"eos\",
    \"guest_id\": \"vel\",
    \"page_number\": 1
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/history/booking-special-request/list"
);

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

let body = {
    "property_id": "eos",
    "guest_id": "vel",
    "page_number": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/history/booking-special-request/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eos',
            'guest_id' => 'vel',
            'page_number' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get History Special Request List",
    "data": {
        "item": [
            {
                "booking_id": "98ae7959-32bd-4626-9f80-a21a8942ac6c",
                "booking_room_id": "09256420-2049-4b52-974f-c9e1373cd214",
                "special_request": "Need extra pillow and late check-in",
                "user_created": "Master User Api",
                "updated_at": "2024-07-04 10:15:22"
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/guestprofile/history/booking-special-request/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: eos

guest_id   string     

uuid of Property Guest Profile Example: vel

page_number   integer  optional    

page number for pagination. Example: 1

History Room Stay Placed List by Guest

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/history/room-stay-placed/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"a\",
    \"guest_id\": \"quia\",
    \"page_number\": 1
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/history/room-stay-placed/list"
);

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

let body = {
    "property_id": "a",
    "guest_id": "quia",
    "page_number": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/history/room-stay-placed/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'a',
            'guest_id' => 'quia',
            'page_number' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get History Room Stay Placed List",
    "data": {
        "item": [
            {
                "booking_id": "98ae7959-32bd-4626-9f80-a21a8942ac6c",
                "booking_room_id": "09256420-2049-4b52-974f-c9e1373cd214",
                "checkin_date": "2024-07-08 14:00:00",
                "checkout_date": "2024-07-15 12:00:00",
                "room_type_name": "Junior Suite",
                "room_name": "207"
            }
        ],
        "pagination": {
            "current_page": 1,
            "total_page": 1,
            "total_item": 1,
            "total_item_current_page": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/guestprofile/history/room-stay-placed/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: a

guest_id   string     

uuid of Property Guest Profile Example: quia

page_number   integer  optional    

page number for pagination. Example: 1

Property Guest Profile

Datatables Guest Profile

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quam\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/datatables"
);

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

let body = {
    "property_id": "quam"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quam',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 9,
    "recordsFiltered": 9,
    "data": [
        {
            "id": "36db5f75-a1d3-4fa7-9aae-2d7588ce4079",
            "first_name": "Rai Octa Vioni",
            "last_name": "Ni Luh",
            "identity_no": "20234560000000",
            "email": "[email protected]",
            "phone": "+6281805410047",
            "address": "jl Raya Umalas 1, gg surya no 2 kerobokan kelod, kuta utara, badung bali",
            "guest_name": "Mrs. Rai Octa Vioni Ni Luh",
            "country_name": "Indonesia",
            "nationality_name": "Netherlands"
        }
    ],
    "input": {
        "property_id": "b8bc912c-ad4b-4419-8850-04347fd90c09"
    }
}
 

Request   

POST api/v1/property/guestprofile/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: quam

Get detail Guest Profile Data

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"nisi\",
    \"guest_id\": \"in\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/detail"
);

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

let body = {
    "property_id": "nisi",
    "guest_id": "in"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'nisi',
            'guest_id' => 'in',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/guestprofile/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: nisi

guest_id   string     

uuid of Property Guest Profile Example: in

Create Or Update

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/save" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"guest_id\": \"provident\",
    \"property_id\": \"qui\",
    \"guest_prefix_id\": \"autem\",
    \"first_name\": \"iure\",
    \"last_name\": \"rem\",
    \"country_id\": \"dolorem\",
    \"national_id\": \"aliquam\",
    \"identity_type_id\": \"eligendi\",
    \"identity_no\": \"quis\",
    \"email\": \"[email protected]\",
    \"phone\": \"sed\",
    \"address\": \"dolorem\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/save"
);

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

let body = {
    "guest_id": "provident",
    "property_id": "qui",
    "guest_prefix_id": "autem",
    "first_name": "iure",
    "last_name": "rem",
    "country_id": "dolorem",
    "national_id": "aliquam",
    "identity_type_id": "eligendi",
    "identity_no": "quis",
    "email": "[email protected]",
    "phone": "sed",
    "address": "dolorem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/save';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'guest_id' => 'provident',
            'property_id' => 'qui',
            'guest_prefix_id' => 'autem',
            'first_name' => 'iure',
            'last_name' => 'rem',
            'country_id' => 'dolorem',
            'national_id' => 'aliquam',
            'identity_type_id' => 'eligendi',
            'identity_no' => 'quis',
            'email' => '[email protected]',
            'phone' => 'sed',
            'address' => 'dolorem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "0090c2a3-79b6-4e8d-94d1-84fc01bc3eb9",
    "name": "New Country update",
    "phonecode": "+6200"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/guestprofile/save

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

guest_id   string     

uuid of Property Guest Profile this parameter just need if want update detail profile Example: provident

property_id   string     

uuid of Property Example: qui

guest_prefix_id   string     

uuid of Guest Prefix Example: autem

first_name   string     

First Name Of Guest Profile Example: iure

last_name   string     

Last Name Of Guest Profile Example: rem

country_id   string     

uuid of Country Example: dolorem

national_id   string     

uuid of National same use country data Example: aliquam

identity_type_id   string     

uuid of Guest Identity Type Example: eligendi

identity_no   string     

Identity Number Of Guest Profile Example: quis

email   string     

Email Of Guest Profile Example: [email protected]

phone   string     

Phone Of Guest Profile Example: sed

address   string     

Address Of Guest Profile Example: dolorem

Option Property Guest Input

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ut\",
    \"mode\": \"guestprefix\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/dropdown/list"
);

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

let body = {
    "property_id": "ut",
    "mode": "guestprefix"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ut',
            'mode' => 'guestprefix',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/property/guestprofile/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: ut

mode   string  optional    

The language. Example: guestprefix

Must be one of:
  • guestprefix
  • guestcountry
  • guestnationality
  • guestidentitytype

Duplicate Guest Profile

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/duplicate/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quis\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/duplicate/list"
);

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

let body = {
    "property_id": "quis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/duplicate/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Have Guest Profile Duplicate",
    "data": [
        {
            "main_profile": {
                "id": "f0c07a03-0e9c-4cf2-a362-a29ac4f28bbd",
                "guest_prefix": "Mrs.",
                "first_name": "Ernawati",
                "last_name": "Ni Luh",
                "country": null,
                "national": null,
                "identity_type": null,
                "identity_no": null,
                "email": null,
                "phone": null,
                "address": null
            },
            "duplicate_profile": [
                {
                    "id": "6dca87d1-bbe1-4255-9f54-df139399eb3a",
                    "guest_prefix": "Mrs.",
                    "first_name": "Ernawati",
                    "last_name": "Ni Luh",
                    "country": null,
                    "national": null,
                    "identity_type": null,
                    "identity_no": null,
                    "email": null,
                    "phone": null,
                    "address": null
                }
            ]
        }
    ]
}
 

Request   

POST api/v1/property/guestprofile/duplicate/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: quis

Duplicate Guest Merge

Example request:
curl --request POST \
    "http://localhost/api/v1/property/guestprofile/duplicate/merge" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"deleniti\",
    \"guest_id\": [
        []
    ]
}"
const url = new URL(
    "http://localhost/api/v1/property/guestprofile/duplicate/merge"
);

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

let body = {
    "property_id": "deleniti",
    "guest_id": [
        []
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/guestprofile/duplicate/merge';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'deleniti',
            'guest_id' => [
                [],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Merge Guest Profile",
    "data": []
}
 

Request   

POST api/v1/property/guestprofile/duplicate/merge

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: deleniti

guest_id   object[]     

uuid of Property Guest Profile

Property Night Audit Settings

Option Property Night Audit Settings

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/night-audit-setting/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"nemo\",
    \"mode\": \"detail\"
}"
const url = new URL(
    "http://localhost/api/v1/master/property/night-audit-setting/dropdown/list"
);

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

let body = {
    "property_id": "nemo",
    "mode": "detail"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/night-audit-setting/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'nemo',
            'mode' => 'detail',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart Of Account Template Options Founds",
    "data": [
        {
            "id": "6fe39895-7805-4e41-a241-f19b80ebf6f5",
            "name": "Full Chart Of Account"
        },
        {
            "id": "460a784a-e3d0-4fe1-b699-a55c52d03b69",
            "name": "Simple Chart Of Account"
        }
    ]
}
 

Request   

POST api/v1/master/property/night-audit-setting/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   uuid  optional    

string required id of Property id, if not set group please not set this parameter Example: nemo

mode   string  optional    

The property. Example: detail

Must be one of:
  • detail

Add / Update Property

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/night-audit-setting" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"pariatur\",
    \"is_auto\": true,
    \"run_time_schedule\": \"soluta\"
}"
const url = new URL(
    "http://localhost/api/v1/master/property/night-audit-setting"
);

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

let body = {
    "property_id": "pariatur",
    "is_auto": true,
    "run_time_schedule": "soluta"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/night-audit-setting';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'pariatur',
            'is_auto' => true,
            'run_time_schedule' => 'soluta',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Property",
    "data": {
        "id": "4ad856b3-a493-487d-88e7-7c9d67b378bb",
        "prefix_booking_code": "nagata-booking",
        "name": "Nagata Resort And Retreat",
        "address": "Jl Bisma 20010 tegallang ubud",
        "zip_code": "80361",
        "phone": "+6281805410047",
        "email_primary": "[email protected]",
        "logo_path": "https://lokaroom-api.lc/cdn/asset/e7b2f9d5-71d8-4cc0-9b43-afcf7a80751f",
        "website": "https://nagata.com",
        "longitude": "-8.6425998",
        "latitude": "115.1770584",
        "google_map_url": "https://maps.app.goo.gl/Nruid5SG9R1ekhwR9",
        "sosmed_facebook_url": "facebok",
        "sosmed_instagram_url": "instagram",
        "sosmed_youtube_url": "youtube",
        "sosmed_twitter_url": "twiter",
        "description": null,
        "property_group": {
            "id": "d0988d1d-a3d0-4494-807d-e9777345d4a4",
            "name": "Hotel Dummy Group"
        },
        "area": {
            "id": "5f8e34b9-0207-48b5-af11-1fc90e84d0e4",
            "area_name": "Aceh Selatan",
            "region_name": "Aceh",
            "country_name": "Indonesia"
        },
        "currency": {
            "id": "99ebc31c-bcec-42a3-940c-d586c20558c9",
            "name": "Afghan afghani"
        },
        "timezone": {
            "id": "461ce532-c63f-4ada-8a3b-4a6317b8bff1",
            "name": "Africa/Abidjan"
        }
    }
}
 

Request   

POST api/v1/master/property/night-audit-setting

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   uuid  optional    

string required id of Property id, if not set group please not set this parameter Example: pariatur

is_auto   boolean  optional    

if you want automatic run nightaudit please set this to true Example: true

run_time_schedule   string     

if set auto night audit true format time H:i:s Example: soluta

Property Product Category

Detail Product Category

Example request:
curl --request POST \
    "http://localhost/api/v1/property/product-category/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"exercitationem\",
    \"poduct_category_id\": \"ut\"
}"
const url = new URL(
    "http://localhost/api/v1/property/product-category/detail"
);

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

let body = {
    "property_id": "exercitationem",
    "poduct_category_id": "ut"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/product-category/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'exercitationem',
            'poduct_category_id' => 'ut',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room Bed Type detail",
    "data": {
        "id": "628af586-7e1e-438c-9f06-f32513ea0577",
        "name": "Twin",
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/product-category/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: exercitationem

poduct_category_id   string     

uuid of Property Product Category Example: ut

Datatables Product Category

Example request:
curl --request POST \
    "http://localhost/api/v1/property/product-category/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/product-category/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/product-category/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 3,
    "recordsFiltered": 3,
    "data": [
        {
            "id": "e9954628-6ab7-4a55-8605-590e4db0754a",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Single",
            "property_name": "Hotel Dummy"
        },
        {
            "id": "628af586-7e1e-438c-9f06-f32513ea0577",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Twin",
            "property_name": "Hotel Dummy"
        },
        {
            "id": "a9d33065-8207-4c52-9cfa-b69a9c7753b3",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Twin",
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"room_bed_types\" where \"property_id\" = ? and \"room_bed_types\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 2.01
        },
        {
            "query": "select * from \"room_bed_types\" where \"property_id\" = ? and \"room_bed_types\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 0.49
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.9
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.82
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.67
        }
    ],
    "input": {
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/product-category/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Product Category

Example request:
curl --request POST \
    "http://localhost/api/v1/property/product-category" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"eos\",
    \"product_category_id\": \"ex\",
    \"name\": \"et\"
}"
const url = new URL(
    "http://localhost/api/v1/property/product-category"
);

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

let body = {
    "property_id": "eos",
    "product_category_id": "ex",
    "name": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/product-category';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eos',
            'product_category_id' => 'ex',
            'name' => 'et',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/property/product-category

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: eos

product_category_id   string     

uuid of Product Category Example: ex

name   string     

Name of Product Category Example: et

Remove Product Category

Example request:
curl --request POST \
    "http://localhost/api/v1/property/product-category/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"product_category_id\": \"numquam\"
}"
const url = new URL(
    "http://localhost/api/v1/property/product-category/remove"
);

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

let body = {
    "product_category_id": "numquam"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/product-category/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'product_category_id' => 'numquam',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/property/product-category/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

product_category_id   string     

uuid of Property Product Category Example: numquam

Property Products

Detail Products

Example request:
curl --request POST \
    "http://localhost/api/v1/property/property-product/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"sunt\",
    \"product_id\": \"rem\"
}"
const url = new URL(
    "http://localhost/api/v1/property/property-product/detail"
);

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

let body = {
    "property_id": "sunt",
    "product_id": "rem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/property-product/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'sunt',
            'product_id' => 'rem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room Type detail",
    "data": {
        "id": "054cd951-626c-400d-8764-3f28e266d806",
        "name": "Standard Balcony",
        "description": "Standard Balcony Room",
        "position_order": 1,
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/property-product/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: sunt

product_id   string     

uuid of Property Room Status Example: rem

Datatables Products

Example request:
curl --request POST \
    "http://localhost/api/v1/property/property-product/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/property-product/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/property-product/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 5,
    "recordsFiltered": 5,
    "data": [
        {
            "id": "214310a1-f98b-4edb-9e55-5a1616875318",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Standard",
            "description": "Standar Room",
            "position_order": 1,
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/property-product/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Products

Example request:
curl --request POST \
    "http://localhost/api/v1/property/property-product" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"esse\",
    \"property_id\": \"nisi\",
    \"category_id\": \"iste\",
    \"department_id\": \"fuga\",
    \"sell_coa_id\": \"sint\",
    \"cost_coa_id\": \"quia\",
    \"name\": \"officiis\",
    \"remark\": \"nisi\",
    \"sell_amount\": 20,
    \"cost_amount\": 13,
    \"is_active\": \"et\"
}"
const url = new URL(
    "http://localhost/api/v1/property/property-product"
);

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

let body = {
    "id": "esse",
    "property_id": "nisi",
    "category_id": "iste",
    "department_id": "fuga",
    "sell_coa_id": "sint",
    "cost_coa_id": "quia",
    "name": "officiis",
    "remark": "nisi",
    "sell_amount": 20,
    "cost_amount": 13,
    "is_active": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/property-product';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'esse',
            'property_id' => 'nisi',
            'category_id' => 'iste',
            'department_id' => 'fuga',
            'sell_coa_id' => 'sint',
            'cost_coa_id' => 'quia',
            'name' => 'officiis',
            'remark' => 'nisi',
            'sell_amount' => 20,
            'cost_amount' => 13,
            'is_active' => 'et',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room type",
    "data": {
        "id": "3696cda0-035d-4827-a406-c14e6fcdf264",
        "name": "Room Type baru",
        "description": "Room Type Baru Description",
        "position_order": 1,
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
        "amenities": [
            {
                "category_id": "37b32a73-0c29-4d5a-80bd-1717901d015e",
                "category_name": "Room Amenities",
                "amenities_list": [
                    {
                        "id": "78e7914b-21b5-4bdd-b461-2d3cd72b8f67",
                        "name": "Adapter",
                        "is_select": false
                    },
                    {
                        "id": "05300f15-884d-409e-a396-536929d3cbcf",
                        "name": "Air conditioning",
                        "is_select": true
                    },
                    {
                        "id": "a7d9dedc-cf0b-4d68-9a48-37e14461fdf4",
                        "name": "Air conditioning single room",
                        "is_select": false
                    },
                    {
                        "id": "fd1f09c8-0aca-4f66-b071-cc030a76b36b",
                        "name": "Balcony",
                        "is_select": true
                    },
                    {
                        "id": "dba356b4-5d41-4546-84cf-b08f6585f457",
                        "name": "Bathtub",
                        "is_select": false
                    },
                    {
                        "id": "252b28a2-6add-4a37-85c5-d22598b5e2a1",
                        "name": "Carpeted",
                        "is_select": false
                    },
                    {
                        "id": "f214eca9-262c-4307-979d-3e4bd8de39b4",
                        "name": "Childrens cribs",
                        "is_select": true
                    },
                    {
                        "id": "dc05d273-baec-48b0-acdf-559c39a35f61",
                        "name": "Cleaning products",
                        "is_select": false
                    },
                    {
                        "id": "404dd22a-26e0-4931-b3b2-99333f1e968e",
                        "name": "Clothes rack",
                        "is_select": false
                    },
                    {
                        "id": "3c23f5bb-59ee-4f48-b88a-be1d94681df6",
                        "name": "Desk",
                        "is_select": false
                    },
                    {
                        "id": "bc0c5784-2809-4904-b4e0-bab8b9e1e3d0",
                        "name": "Dryer",
                        "is_select": true
                    },
                    {
                        "id": "99fedee9-ecef-4875-81ce-2a4b9f16cd0a",
                        "name": "Drying rack for clothing",
                        "is_select": false
                    },
                    {
                        "id": "7a8eee4a-155a-4214-b105-68705f2e381b",
                        "name": "Electric blankets",
                        "is_select": false
                    },
                    {
                        "id": "b7757b5e-fa8e-465b-8c3e-f481ed0aba66",
                        "name": "Electric kettle",
                        "is_select": false
                    },
                    {
                        "id": "ce91b7d8-afa1-466d-bfd2-cbc01d107aa8",
                        "name": "Extra long beds (> 6.5 ft)",
                        "is_select": false
                    },
                    {
                        "id": "d0de7cd0-bf27-416f-9317-d65ede231d2f",
                        "name": "Fan",
                        "is_select": false
                    },
                    {
                        "id": "ef8e700d-34cd-46f3-ad83-e40192ff2a8f",
                        "name": "Feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "68d1483f-999a-4155-b2e4-86e0edf8c3ab",
                        "name": "Fireplace",
                        "is_select": false
                    },
                    {
                        "id": "9c1b1920-b3c0-4ce6-8e76-e9a41ceb3b28",
                        "name": "Flat-screen TV",
                        "is_select": false
                    },
                    {
                        "id": "206d34a2-716d-4f08-8895-b18a152c5c5c",
                        "name": "Fold-up bed",
                        "is_select": false
                    },
                    {
                        "id": "feb09933-4210-4e53-a083-60e0ff5f2076",
                        "name": "Hardwood or parquet floors",
                        "is_select": false
                    },
                    {
                        "id": "2d83428c-67f0-424c-b3cf-7b64c7bbde4d",
                        "name": "Heated pool",
                        "is_select": false
                    },
                    {
                        "id": "0e457b6c-27f9-4170-9174-ddcc4a44dbbc",
                        "name": "Heating",
                        "is_select": false
                    },
                    {
                        "id": "a91728b8-4c62-4644-bfc3-8673cdd06c5e",
                        "name": "Hot tub",
                        "is_select": false
                    },
                    {
                        "id": "96fc900e-041f-454c-9aae-45dd06b9a142",
                        "name": "Hypoallergenic",
                        "is_select": false
                    },
                    {
                        "id": "daeea86a-79c0-45b8-81a7-e76333134b3d",
                        "name": "Hypoallergenic pillow",
                        "is_select": false
                    },
                    {
                        "id": "9f577ec2-34e9-4d5c-87df-868bb8ffae4d",
                        "name": "Infinity Pool",
                        "is_select": false
                    },
                    {
                        "id": "0897bc60-47b1-46dd-a822-2bcaeb07d8e8",
                        "name": "Interconnecting rooms",
                        "is_select": false
                    },
                    {
                        "id": "a662f19e-419c-41a9-a0a0-b0c2f00f24dd",
                        "name": "Iron",
                        "is_select": false
                    },
                    {
                        "id": "46a2ee4a-c711-4dd2-a99d-ce6c6ebf3a31",
                        "name": "Ironing facilities",
                        "is_select": false
                    },
                    {
                        "id": "6107ec89-e45a-43f5-ac25-598f20535951",
                        "name": "Mosquito net",
                        "is_select": false
                    },
                    {
                        "id": "1818a164-cfd0-435a-8398-f7ddc11401f4",
                        "name": "Non-feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "1ca6771c-37ae-4ff6-84d0-4277f27365b0",
                        "name": "Pajamas",
                        "is_select": false
                    },
                    {
                        "id": "3e611ae2-edf5-4473-ae7b-c6ab2d6ce946",
                        "name": "Plunge Pool",
                        "is_select": false
                    },
                    {
                        "id": "a13e0b46-0d5e-4503-bc11-af25b568609a",
                        "name": "Pool cover",
                        "is_select": false
                    },
                    {
                        "id": "86854195-b984-415f-925e-bee9172388dc",
                        "name": "Pool towels",
                        "is_select": false
                    },
                    {
                        "id": "b5687b9d-65b2-4d1a-aa22-b2ef72a26685",
                        "name": "Pool with a view",
                        "is_select": false
                    },
                    {
                        "id": "bc8c3d71-115f-45ff-8d98-6d6c7c1ad6b7",
                        "name": "Private pool",
                        "is_select": false
                    },
                    {
                        "id": "7ba1a081-d56b-4608-9d2e-1110fa4cd601",
                        "name": "Rooftop pool",
                        "is_select": false
                    },
                    {
                        "id": "b808b875-492d-458d-a6bc-720372622767",
                        "name": "Safe",
                        "is_select": false
                    },
                    {
                        "id": "d990b235-5121-4b63-ad8c-5ee1721196b4",
                        "name": "Saltwater pool",
                        "is_select": false
                    },
                    {
                        "id": "b38466d0-9e59-4736-8204-0b01d379faa0",
                        "name": "Shallow end",
                        "is_select": false
                    },
                    {
                        "id": "bc33df3d-9f0f-425b-a0df-46ab53e7aa83",
                        "name": "Sitting area",
                        "is_select": false
                    },
                    {
                        "id": "441d79fb-82a4-458a-8bd2-8f91f40f5e2b",
                        "name": "Socket near the bed",
                        "is_select": false
                    },
                    {
                        "id": "30d5b8ec-8f2e-4fc6-899a-5714a9d7be63",
                        "name": "Sofa",
                        "is_select": false
                    },
                    {
                        "id": "06b027ce-138e-4f61-bc25-10165e24cbfd",
                        "name": "Sofa bed",
                        "is_select": false
                    },
                    {
                        "id": "f2d7c256-4b44-48bf-a2a0-04917f773784",
                        "name": "Soundproof",
                        "is_select": false
                    },
                    {
                        "id": "f39be007-f9d0-413a-9434-335578838ac8",
                        "name": "Suit press",
                        "is_select": false
                    },
                    {
                        "id": "892e321b-5422-48d7-8c1d-950486a1ea57",
                        "name": "Tile/Marble floor",
                        "is_select": false
                    },
                    {
                        "id": "7bdbc02c-4cf0-487a-9faa-bbe25447795a",
                        "name": "Toilet paper",
                        "is_select": false
                    },
                    {
                        "id": "5f84000a-c63d-4234-93c7-dcf36434b1ff",
                        "name": "Towels",
                        "is_select": false
                    },
                    {
                        "id": "b8937943-2b2c-4818-8943-cea8f0754fe6",
                        "name": "Trash cans",
                        "is_select": false
                    },
                    {
                        "id": "26ad03ba-c55c-489a-a550-92f19982df53",
                        "name": "View",
                        "is_select": false
                    },
                    {
                        "id": "ec55c805-84d8-4457-b5b8-fec22adf8ec6",
                        "name": "Walk-in closet",
                        "is_select": false
                    },
                    {
                        "id": "8d560293-82fd-4135-99df-761aa540dbb7",
                        "name": "Wardrobe or closet",
                        "is_select": false
                    },
                    {
                        "id": "b0d7bf28-75d2-4f0a-8ad9-baabe2e50608",
                        "name": "Washing machine",
                        "is_select": false
                    },
                    {
                        "id": "17d5df9c-0bb9-4390-8177-9dc05b0ea92c",
                        "name": "Yukata",
                        "is_select": false
                    },
                    {
                        "id": "336a2aa5-fb92-432e-9d15-496f0638fd60",
                        "name": "Air purifiers",
                        "is_select": false
                    },
                    {
                        "id": "f822da69-c6d3-439d-aab2-58c28e09dc39",
                        "name": "Hand sanitizer",
                        "is_select": false
                    },
                    {
                        "id": "932710b6-8c27-4184-b3b3-7df86e2fb36f",
                        "name": "Bolsters",
                        "is_select": false
                    }
                ]
            }
        ]
    }
}
 

Request   

POST api/v1/property/property-product

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Room Type id please not set param if you want create new room type Example: esse

property_id   string     

uuid of Property Example: nisi

category_id   string     

uuid of Category Example: iste

department_id   string     

uuid of Department Example: fuga

sell_coa_id   string     

uuid of Selling Chart Of Account Example: sint

cost_coa_id   string     

uuid of Cost Chart Of Account Example: quia

name   string     

Name of Product Example: officiis

remark   string  optional    

Remark Of Product Example: nisi

sell_amount   integer     

sell amount price Example: 20

cost_amount   integer     

cost amount price Example: 13

is_active   bolean  optional    

uuid of room amenities Example: et

Remove Products

Example request:
curl --request POST \
    "http://localhost/api/v1/property/property-product/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"iste\"
}"
const url = new URL(
    "http://localhost/api/v1/property/property-product/remove"
);

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

let body = {
    "id": "iste"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/property-product/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'iste',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Property Product",
    "data": []
}
 

Request   

POST api/v1/property/property-product/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Property Product Example: iste

Option Products Input

Example request:
curl --request POST \
    "http://localhost/api/v1/property/property-product/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"category\",
    \"property_id\": \"rem\"
}"
const url = new URL(
    "http://localhost/api/v1/property/property-product/dropdown/list"
);

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

let body = {
    "mode": "category",
    "property_id": "rem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/property-product/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'category',
            'property_id' => 'rem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/property/property-product/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: category

Must be one of:
  • category
  • department
  • coa
  • property_currency
property_id   string     

uuid of Property Example: rem

Property Room

Detail Room

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"asperiores\",
    \"room_type_id\": \"officia\",
    \"room_id\": \"nemo\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room/detail"
);

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

let body = {
    "property_id": "asperiores",
    "room_type_id": "officia",
    "room_id": "nemo"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'asperiores',
            'room_type_id' => 'officia',
            'room_id' => 'nemo',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room Type detail",
    "data": {
        "id": "054cd951-626c-400d-8764-3f28e266d806",
        "name": "Standard Balcony",
        "description": "Standard Balcony Room",
        "position_order": 1,
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/room/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: asperiores

room_type_id   string     

uuid of Property Room Type Example: officia

room_id   string     

uuid of Property Room Example: nemo

Datatables Room Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ut\",
    \"room_type_id\": \"quis\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room/datatables"
);

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

let body = {
    "property_id": "ut",
    "room_type_id": "quis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ut',
            'room_type_id' => 'quis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 4,
    "recordsFiltered": 4,
    "data": [
        {
            "id": "594c67d4-6dff-4315-aa48-afb5139ab8ee",
            "room_type_id": "214310a1-f98b-4edb-9e55-5a1616875318",
            "room_bed_type_id": "e9954628-6ab7-4a55-8605-590e4db0754a",
            "name": "101",
            "description": "101",
            "room_status_id": "",
            "room_status_name": "",
            "room_status_text_color": "",
            "room_status_background": "",
            "room_type_name": "Standard",
            "room_bed_type_name": "Single"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
        "room_type_id": "214310a1-f98b-4edb-9e55-5a1616875318"
    }
}
 

Request   

POST api/v1/property/room/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: ut

room_type_id   string     

uuid of Property Room Status Example: quis

Create / Update Room

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"iste\",
    \"property_id\": \"expedita\",
    \"room_type_id\": \"aliquam\",
    \"room_bed_type_id\": \"aut\",
    \"name\": \"voluptate\",
    \"description\": \"Dicta ut reiciendis pariatur enim.\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room"
);

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

let body = {
    "id": "iste",
    "property_id": "expedita",
    "room_type_id": "aliquam",
    "room_bed_type_id": "aut",
    "name": "voluptate",
    "description": "Dicta ut reiciendis pariatur enim."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'iste',
            'property_id' => 'expedita',
            'room_type_id' => 'aliquam',
            'room_bed_type_id' => 'aut',
            'name' => 'voluptate',
            'description' => 'Dicta ut reiciendis pariatur enim.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room",
    "data": {
        "id": "8ee6a1e8-a3c0-4f91-8035-38cfcdd88131",
        "room_type": {
            "id": "c6f2e4e0-6b99-409b-bb48-e65e377dbbec",
            "name": "Standard Balcony"
        },
        "room_bed_type": {
            "id": "075c9027-3d6b-4a79-9e3c-3cb8d6cba34b",
            "name": "Twin"
        },
        "latest_status": [],
        "name": "Kamar Baru 101 update",
        "description": "kamar Terletak Di lantai 3",
        "position_order": 10
    }
}
 

Request   

POST api/v1/property/room

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Room please ingnore this parameter if you want create new room Example: iste

property_id   string     

uuid of Property Example: expedita

room_type_id   string     

uuid of Room Type Example: aliquam

room_bed_type_id   string     

uuid of Room Bed Type Example: aut

name   string     

Name of Room Example: voluptate

description   string     

Description of Room Example: Dicta ut reiciendis pariatur enim.

Remove Room

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"laudantium\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room/remove"
);

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

let body = {
    "id": "laudantium"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'laudantium',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Room",
    "data": []
}
 

Request   

POST api/v1/property/room/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Room Example: laudantium

Option Input Rooms

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"beatae\",
    \"mode\": \"bed_type\",
    \"room_id\": \"possimus\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room/dropdown/list"
);

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

let body = {
    "property_id": "beatae",
    "mode": "bed_type",
    "room_id": "possimus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'beatae',
            'mode' => 'bed_type',
            'room_id' => 'possimus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Parrent Chart Of Accounts Founds",
    "data": [
        {
            "key": "210b2362-d9f6-45e0-a25b-ead638df9b91",
            "label": "1101 - HOUSE BANK"
        },
        {
            "key": "4ca4727f-53b2-46b7-b075-d91d6e0b4cfe",
            "label": "1102 - BANK"
        },
        {
            "key": "8fc28675-351f-433a-a5db-5a1de3034372",
            "label": "1103 - CASH CLEARANCE"
        },
        {
            "key": "8830ca00-d308-4e6a-95d4-62ad01228e90",
            "label": "1200 - ACCOUNT RECEIVABLE"
        },
        {
            "key": "fd1c04d4-ff02-4dff-90aa-19af7117ba57",
            "label": "1202 - OTHER RECEIVABLE"
        },
        {
            "key": "b42ccf09-1d0e-41a3-8eab-21ae5d2e0f31",
            "label": "1205 - AFFILIATED COMP.RECEIVABLE"
        },
        {
            "key": "81646715-b856-468a-b043-139486a308ca",
            "label": "1206 - DEPOSIT AND ADVANCED"
        },
        {
            "key": "b2267586-3d5e-493b-8ab1-77a112e3e839",
            "label": "1300 - INVENTORY"
        },
        {
            "key": "4081e874-138d-458c-90cb-aa0393c3bd3b",
            "label": "1302 - PREPAID EXPENSES"
        },
        {
            "key": "803cb6c1-fce1-46b0-b17e-37c2de7d8b67",
            "label": "1500 - PROPERTY & EQUIPMENT"
        },
        {
            "key": "23b79ab7-6670-4bad-944a-94483d9bbc28",
            "label": "1503 - FURNITURE, FIXTURE & EQUIPMENT"
        },
        {
            "key": "fc6257ca-106a-4d9e-8a30-b7d0c2f6dab3",
            "label": "1505 - OPERATING EQUIPMENT"
        },
        {
            "key": "f6ee9426-57c4-4a73-a344-ec04dd5f68c2",
            "label": "1600 - FIXED ASSET LEASING"
        },
        {
            "key": "eff45872-f200-426a-8041-c11c064a7166",
            "label": "1700 - ACC. DEPRE PROPERTY & EQUIPMENT"
        },
        {
            "key": "5d020502-871e-4947-bc42-fe51ac519653",
            "label": "1701 - ACC. DEPRE FURNITURE, FIXTURE &"
        },
        {
            "key": "0b09c462-295b-434d-a5d2-9dadc6f239ee",
            "label": "1702 - ACC. DEPRE OPERATING EQUIPMENT"
        },
        {
            "key": "bcb9d228-589b-43a0-b6ed-59aa4568e95c",
            "label": "1703 - ACC. DEPRE FIXED ASSET LEASING"
        },
        {
            "key": "fc5c56af-55b9-4ed2-8bc2-f388e9001554",
            "label": "1800 - OTHER ASSET"
        },
        {
            "key": "06a1cbb6-6f5e-4cfd-80a1-207b580c4717",
            "label": "2100 - ACCOUNT PAYABLE"
        },
        {
            "key": "7a790a80-bd59-4e79-8869-ace6fa7a55e0",
            "label": "2200 - TAX PAYABLE"
        },
        {
            "key": "8c0fd310-cc35-4ace-94e2-deb37cc79aa2",
            "label": "2300 - ACCRUED EXPENSES"
        },
        {
            "key": "00a4706d-5d9e-4a08-ba6d-9caccf45bff0",
            "label": "2400 - GUEST DEPOSIT"
        },
        {
            "key": "23c40acd-12b8-4ba1-aab9-d054cd541b30",
            "label": "2500 - OTHER LIABILITIES"
        },
        {
            "key": "b647d91e-7061-4a12-af2f-6d6cc89a7139",
            "label": "2600 - AFFILIATED COMPANY PAYABLE"
        },
        {
            "key": "7d690279-16ba-4ab1-9903-8cb04e88030f",
            "label": "2700 - PROVISION"
        },
        {
            "key": "a5e8d2a9-9ce6-43db-8283-19b2f4068274",
            "label": "2800 - RESERVE"
        },
        {
            "key": "b5f2fac5-37ae-4e9b-bb6f-7fe3185bfd11",
            "label": "2900 - LONG TERM LIABILITIES"
        },
        {
            "key": "56c709ec-38ea-4def-8c96-5a5fd04946c2",
            "label": "3100 - CAPITAL"
        },
        {
            "key": "7e95b34b-f1e8-4f04-b23a-04e3f2be8187",
            "label": "3200 - RETAINED EARNING"
        },
        {
            "key": "5a5cb85b-1ad5-4da5-a291-f914204af921",
            "label": "4001 - ROOM REVENUE"
        },
        {
            "key": "5555087b-30be-4759-85f8-d8acd3220c05",
            "label": "4102 - RESTAURANT REVENUE"
        },
        {
            "key": "cd40bf4e-8bb0-4af0-a619-22fc8d08e952",
            "label": "4103 - POOL BAR REVENUE"
        },
        {
            "key": "d13274cb-3158-4389-b05e-200f4932e613",
            "label": "4104 - BANQUET REVENUE"
        },
        {
            "key": "1000d05d-6280-4dec-9e1f-3231b821dd96",
            "label": "4105 - ROOM SERVICE REVENUE"
        },
        {
            "key": "480b5176-37b9-4851-b6db-1da3c22a015c",
            "label": "4106 - MINI BAR"
        },
        {
            "key": "2c55fb76-5ea6-4d3a-8430-fa2bbcfd9869",
            "label": "4107 - TELEPHONE REVENUE"
        },
        {
            "key": "6e024e8d-8ead-4623-b9d1-9d3370320af5",
            "label": "4108 - BUSINESS CENTER REVENUE"
        },
        {
            "key": "601d1eec-00a2-4300-9ebf-517fce44cd39",
            "label": "4109 - LAUNDRY REVENUE"
        },
        {
            "key": "698a22e9-7e09-402a-9ddd-13e19140def3",
            "label": "4110 - SPA REVENUE"
        },
        {
            "key": "d25c9ab5-95f5-47d4-a47e-ba8147bb7053",
            "label": "4301 - MOD REVENUE"
        },
        {
            "key": "60a19460-3517-48e6-82cf-e6855fe276f8",
            "label": "4302 - OTHER INCOME"
        },
        {
            "key": "ee51d258-0c3e-4971-ac91-bca3dafb8537",
            "label": "5000 - COST OF RESTAURANT"
        },
        {
            "key": "17d2fd3c-55fa-4e59-8fc2-cba98b557be9",
            "label": "5101 - COST OF POOL BAR"
        },
        {
            "key": "8504db70-44d7-4e62-9510-1ffca276c4c2",
            "label": "5102 - COST OF BANQUET"
        },
        {
            "key": "d7e55854-cc2b-4d9a-a693-8c5ce9d65891",
            "label": "5103 - COST OF ROOM SERVICE"
        },
        {
            "key": "e1c8b321-ebd6-499d-9002-2abd99c8fe66",
            "label": "5104 - TELEPHONE COST OF SALES"
        },
        {
            "key": "e2415705-6352-4899-a164-129e20aaa4aa",
            "label": "5105 - BC COST OF SALES"
        },
        {
            "key": "59c308ac-df35-44fd-b562-1e63312a84ad",
            "label": "5106 - LAUNDRY COST OF SALES"
        },
        {
            "key": "d8ee2e0b-57ac-40a3-b5af-157d539093b7",
            "label": "5109 - SPA COST OF SALES"
        },
        {
            "key": "820d1acc-0efb-4de8-9172-44c62e001a0c",
            "label": "5110 - MOD COST OF SALES"
        },
        {
            "key": "2d243fe1-1cfd-4205-88cc-cac68ef3eb43",
            "label": "6100 - FO PAYROLL & RELATED"
        },
        {
            "key": "5a9f0e73-9aaf-4d19-8dde-7223ae74feeb",
            "label": "6101 - FO OTHER EXPENSES"
        },
        {
            "key": "f4013403-dc42-4c57-bd58-4566fa2647d1",
            "label": "6102 - FO PROVISION"
        },
        {
            "key": "4e58b804-17b3-4447-a1a6-0359d713be34",
            "label": "6110 - HK PAYROLL & RELATED"
        },
        {
            "key": "8d103cc4-73d9-41e1-a647-0003af126eb1",
            "label": "6111 - HK OTHER EXPENSES"
        },
        {
            "key": "700d17b7-a83c-4532-ad5a-a307035687cc",
            "label": "6112 - HK PROVISION"
        },
        {
            "key": "15901219-d41c-4a2f-8329-6c5737cc0b11",
            "label": "6120 - REST PAYROLL & RELATED"
        },
        {
            "key": "9142a74a-ea26-4f5a-a106-5a6a1b0e7df4",
            "label": "6121 - REST OTHER EXPENSES"
        },
        {
            "key": "9a2a4764-6f60-4633-96a4-332dd6571e46",
            "label": "6122 - REST PROVISION"
        },
        {
            "key": "e60ce86c-68b4-4cde-bc85-28231266cee4",
            "label": "6130 - POOL BAR PAYROLL & RELATED"
        },
        {
            "key": "e561a4f8-588d-43aa-8a20-188edd2ae811",
            "label": "6131 - POOL BAR OTHER EXPENSES"
        },
        {
            "key": "4ffa54ed-feaf-4ed4-b661-1cf72df33a31",
            "label": "6132 - POOL BAR PROVISION"
        },
        {
            "key": "1e542c97-b3ee-479e-9859-4a1975e87c52",
            "label": "6140 - RS PAYROLL & RELATED"
        },
        {
            "key": "a05037f3-b44d-489a-a097-837f581d106c",
            "label": "6141 - RS OTHER EXPENSES"
        },
        {
            "key": "2a7be2e9-2c2f-4c77-b6b2-4c83c5ffdf10",
            "label": "6142 - RS PROVISION"
        },
        {
            "key": "d6054b4f-b5b0-4946-b6d9-f05cab48e2f9",
            "label": "6150 - BQT PAYROLL & RELATED"
        },
        {
            "key": "5dfb17b7-644a-43d4-baa5-8f823d0f0abf",
            "label": "6151 - BQT OTHER EXPENSES"
        },
        {
            "key": "8aee3482-d98e-4574-9c62-409c055a2cb5",
            "label": "6152 - BQT PROVISION"
        },
        {
            "key": "97ff15af-1f9f-4b25-9425-8e5b3a0db63d",
            "label": "6160 - MB PAYROLL & RELATED"
        },
        {
            "key": "495d3064-00a5-4cb4-bb60-ca82950575ef",
            "label": "6161 - MB OTHER EXPENSES"
        },
        {
            "key": "4e7838a6-fedd-4db6-a456-0ceac8185a24",
            "label": "6162 - MB PROVISION"
        },
        {
            "key": "508580d4-445e-45a7-8447-9d111e6e0f8b",
            "label": "6170 - FBP PAYROLL & RELATED"
        },
        {
            "key": "7a24967c-4fb5-4864-a53a-4763131953d1",
            "label": "6171 - FBP OTHER EXPENSES"
        },
        {
            "key": "64f6f4e7-6caa-4530-9ffb-596c5c0a5cea",
            "label": "6172 - FBP PROVISION"
        },
        {
            "key": "f4dd92f5-3ef3-4d55-b1b1-253d95bbcf3b",
            "label": "6180 - TLP PAYROLL & RELATED"
        },
        {
            "key": "d9fa0a74-fcf2-45a9-a36a-efb43d5e75b5",
            "label": "6181 - TLP OTHER EXPENSES"
        },
        {
            "key": "255a250c-6b2e-491a-a4ee-8ad05f28adc4",
            "label": "6182 - TLP PROVISION"
        },
        {
            "key": "7d0178a5-6040-462b-9105-a183a4128bf6",
            "label": "6190 - BC PAYROLL & RELATED"
        },
        {
            "key": "a18b0837-5cc4-4742-9080-33cd4415556e",
            "label": "6191 - BC OTHER EXPENSES"
        },
        {
            "key": "6a948b29-0d86-46e8-8cb0-11b0f30b294a",
            "label": "6192 - BC PROVISION"
        },
        {
            "key": "42a8a678-5da8-4644-b26b-977350861f35",
            "label": "6200 - LDY PAYROLL & RELATED"
        },
        {
            "key": "a94ed02c-737f-4056-ae73-707f32e5abc0",
            "label": "6201 - LDY OTHER EXPENSES"
        },
        {
            "key": "fe2c9dba-908a-4435-b954-6ce2ebaec17c",
            "label": "6202 - LDY PROVISION"
        },
        {
            "key": "425639df-c5f6-47cd-88d8-7dd9b945cb2f",
            "label": "6210 - SPA PAYROLL & RELATED"
        },
        {
            "key": "fbd01d6b-377f-4379-8491-b483ed1ed76d",
            "label": "6211 - SPA OTHER EXPENSES"
        },
        {
            "key": "5156f809-0ca5-4421-83bd-e6951df9d9a0",
            "label": "6212 - SPA PROVISION"
        },
        {
            "key": "0d3c9d5b-f7cc-417a-a1eb-75d385f9d502",
            "label": "6230 - MOD PAYROLL & RELATED EXPENSES"
        },
        {
            "key": "26b4f9f7-9e9b-431b-a990-5ed7fead02be",
            "label": "6231 - MOD OTHER EXPENSES"
        },
        {
            "key": "0f681405-70ee-494e-80d9-46660a463c47",
            "label": "6232 - MOD PAYROLL & RELATED EXPENSES"
        },
        {
            "key": "55e203a3-c76b-4c65-864d-1aaf07fe93ba",
            "label": "7100 - A&G PAYROLL & RELATED"
        },
        {
            "key": "f4b92be1-a95a-46ca-a979-c2cf78456826",
            "label": "7101 - A&G OTHER EXPENSES"
        },
        {
            "key": "041c1a24-94a3-4e8e-8e71-38f5dc6bb26d",
            "label": "7200 - HRD PAYROLL & RELATED"
        },
        {
            "key": "55cc5a77-7315-49bb-aa3b-9347f9b206cb",
            "label": "7201 - HRD OTHER EXPENSES"
        },
        {
            "key": "6f36d345-6811-4ce1-9565-7e5aae6239ff",
            "label": "7300 - S&M PAYROLL & RELATED"
        },
        {
            "key": "473fe8e5-c982-443c-b247-841079b198ba",
            "label": "7301 - S&M OTHER EXPENSES"
        },
        {
            "key": "2bef6239-ed37-474e-a2a7-bda57da284f5",
            "label": "7400 - PMC PAYROLL & RELATED"
        },
        {
            "key": "5f558c00-7edb-4d51-9e16-e0c3a5bcfee9",
            "label": "7401 - PMC OTHER EXPENSES"
        },
        {
            "key": "52006a6e-3572-40d3-9a0b-eaa6001fc48b",
            "label": "7403 - PMC ENERGY COST"
        },
        {
            "key": "2246a00e-6edf-45ae-b28f-b26e3c942c30",
            "label": "8000 - OTHER DEDUCTION"
        },
        {
            "key": "72836a7f-caa3-46f0-bfe4-36eba0a4d565",
            "label": "9900 - STATISTIC"
        },
        {
            "key": "b520a39a-24a4-4b81-bfad-053e91218b49",
            "label": "9999090000 - test Chart Of Account Insert"
        },
        {
            "key": "b428bcd8-c55d-40bd-8847-4a59a288e1af",
            "label": "9999090000 - test Chart Of Account Insert"
        },
        {
            "key": "10889fad-a074-4c30-8b2c-ae4e1b81b209",
            "label": "9999090000 - test Chart Of Account Insert edit"
        }
    ]
}
 

Request   

POST api/v1/property/room/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: beatae

mode   string  optional    

The language. Example: bed_type

Must be one of:
  • room_type
  • bed_type
  • room_status
room_id   string     

uuid of Room use this parameter when get room status list Example: possimus

Update Room Status

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room/status/update" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ratione\",
    \"room_id\": \"cumque\",
    \"room_status_id\": \"corporis\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room/status/update"
);

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

let body = {
    "property_id": "ratione",
    "room_id": "cumque",
    "room_status_id": "corporis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room/status/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ratione',
            'room_id' => 'cumque',
            'room_status_id' => 'corporis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room Status",
    "data": {
        "id": "8ee6a1e8-a3c0-4f91-8035-38cfcdd88131",
        "room_type": {
            "id": "c6f2e4e0-6b99-409b-bb48-e65e377dbbec",
            "name": "Standard Balcony"
        },
        "room_bed_type": {
            "id": "075c9027-3d6b-4a79-9e3c-3cb8d6cba34b",
            "name": "Twin"
        },
        "latest_status": {
            "id": "cbe6826b-7b1e-4fd7-a91c-0c6afb415253",
            "name": "Sleep Out"
        },
        "name": "Kamar Baru 101 update",
        "description": "kamar Terletak Di lantai 3",
        "position_order": 10
    }
}
 

Request   

POST api/v1/property/room/status/update

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Room Example: ratione

room_id   string     

uuid of Room Example: cumque

room_status_id   string     

uuid of Room Status list Example: corporis

Property Room Bed Type

Detail Room Bed Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-bed-type/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"consectetur\",
    \"room_bed_type_id\": \"et\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-bed-type/detail"
);

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

let body = {
    "property_id": "consectetur",
    "room_bed_type_id": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-bed-type/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'consectetur',
            'room_bed_type_id' => 'et',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room Bed Type detail",
    "data": {
        "id": "628af586-7e1e-438c-9f06-f32513ea0577",
        "name": "Twin",
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/room-bed-type/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: consectetur

room_bed_type_id   string     

uuid of Property Room Status Example: et

Datatables Room Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-bed-type/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/room-bed-type/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-bed-type/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 3,
    "recordsFiltered": 3,
    "data": [
        {
            "id": "e9954628-6ab7-4a55-8605-590e4db0754a",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Single",
            "property_name": "Hotel Dummy"
        },
        {
            "id": "628af586-7e1e-438c-9f06-f32513ea0577",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Twin",
            "property_name": "Hotel Dummy"
        },
        {
            "id": "a9d33065-8207-4c52-9cfa-b69a9c7753b3",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Twin",
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"room_bed_types\" where \"property_id\" = ? and \"room_bed_types\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 2.01
        },
        {
            "query": "select * from \"room_bed_types\" where \"property_id\" = ? and \"room_bed_types\".\"deleted_at\" is null",
            "bindings": [
                1
            ],
            "time": 0.49
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.9
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.82
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"id\" = ? and \"properties\".\"id\" is not null and \"properties\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.67
        }
    ],
    "input": {
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/room-bed-type/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Room Bed Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-bed-type" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"mollitia\",
    \"name\": \"cum\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-bed-type"
);

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

let body = {
    "property_id": "mollitia",
    "name": "cum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-bed-type';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'mollitia',
            'name' => 'cum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/property/room-bed-type

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: mollitia

name   string     

Name of Room Type Example: cum

Remove Room Bed Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-bed-type/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"pariatur\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-bed-type/remove"
);

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

let body = {
    "id": "pariatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-bed-type/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'pariatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

POST api/v1/property/room-bed-type/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Room Bed Type Example: pariatur

Property Room Maintenance

Detail Room Maintenance

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-maintenance/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"quis\",
    \"id\": \"molestiae\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-maintenance/detail"
);

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

let body = {
    "property_id": "quis",
    "id": "molestiae"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-maintenance/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'quis',
            'id' => 'molestiae',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room Maintenance detail",
    "data": {
        "id": "...",
        "property_id": "...",
        "room_type": {
            "id": "...",
            "name": "Standard"
        },
        "room": {
            "id": "...",
            "name": "101"
        },
        "start_date": "2026-05-20",
        "end_date": "2026-05-22",
        "remark": "AC repair"
    }
}
 

Request   

POST api/v1/property/room-maintenance/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: quis

id   string     

uuid of Room Maintenance. Example: molestiae

Save / Update / Remove Room Maintenance

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-maintenance/save" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"eligendi\",
    \"is_remove\": true,
    \"property_id\": \"est\",
    \"room_type_id\": \"sunt\",
    \"room_id\": \"voluptatibus\",
    \"start_date\": \"2026-05-20\",
    \"end_date\": \"2026-05-22\",
    \"remark\": \"quia\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-maintenance/save"
);

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

let body = {
    "id": "eligendi",
    "is_remove": true,
    "property_id": "est",
    "room_type_id": "sunt",
    "room_id": "voluptatibus",
    "start_date": "2026-05-20",
    "end_date": "2026-05-22",
    "remark": "quia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-maintenance/save';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'eligendi',
            'is_remove' => true,
            'property_id' => 'est',
            'room_type_id' => 'sunt',
            'room_id' => 'voluptatibus',
            'start_date' => '2026-05-20',
            'end_date' => '2026-05-22',
            'remark' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Save Room Maintenance",
    "data": {
        "id": "...",
        "property_id": "...",
        "room_type": {
            "id": "...",
            "name": "Standard"
        },
        "room": {
            "id": "...",
            "name": "101"
        },
        "start_date": "2026-05-20",
        "end_date": "2026-05-22",
        "remark": "AC repair"
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/property/room-maintenance/save

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string  optional    

uuid of Room Maintenance. Required when update or remove. Ignore for new record. Example: eligendi

is_remove   boolean  optional    

set true together with id to remove existing maintenance. Example: true

property_id   string     

uuid of Property. Example: est

room_type_id   string     

uuid of Room Type. Required for save. Example: sunt

room_id   string     

uuid of Room. Required for save. Example: voluptatibus

start_date   string     

maintenance start date with format Y-m-d. Example: 2026-05-20

end_date   string     

maintenance end date with format Y-m-d. Example: 2026-05-22

remark   string  optional    

optional note about the maintenance. Example: quia

Dropdown Option List for Room Maintenance Editor

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-maintenance/dropdownoptionlist/roomtypelist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"ipsa\",
    \"room_type_id\": \"magnam\",
    \"start_date\": \"2026-05-20\",
    \"end_date\": \"2026-05-22\",
    \"id\": \"nostrum\",
    \"query\": \"aut\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-maintenance/dropdownoptionlist/roomtypelist"
);

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

let body = {
    "property_id": "ipsa",
    "room_type_id": "magnam",
    "start_date": "2026-05-20",
    "end_date": "2026-05-22",
    "id": "nostrum",
    "query": "aut"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-maintenance/dropdownoptionlist/roomtypelist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ipsa',
            'room_type_id' => 'magnam',
            'start_date' => '2026-05-20',
            'end_date' => '2026-05-22',
            'id' => 'nostrum',
            'query' => 'aut',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Room Type Founds",
    "data": [
        {
            "key": "...",
            "label": "Standard"
        }
    ]
}
 

Request   

POST api/v1/property/room-maintenance/dropdownoptionlist/{mode?}

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

URL Parameters

mode   string     

option list mode. Example: roomtypelist

Must be one of:
  • roomtypelist
  • roomlist

Body Parameters

property_id   string     

uuid of Property. Example: ipsa

room_type_id   string     

when mode=roomlist, uuid of Room Type. Example: magnam

start_date   string     

when mode=roomlist, format Y-m-d. Example: 2026-05-20

end_date   string     

when mode=roomlist, format Y-m-d. Example: 2026-05-22

id   string  optional    

optional when mode=roomlist, uuid of Room Maintenance being edited. The room currently assigned to this maintenance will always be included regardless of availability. Example: nostrum

query   string  optional    

optional keyword filter. Example: aut

Property Room Status

Detail Room Status

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-status-list/details" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"aut\",
    \"status_id\": \"laboriosam\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-status-list/details"
);

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

let body = {
    "property_id": "aut",
    "status_id": "laboriosam"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-status-list/details';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'aut',
            'status_id' => 'laboriosam',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room status detail",
    "data": {
        "id": "d264e801-8f11-45ed-a52a-773641ffeec8",
        "code": "OC",
        "name": "Occupied Clean",
        "remark": "Occupied Clean",
        "text_color": "#ffffff",
        "background": "#3f9e29",
        "property_id": "77d2db97-2bf9-4192-9205-6002f3ad8339"
    }
}
 

Request   

POST api/v1/property/room-status-list/details

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: aut

status_id   string     

uuid of Property Room Status Example: laboriosam

Datatables Room Status

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-status-list/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/room-status-list/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-status-list/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 11,
    "recordsFiltered": 11,
    "data": [
        {
            "id": "bc1b283d-e530-4459-8fb1-f8dd18a94725",
            "uuid": "bc1b283d-e530-4459-8fb1-f8dd18a94725",
            "property_id": "77d2db97-2bf9-4192-9205-6002f3ad8339",
            "code": "DND",
            "name": "Do not Disturb",
            "remark": "A guest is currently occupied in the room",
            "text_color": "#ffffff",
            "background": "#c68700",
            "is_available": true,
            "created_at": "2024-06-05T04:19:01.000000Z",
            "updated_at": "2024-06-05T04:19:01.000000Z",
            "deleted_at": null,
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "77d2db97-2bf9-4192-9205-6002f3ad8339"
    }
}
 

Request   

POST api/v1/property/room-status-list/datatables

Headers

Authorization        

Example: Bearer ***************************************

Create / Update Room Status

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-status-list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"quae\",
    \"property_id\": \"recusandae\",
    \"code\": \"et\",
    \"name\": \"qui\",
    \"remark\": \"nobis\",
    \"text_color\": \"molestiae\",
    \"background\": \"et\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-status-list"
);

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

let body = {
    "id": "quae",
    "property_id": "recusandae",
    "code": "et",
    "name": "qui",
    "remark": "nobis",
    "text_color": "molestiae",
    "background": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-status-list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'quae',
            'property_id' => 'recusandae',
            'code' => 'et',
            'name' => 'qui',
            'remark' => 'nobis',
            'text_color' => 'molestiae',
            'background' => 'et',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room status",
    "data": {
        "id": "3ff26234-a650-4913-a164-b615f7924024",
        "code": "TES",
        "name": "Test Room Status",
        "remark": "Test Room Status Remark",
        "text_color": "#000000",
        "background": "#ffffff",
        "property_id": "77d2db97-2bf9-4192-9205-6002f3ad8339"
    }
}
 

Request   

POST api/v1/property/room-status-list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Property Room Status please don't set parameter if want create new Example: quae

property_id   string     

uuid of Property Example: recusandae

code   string     

Code of Room Status Example: et

name   string     

Name of Room Status Example: qui

remark   string     

Description of Room Status Example: nobis

text_color   string  optional    

position on hex color text of Room Status Example: molestiae

background   string  optional    

position on hex color background of Room Status Example: et

Remove Room Status

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-status-list/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"libero\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-status-list/remove"
);

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

let body = {
    "id": "libero"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-status-list/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'libero',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Remove Room Status Default",
    "data": []
}
 

Request   

POST api/v1/property/room-status-list/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Room Status Example: libero

Property Room Type

Detail Room Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-type/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"inventore\",
    \"room_type_id\": \"rerum\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-type/detail"
);

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

let body = {
    "property_id": "inventore",
    "room_type_id": "rerum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-type/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'inventore',
            'room_type_id' => 'rerum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room Type detail",
    "data": {
        "id": "054cd951-626c-400d-8764-3f28e266d806",
        "name": "Standard Balcony",
        "description": "Standard Balcony Room",
        "position_order": 1,
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/room-type/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: inventore

room_type_id   string     

uuid of Property Room Status Example: rerum

Datatables Room Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-type/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/room-type/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-type/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 5,
    "recordsFiltered": 5,
    "data": [
        {
            "id": "214310a1-f98b-4edb-9e55-5a1616875318",
            "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
            "name": "Standard",
            "description": "Standar Room",
            "position_order": 1,
            "property_name": "Hotel Dummy"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c"
    }
}
 

Request   

POST api/v1/property/room-type/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Room Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-type" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"quasi\",
    \"property_id\": \"omnis\",
    \"name\": \"sapiente\",
    \"description\": \"Maiores error molestiae in qui laboriosam nobis repudiandae quo.\",
    \"position_order\": 12,
    \"room_amenities\": [
        \"qui\"
    ],
    \"occ_adult\": 12,
    \"occ_child\": 3,
    \"occ_infant\": 18,
    \"occ_default\": 2
}"
const url = new URL(
    "http://localhost/api/v1/property/room-type"
);

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

let body = {
    "id": "quasi",
    "property_id": "omnis",
    "name": "sapiente",
    "description": "Maiores error molestiae in qui laboriosam nobis repudiandae quo.",
    "position_order": 12,
    "room_amenities": [
        "qui"
    ],
    "occ_adult": 12,
    "occ_child": 3,
    "occ_infant": 18,
    "occ_default": 2
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-type';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'quasi',
            'property_id' => 'omnis',
            'name' => 'sapiente',
            'description' => 'Maiores error molestiae in qui laboriosam nobis repudiandae quo.',
            'position_order' => 12,
            'room_amenities' => [
                'qui',
            ],
            'occ_adult' => 12,
            'occ_child' => 3,
            'occ_infant' => 18,
            'occ_default' => 2,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room type",
    "data": {
        "id": "3696cda0-035d-4827-a406-c14e6fcdf264",
        "name": "Room Type baru",
        "description": "Room Type Baru Description",
        "position_order": 1,
        "property_id": "a10103ae-5162-46c8-a94c-43b8c579e11c",
        "amenities": [
            {
                "category_id": "37b32a73-0c29-4d5a-80bd-1717901d015e",
                "category_name": "Room Amenities",
                "amenities_list": [
                    {
                        "id": "78e7914b-21b5-4bdd-b461-2d3cd72b8f67",
                        "name": "Adapter",
                        "is_select": false
                    },
                    {
                        "id": "05300f15-884d-409e-a396-536929d3cbcf",
                        "name": "Air conditioning",
                        "is_select": true
                    },
                    {
                        "id": "a7d9dedc-cf0b-4d68-9a48-37e14461fdf4",
                        "name": "Air conditioning single room",
                        "is_select": false
                    },
                    {
                        "id": "fd1f09c8-0aca-4f66-b071-cc030a76b36b",
                        "name": "Balcony",
                        "is_select": true
                    },
                    {
                        "id": "dba356b4-5d41-4546-84cf-b08f6585f457",
                        "name": "Bathtub",
                        "is_select": false
                    },
                    {
                        "id": "252b28a2-6add-4a37-85c5-d22598b5e2a1",
                        "name": "Carpeted",
                        "is_select": false
                    },
                    {
                        "id": "f214eca9-262c-4307-979d-3e4bd8de39b4",
                        "name": "Childrens cribs",
                        "is_select": true
                    },
                    {
                        "id": "dc05d273-baec-48b0-acdf-559c39a35f61",
                        "name": "Cleaning products",
                        "is_select": false
                    },
                    {
                        "id": "404dd22a-26e0-4931-b3b2-99333f1e968e",
                        "name": "Clothes rack",
                        "is_select": false
                    },
                    {
                        "id": "3c23f5bb-59ee-4f48-b88a-be1d94681df6",
                        "name": "Desk",
                        "is_select": false
                    },
                    {
                        "id": "bc0c5784-2809-4904-b4e0-bab8b9e1e3d0",
                        "name": "Dryer",
                        "is_select": true
                    },
                    {
                        "id": "99fedee9-ecef-4875-81ce-2a4b9f16cd0a",
                        "name": "Drying rack for clothing",
                        "is_select": false
                    },
                    {
                        "id": "7a8eee4a-155a-4214-b105-68705f2e381b",
                        "name": "Electric blankets",
                        "is_select": false
                    },
                    {
                        "id": "b7757b5e-fa8e-465b-8c3e-f481ed0aba66",
                        "name": "Electric kettle",
                        "is_select": false
                    },
                    {
                        "id": "ce91b7d8-afa1-466d-bfd2-cbc01d107aa8",
                        "name": "Extra long beds (> 6.5 ft)",
                        "is_select": false
                    },
                    {
                        "id": "d0de7cd0-bf27-416f-9317-d65ede231d2f",
                        "name": "Fan",
                        "is_select": false
                    },
                    {
                        "id": "ef8e700d-34cd-46f3-ad83-e40192ff2a8f",
                        "name": "Feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "68d1483f-999a-4155-b2e4-86e0edf8c3ab",
                        "name": "Fireplace",
                        "is_select": false
                    },
                    {
                        "id": "9c1b1920-b3c0-4ce6-8e76-e9a41ceb3b28",
                        "name": "Flat-screen TV",
                        "is_select": false
                    },
                    {
                        "id": "206d34a2-716d-4f08-8895-b18a152c5c5c",
                        "name": "Fold-up bed",
                        "is_select": false
                    },
                    {
                        "id": "feb09933-4210-4e53-a083-60e0ff5f2076",
                        "name": "Hardwood or parquet floors",
                        "is_select": false
                    },
                    {
                        "id": "2d83428c-67f0-424c-b3cf-7b64c7bbde4d",
                        "name": "Heated pool",
                        "is_select": false
                    },
                    {
                        "id": "0e457b6c-27f9-4170-9174-ddcc4a44dbbc",
                        "name": "Heating",
                        "is_select": false
                    },
                    {
                        "id": "a91728b8-4c62-4644-bfc3-8673cdd06c5e",
                        "name": "Hot tub",
                        "is_select": false
                    },
                    {
                        "id": "96fc900e-041f-454c-9aae-45dd06b9a142",
                        "name": "Hypoallergenic",
                        "is_select": false
                    },
                    {
                        "id": "daeea86a-79c0-45b8-81a7-e76333134b3d",
                        "name": "Hypoallergenic pillow",
                        "is_select": false
                    },
                    {
                        "id": "9f577ec2-34e9-4d5c-87df-868bb8ffae4d",
                        "name": "Infinity Pool",
                        "is_select": false
                    },
                    {
                        "id": "0897bc60-47b1-46dd-a822-2bcaeb07d8e8",
                        "name": "Interconnecting rooms",
                        "is_select": false
                    },
                    {
                        "id": "a662f19e-419c-41a9-a0a0-b0c2f00f24dd",
                        "name": "Iron",
                        "is_select": false
                    },
                    {
                        "id": "46a2ee4a-c711-4dd2-a99d-ce6c6ebf3a31",
                        "name": "Ironing facilities",
                        "is_select": false
                    },
                    {
                        "id": "6107ec89-e45a-43f5-ac25-598f20535951",
                        "name": "Mosquito net",
                        "is_select": false
                    },
                    {
                        "id": "1818a164-cfd0-435a-8398-f7ddc11401f4",
                        "name": "Non-feather pillow",
                        "is_select": false
                    },
                    {
                        "id": "1ca6771c-37ae-4ff6-84d0-4277f27365b0",
                        "name": "Pajamas",
                        "is_select": false
                    },
                    {
                        "id": "3e611ae2-edf5-4473-ae7b-c6ab2d6ce946",
                        "name": "Plunge Pool",
                        "is_select": false
                    },
                    {
                        "id": "a13e0b46-0d5e-4503-bc11-af25b568609a",
                        "name": "Pool cover",
                        "is_select": false
                    },
                    {
                        "id": "86854195-b984-415f-925e-bee9172388dc",
                        "name": "Pool towels",
                        "is_select": false
                    },
                    {
                        "id": "b5687b9d-65b2-4d1a-aa22-b2ef72a26685",
                        "name": "Pool with a view",
                        "is_select": false
                    },
                    {
                        "id": "bc8c3d71-115f-45ff-8d98-6d6c7c1ad6b7",
                        "name": "Private pool",
                        "is_select": false
                    },
                    {
                        "id": "7ba1a081-d56b-4608-9d2e-1110fa4cd601",
                        "name": "Rooftop pool",
                        "is_select": false
                    },
                    {
                        "id": "b808b875-492d-458d-a6bc-720372622767",
                        "name": "Safe",
                        "is_select": false
                    },
                    {
                        "id": "d990b235-5121-4b63-ad8c-5ee1721196b4",
                        "name": "Saltwater pool",
                        "is_select": false
                    },
                    {
                        "id": "b38466d0-9e59-4736-8204-0b01d379faa0",
                        "name": "Shallow end",
                        "is_select": false
                    },
                    {
                        "id": "bc33df3d-9f0f-425b-a0df-46ab53e7aa83",
                        "name": "Sitting area",
                        "is_select": false
                    },
                    {
                        "id": "441d79fb-82a4-458a-8bd2-8f91f40f5e2b",
                        "name": "Socket near the bed",
                        "is_select": false
                    },
                    {
                        "id": "30d5b8ec-8f2e-4fc6-899a-5714a9d7be63",
                        "name": "Sofa",
                        "is_select": false
                    },
                    {
                        "id": "06b027ce-138e-4f61-bc25-10165e24cbfd",
                        "name": "Sofa bed",
                        "is_select": false
                    },
                    {
                        "id": "f2d7c256-4b44-48bf-a2a0-04917f773784",
                        "name": "Soundproof",
                        "is_select": false
                    },
                    {
                        "id": "f39be007-f9d0-413a-9434-335578838ac8",
                        "name": "Suit press",
                        "is_select": false
                    },
                    {
                        "id": "892e321b-5422-48d7-8c1d-950486a1ea57",
                        "name": "Tile/Marble floor",
                        "is_select": false
                    },
                    {
                        "id": "7bdbc02c-4cf0-487a-9faa-bbe25447795a",
                        "name": "Toilet paper",
                        "is_select": false
                    },
                    {
                        "id": "5f84000a-c63d-4234-93c7-dcf36434b1ff",
                        "name": "Towels",
                        "is_select": false
                    },
                    {
                        "id": "b8937943-2b2c-4818-8943-cea8f0754fe6",
                        "name": "Trash cans",
                        "is_select": false
                    },
                    {
                        "id": "26ad03ba-c55c-489a-a550-92f19982df53",
                        "name": "View",
                        "is_select": false
                    },
                    {
                        "id": "ec55c805-84d8-4457-b5b8-fec22adf8ec6",
                        "name": "Walk-in closet",
                        "is_select": false
                    },
                    {
                        "id": "8d560293-82fd-4135-99df-761aa540dbb7",
                        "name": "Wardrobe or closet",
                        "is_select": false
                    },
                    {
                        "id": "b0d7bf28-75d2-4f0a-8ad9-baabe2e50608",
                        "name": "Washing machine",
                        "is_select": false
                    },
                    {
                        "id": "17d5df9c-0bb9-4390-8177-9dc05b0ea92c",
                        "name": "Yukata",
                        "is_select": false
                    },
                    {
                        "id": "336a2aa5-fb92-432e-9d15-496f0638fd60",
                        "name": "Air purifiers",
                        "is_select": false
                    },
                    {
                        "id": "f822da69-c6d3-439d-aab2-58c28e09dc39",
                        "name": "Hand sanitizer",
                        "is_select": false
                    },
                    {
                        "id": "932710b6-8c27-4184-b3b3-7df86e2fb36f",
                        "name": "Bolsters",
                        "is_select": false
                    }
                ]
            }
        ]
    }
}
 

Request   

POST api/v1/property/room-type

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Room Type id please not set param if you want create new room type Example: quasi

property_id   string     

uuid of Property Example: omnis

name   string     

Name of Room Type Example: sapiente

description   string     

Description of Room Type Example: Maiores error molestiae in qui laboriosam nobis repudiandae quo.

position_order   integer  optional    

position on order of room type Example: 12

room_amenities   string[]  optional    

uuid of room amenities

occ_adult   integer  optional    

this amount of max occupancy adult for this room type Example: 12

occ_child   integer  optional    

this amount of max occupancy child for this room type Example: 3

occ_infant   integer  optional    

this amount of max occupancy infant for this room type Example: 18

occ_default   integer  optional    

this amount of max occupancy default for this room type Example: 2

Remove Room Type

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-type/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"quia\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-type/remove"
);

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

let body = {
    "id": "quia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-type/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Room Type",
    "data": []
}
 

Request   

POST api/v1/property/room-type/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Room Type Example: quia

Option Room Type Input

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-type/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"amenities\",
    \"room_type_id\": \"molestiae\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room-type/dropdown/list"
);

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

let body = {
    "mode": "amenities",
    "room_type_id": "molestiae"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-type/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'amenities',
            'room_type_id' => 'molestiae',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/property/room-type/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: amenities

Must be one of:
  • amenities
room_type_id   string     

uuid of Room Type Example: molestiae

Get Room type Images

Example request:
curl --request GET \
    --get "http://localhost/api/v1/property/room-type/image/acdd2204-027d-3703-b89d-976c6196191e" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/room-type/image/acdd2204-027d-3703-b89d-976c6196191e"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-type/image/acdd2204-027d-3703-b89d-976c6196191e';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Request   

GET api/v1/property/room-type/image/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Room Type. Example: acdd2204-027d-3703-b89d-976c6196191e

delete Room Type Images

Example request:
curl --request GET \
    --get "http://localhost/api/v1/property/room-type/image/4bf55cd0-da4c-348a-85fa-129149be50d1/delete" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/room-type/image/4bf55cd0-da4c-348a-85fa-129149be50d1/delete"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-type/image/4bf55cd0-da4c-348a-85fa-129149be50d1/delete';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "msg": "success delete image"
}
 

Request   

GET api/v1/property/room-type/image/{uuid}/delete

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Property Images. Example: 4bf55cd0-da4c-348a-85fa-129149be50d1

Upload Room Type Images

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room-type/image/upload" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: multipart/form-data" \
    --form "id=officia"\
    --form "image_path[]=@C:\Users\agusb\AppData\Local\Temp\php95B6.tmp" 
const url = new URL(
    "http://localhost/api/v1/property/room-type/image/upload"
);

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

const body = new FormData();
body.append('id', 'officia');
body.append('image_path[]', document.querySelector('input[name="image_path[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/room-type/image/upload';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'multipart/form-data',
        ],
        'multipart' => [
            [
                'name' => 'id',
                'contents' => 'officia'
            ],
            [
                'name' => 'image_path[]',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php95B6.tmp', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "msg": "success upload image"
}
 

Request   

POST api/v1/property/room-type/image/upload

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: multipart/form-data

Body Parameters

id   string     

uuid of room type Example: officia

image_path[]   file  optional    

Example: C:\Users\agusb\AppData\Local\Temp\php95B6.tmp

Property Setup

Datatables Property

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 1,
    "recordsFiltered": 1,
    "data": [
        {
            "id": "5e1932e0-7d6c-49e4-989c-6c6512263d8f",
            "property_group_id": "d0988d1d-a3d0-4494-807d-e9777345d4a4",
            "prefix_booking_code": "hotel_dummy-",
            "name": "Hotel Dummy",
            "address": "Jl. Raya Kedampang Gg Loka No.8, Kerobokan Kelod, Kec. Kuta, Kabupaten Badung, Bali 80361",
            "zip_code": "80361",
            "phone": "0817-7689-9998",
            "email_primary": "[email protected]",
            "timezone_id": "204e5eab-01a6-43ae-b93c-983037af6577",
            "area_id": "c71e56f2-f74c-4913-9846-a5998a0e536f",
            "currency_id": "5138063c-f71f-4433-8350-a66d2429a592",
            "logo_path": "",
            "area_name": "Sukawati, Bali, Indonesia",
            "website": "https://www.dummyhotel.com",
            "longitude": "-8.597327",
            "latitude": "115.319776",
            "google_map_url": "https://goo.gl/maps/q9CqJMQFvZ7WYLdH6",
            "sosmed_facebook_url": "#",
            "sosmed_instagram_url": "#",
            "sosmed_youtube_url": "#",
            "sosmed_twitter_url": "#",
            "description": "Welcome to Dummy Hotel, located in the picturesque village of Dummy in dummy. Our boutique hotel features 18 elegantly appointed rooms, each one offering a comfortable and relaxing stay. Our rooms are equipped with modern amenities including air conditioning, flat-screen TV, and complimentary Wi-Fi to ensure a seamless and enjoyable stay. The room has a private balcony with breathtaking views of the surrounding rice paddies and gardens."
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"properties\" where \"properties\".\"deleted_at\" is null",
            "bindings": [],
            "time": 1.78
        },
        {
            "query": "select * from \"properties\" where \"properties\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.57
        },
        {
            "query": "select * from \"areas\" where \"areas\".\"id\" = ? and \"areas\".\"id\" is not null and \"areas\".\"deleted_at\" is null limit 1",
            "bindings": [
                509
            ],
            "time": 1.67
        },
        {
            "query": "select * from \"regions\" where \"regions\".\"id\" = ? and \"regions\".\"id\" is not null and \"regions\".\"deleted_at\" is null limit 1",
            "bindings": [
                17
            ],
            "time": 1.98
        },
        {
            "query": "select * from \"countries\" where \"countries\".\"id\" = ? and \"countries\".\"id\" is not null and \"countries\".\"deleted_at\" is null limit 1",
            "bindings": [
                100
            ],
            "time": 2.12
        },
        {
            "query": "select * from \"property_details\" where \"property_details\".\"property_id\" = ? and \"property_details\".\"property_id\" is not null and \"property_details\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 1.86
        },
        {
            "query": "select * from \"timezones\" where \"timezones\".\"id\" = ? and \"timezones\".\"id\" is not null and \"timezones\".\"deleted_at\" is null limit 1",
            "bindings": [
                243
            ],
            "time": 1.93
        },
        {
            "query": "select * from \"currencies\" where \"currencies\".\"id\" = ? and \"currencies\".\"id\" is not null and \"currencies\".\"deleted_at\" is null limit 1",
            "bindings": [
                90
            ],
            "time": 1.92
        },
        {
            "query": "select * from \"property_groups\" where \"property_groups\".\"id\" = ? and \"property_groups\".\"id\" is not null and \"property_groups\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 1.43
        }
    ],
    "input": []
}
 

Request   

POST api/v1/master/property/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Property

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: multipart/form-data" \
    --form "id=voluptatum"\
    --form "property_group_id=aperiam"\
    --form "prefix_booking_code=dolorem"\
    --form "name=quia"\
    --form "address=minima"\
    --form "zip_code=fugiat"\
    --form "phone=aut"\
    --form "email_primary=eligendi"\
    --form "website=fugit"\
    --form "area_id=ut"\
    --form "longitude=vitae"\
    --form "latitude=reprehenderit"\
    --form "google_map_url=https://www.spencer.com/labore-non-doloremque-esse-quia-expedita-qui"\
    --form "currency_id=aut"\
    --form "timezone_id=similique"\
    --form "sosmed_facebook_url=https://effertz.com/quia-facilis-dolor-hic-nisi-expedita-modi.html"\
    --form "sosmed_instagram_url=http://fisher.com/alias-aliquam-dolorem-cum-eos"\
    --form "sosmed_youtube_url=http://www.thiel.org/illum-voluptatem-qui-aliquid-enim-sit-sed"\
    --form "sosmed_twitter_url=http://ziemann.com/"\
    --form "description=Perspiciatis voluptatem adipisci a consequatur earum est."\
    --form "coa_default_template_id=illum"\
    --form "room_status_template=yes"\
    --form "logo_path=@C:\Users\agusb\AppData\Local\Temp\php949B.tmp" 
const url = new URL(
    "http://localhost/api/v1/master/property"
);

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

const body = new FormData();
body.append('id', 'voluptatum');
body.append('property_group_id', 'aperiam');
body.append('prefix_booking_code', 'dolorem');
body.append('name', 'quia');
body.append('address', 'minima');
body.append('zip_code', 'fugiat');
body.append('phone', 'aut');
body.append('email_primary', 'eligendi');
body.append('website', 'fugit');
body.append('area_id', 'ut');
body.append('longitude', 'vitae');
body.append('latitude', 'reprehenderit');
body.append('google_map_url', 'https://www.spencer.com/labore-non-doloremque-esse-quia-expedita-qui');
body.append('currency_id', 'aut');
body.append('timezone_id', 'similique');
body.append('sosmed_facebook_url', 'https://effertz.com/quia-facilis-dolor-hic-nisi-expedita-modi.html');
body.append('sosmed_instagram_url', 'http://fisher.com/alias-aliquam-dolorem-cum-eos');
body.append('sosmed_youtube_url', 'http://www.thiel.org/illum-voluptatem-qui-aliquid-enim-sit-sed');
body.append('sosmed_twitter_url', 'http://ziemann.com/');
body.append('description', 'Perspiciatis voluptatem adipisci a consequatur earum est.');
body.append('coa_default_template_id', 'illum');
body.append('room_status_template', 'yes');
body.append('logo_path', document.querySelector('input[name="logo_path"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'multipart/form-data',
        ],
        'multipart' => [
            [
                'name' => 'id',
                'contents' => 'voluptatum'
            ],
            [
                'name' => 'property_group_id',
                'contents' => 'aperiam'
            ],
            [
                'name' => 'prefix_booking_code',
                'contents' => 'dolorem'
            ],
            [
                'name' => 'name',
                'contents' => 'quia'
            ],
            [
                'name' => 'address',
                'contents' => 'minima'
            ],
            [
                'name' => 'zip_code',
                'contents' => 'fugiat'
            ],
            [
                'name' => 'phone',
                'contents' => 'aut'
            ],
            [
                'name' => 'email_primary',
                'contents' => 'eligendi'
            ],
            [
                'name' => 'website',
                'contents' => 'fugit'
            ],
            [
                'name' => 'area_id',
                'contents' => 'ut'
            ],
            [
                'name' => 'longitude',
                'contents' => 'vitae'
            ],
            [
                'name' => 'latitude',
                'contents' => 'reprehenderit'
            ],
            [
                'name' => 'google_map_url',
                'contents' => 'https://www.spencer.com/labore-non-doloremque-esse-quia-expedita-qui'
            ],
            [
                'name' => 'currency_id',
                'contents' => 'aut'
            ],
            [
                'name' => 'timezone_id',
                'contents' => 'similique'
            ],
            [
                'name' => 'sosmed_facebook_url',
                'contents' => 'https://effertz.com/quia-facilis-dolor-hic-nisi-expedita-modi.html'
            ],
            [
                'name' => 'sosmed_instagram_url',
                'contents' => 'http://fisher.com/alias-aliquam-dolorem-cum-eos'
            ],
            [
                'name' => 'sosmed_youtube_url',
                'contents' => 'http://www.thiel.org/illum-voluptatem-qui-aliquid-enim-sit-sed'
            ],
            [
                'name' => 'sosmed_twitter_url',
                'contents' => 'http://ziemann.com/'
            ],
            [
                'name' => 'description',
                'contents' => 'Perspiciatis voluptatem adipisci a consequatur earum est.'
            ],
            [
                'name' => 'coa_default_template_id',
                'contents' => 'illum'
            ],
            [
                'name' => 'room_status_template',
                'contents' => 'yes'
            ],
            [
                'name' => 'logo_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php949B.tmp', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Property",
    "data": {
        "id": "4ad856b3-a493-487d-88e7-7c9d67b378bb",
        "prefix_booking_code": "nagata-booking",
        "name": "Nagata Resort And Retreat",
        "address": "Jl Bisma 20010 tegallang ubud",
        "zip_code": "80361",
        "phone": "+6281805410047",
        "email_primary": "[email protected]",
        "logo_path": "https://lokaroom-api.lc/cdn/asset/e7b2f9d5-71d8-4cc0-9b43-afcf7a80751f",
        "website": "https://nagata.com",
        "longitude": "-8.6425998",
        "latitude": "115.1770584",
        "google_map_url": "https://maps.app.goo.gl/Nruid5SG9R1ekhwR9",
        "sosmed_facebook_url": "facebok",
        "sosmed_instagram_url": "instagram",
        "sosmed_youtube_url": "youtube",
        "sosmed_twitter_url": "twiter",
        "description": null,
        "property_group": {
            "id": "d0988d1d-a3d0-4494-807d-e9777345d4a4",
            "name": "Hotel Dummy Group"
        },
        "area": {
            "id": "5f8e34b9-0207-48b5-af11-1fc90e84d0e4",
            "area_name": "Aceh Selatan",
            "region_name": "Aceh",
            "country_name": "Indonesia"
        },
        "currency": {
            "id": "99ebc31c-bcec-42a3-940c-d586c20558c9",
            "name": "Afghan afghani"
        },
        "timezone": {
            "id": "461ce532-c63f-4ada-8a3b-4a6317b8bff1",
            "name": "Africa/Abidjan"
        }
    }
}
 

Request   

POST api/v1/master/property

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: multipart/form-data

Body Parameters

id   uuid  optional    

value need if want update Property Example: voluptatum

property_group_id   string     

id of Property Groups, if not set group please not set this parameter Example: aperiam

prefix_booking_code   string  optional    

set null if not use booking prefix, if not set booking prefix please not set this parameter Example: dolorem

name   string     

Name of Property Example: quia

address   string     

Address of Property Example: minima

zip_code   string  optional    

zip code of Property Example: fugiat

phone   string  optional    

phone of Property Example: aut

email_primary   string  optional    

email_primary of Property Example: eligendi

website   string  optional    

website of Property if not have website please not set parameter Example: fugit

area_id   string  optional    

area id of Property Example: ut

longitude   string  optional    

longitude of Property Example: vitae

latitude   string  optional    

latitude of Property Example: reprehenderit

google_map_url   string  optional    

google map url of Property Example: https://www.spencer.com/labore-non-doloremque-esse-quia-expedita-qui

currency_id   string  optional    

currency uuid of Property Example: aut

timezone_id   string  optional    

timezone id of Property Example: similique

sosmed_facebook_url   string  optional    

Example: https://effertz.com/quia-facilis-dolor-hic-nisi-expedita-modi.html

sosmed_instagram_url   string  optional    

Example: http://fisher.com/alias-aliquam-dolorem-cum-eos

sosmed_youtube_url   string  optional    

Example: http://www.thiel.org/illum-voluptatem-qui-aliquid-enim-sit-sed

sosmed_twitter_url   string  optional    

Example: http://ziemann.com/

description   string  optional    

Example: Perspiciatis voluptatem adipisci a consequatur earum est.

logo_path   file  optional    

Example: C:\Users\agusb\AppData\Local\Temp\php949B.tmp

coa_default_template_id   string  optional    

use uuid COA template ID, if update data property please not set this parameter. Example: illum

room_status_template   string  optional    

The property set yes if want install default room status. Example: yes

Must be one of:
  • yes
  • no

Remove Property

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"veritatis\"
}"
const url = new URL(
    "http://localhost/api/v1/master/property/remove"
);

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

let body = {
    "id": "veritatis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'veritatis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Remove Property",
    "data": []
}
 

Request   

POST api/v1/master/property/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Property Example: veritatis

Property Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/property/details/dbf158c3-68d4-3e7b-bbf0-ffb70c3c1f27" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property/details/dbf158c3-68d4-3e7b-bbf0-ffb70c3c1f27"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/details/dbf158c3-68d4-3e7b-bbf0-ffb70c3c1f27';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Feature Detail",
    "data": {
        "id": "5e1932e0-7d6c-49e4-989c-6c6512263d8f",
        "prefix_booking_code": "hotel_dummy-",
        "name": "Hotel Dummy",
        "address": "Jl. Raya Kedampang Gg Loka No.8, Kerobokan Kelod, Kec. Kuta, Kabupaten Badung, Bali 80361",
        "zip_code": "80361",
        "phone": "0817-7689-9998",
        "email_primary": "[email protected]",
        "logo_path": null,
        "website": "https://www.dummyhotel.com",
        "longitude": "-8.597327",
        "latitude": "115.319776",
        "google_map_url": "https://goo.gl/maps/q9CqJMQFvZ7WYLdH6",
        "sosmed_facebook_url": "#",
        "sosmed_instagram_url": "#",
        "sosmed_youtube_url": "#",
        "sosmed_twitter_url": "#",
        "description": null,
        "property_group": {
            "id": "d0988d1d-a3d0-4494-807d-e9777345d4a4",
            "name": "Hotel Dummy Group"
        },
        "area": {
            "id": "c71e56f2-f74c-4913-9846-a5998a0e536f",
            "area_name": "Sukawati",
            "region_name": "Bali",
            "country_name": "Indonesia"
        },
        "currency": {
            "id": "5138063c-f71f-4433-8350-a66d2429a592",
            "name": "Indonesian rupiah"
        },
        "timezone": {
            "id": "204e5eab-01a6-43ae-b93c-983037af6577",
            "name": "Asia/Jakarta"
        }
    }
}
 

Request   

GET api/v1/master/property/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Property. Example: dbf158c3-68d4-3e7b-bbf0-ffb70c3c1f27

Option Property Input

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"group\"
}"
const url = new URL(
    "http://localhost/api/v1/master/property/dropdown/list"
);

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

let body = {
    "mode": "group"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'group',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart Of Account Template Options Founds",
    "data": [
        {
            "id": "6fe39895-7805-4e41-a241-f19b80ebf6f5",
            "name": "Full Chart Of Account"
        },
        {
            "id": "460a784a-e3d0-4fe1-b699-a55c52d03b69",
            "name": "Simple Chart Of Account"
        }
    ]
}
 

Request   

POST api/v1/master/property/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The property. Example: group

Must be one of:
  • group
  • area
  • currency
  • timezone
  • coa_template

Property Image List

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/property/image/4c307ae1-6901-3ddf-8655-e8dcadfa9ff6" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property/image/4c307ae1-6901-3ddf-8655-e8dcadfa9ff6"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/image/4c307ae1-6901-3ddf-8655-e8dcadfa9ff6';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


[
    {
        "imageUrl": "https://lokaroom-api.lc/cdn/asset/546d8d46-2f91-42f2-a09d-2cec099724dc",
        "imageName": "property-images-uokvrytrz2.jpg",
        "mime_type": "image/jpeg"
    },
    {
        "imageUrl": "https://lokaroom-api.lc/cdn/asset/d328834e-5654-462e-8075-ddb87ce40134",
        "imageName": "property-images-ygz96nnq73.jpeg",
        "mime_type": "image/jpeg"
    }
]
 

Request   

GET api/v1/master/property/image/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Property. Example: 4c307ae1-6901-3ddf-8655-e8dcadfa9ff6

Remove Property Images

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/image/delete" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"officia\"
}"
const url = new URL(
    "http://localhost/api/v1/master/property/image/delete"
);

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

let body = {
    "id": "officia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/image/delete';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'officia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "msg": "success delete image"
}
 

Request   

POST api/v1/master/property/image/delete

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Property Image Example: officia

Upload Property Images

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/image/upload" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: multipart/form-data" \
    --form "id=ut"\
    --form "image_path[]=@C:\Users\agusb\AppData\Local\Temp\php94BB.tmp" 
const url = new URL(
    "http://localhost/api/v1/master/property/image/upload"
);

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

const body = new FormData();
body.append('id', 'ut');
body.append('image_path[]', document.querySelector('input[name="image_path[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/image/upload';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'multipart/form-data',
        ],
        'multipart' => [
            [
                'name' => 'id',
                'contents' => 'ut'
            ],
            [
                'name' => 'image_path[]',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php94BB.tmp', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "msg": "success upload image"
}
 

Request   

POST api/v1/master/property/image/upload

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: multipart/form-data

Body Parameters

id   string     

uuid of Property Example: ut

image_path[]   file  optional    

Example: C:\Users\agusb\AppData\Local\Temp\php94BB.tmp

Property Email List

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/property/email/1f448036-24e5-38e4-9bce-0d029c5dfcf9" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property/email/1f448036-24e5-38e4-9bce-0d029c5dfcf9"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/email/1f448036-24e5-38e4-9bce-0d029c5dfcf9';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


[
    {
        "imageUrl": "https://lokaroom-api.lc/cdn/asset/546d8d46-2f91-42f2-a09d-2cec099724dc",
        "imageName": "property-images-uokvrytrz2.jpg",
        "mime_type": "image/jpeg"
    },
    {
        "imageUrl": "https://lokaroom-api.lc/cdn/asset/d328834e-5654-462e-8075-ddb87ce40134",
        "imageName": "property-images-ygz96nnq73.jpeg",
        "mime_type": "image/jpeg"
    }
]
 

Request   

GET api/v1/master/property/email/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Property. Example: 1f448036-24e5-38e4-9bce-0d029c5dfcf9

Remove Property Email

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/email/delete" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property/email/delete"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/email/delete';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "msg": "success delete email"
}
 

Request   

POST api/v1/master/property/email/delete

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Property Images. Example: 6c495253-f12c-3917-912e-5735e577e8bf

Add / Update Property email

Example request:
curl --request POST \
    "http://localhost/api/v1/master/property/email" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"voluptatem\",
    \"property_id\": \"est\",
    \"email\": \"[email protected]\",
    \"recepient_name\": \"sequi\"
}"
const url = new URL(
    "http://localhost/api/v1/master/property/email"
);

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

let body = {
    "id": "voluptatem",
    "property_id": "est",
    "email": "[email protected]",
    "recepient_name": "sequi"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/property/email';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'voluptatem',
            'property_id' => 'est',
            'email' => '[email protected]',
            'recepient_name' => 'sequi',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "msg": "success update email"
}
 

Request   

POST api/v1/master/property/email

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Property email, please not set if you not update your current list email Example: voluptatem

property_id   string     

uuid of Property Example: est

email   string  optional    

email of Property Example: [email protected]

recepient_name   string  optional    

recepient name of Property email Example: sequi

Property Supplier

Update Supplier Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/supplier" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: multipart/form-data" \
    --form "id=et"\
    --form "property_id=praesentium"\
    --form "name=et"\
    --form "address=deserunt"\
    --form "phone=quos"\
    --form "[email protected]"\
    --form "website=voluptatum"\
    --form "bg_color=aut"\
    --form "fg_color=adipisci"\
    --form "logo_path=@C:\Users\agusb\AppData\Local\Temp\php99D0.tmp" \
    --form "icon_path=@C:\Users\agusb\AppData\Local\Temp\php99D1.tmp" 
const url = new URL(
    "http://localhost/api/v1/property/supplier"
);

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

const body = new FormData();
body.append('id', 'et');
body.append('property_id', 'praesentium');
body.append('name', 'et');
body.append('address', 'deserunt');
body.append('phone', 'quos');
body.append('email', '[email protected]');
body.append('website', 'voluptatum');
body.append('bg_color', 'aut');
body.append('fg_color', 'adipisci');
body.append('logo_path', document.querySelector('input[name="logo_path"]').files[0]);
body.append('icon_path', document.querySelector('input[name="icon_path"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/supplier';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'multipart/form-data',
        ],
        'multipart' => [
            [
                'name' => 'id',
                'contents' => 'et'
            ],
            [
                'name' => 'property_id',
                'contents' => 'praesentium'
            ],
            [
                'name' => 'name',
                'contents' => 'et'
            ],
            [
                'name' => 'address',
                'contents' => 'deserunt'
            ],
            [
                'name' => 'phone',
                'contents' => 'quos'
            ],
            [
                'name' => 'email',
                'contents' => '[email protected]'
            ],
            [
                'name' => 'website',
                'contents' => 'voluptatum'
            ],
            [
                'name' => 'bg_color',
                'contents' => 'aut'
            ],
            [
                'name' => 'fg_color',
                'contents' => 'adipisci'
            ],
            [
                'name' => 'logo_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php99D0.tmp', 'r')
            ],
            [
                'name' => 'icon_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php99D1.tmp', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Supplier Property",
    "data": {
        "id": "bbe093cb-9554-4d63-b91e-07ffc1a4caf8",
        "property": {
            "id": "ca301eec-832f-4154-99d7-7089a0ec941f",
            "name": "Hotel Dummy"
        },
        "supplier_no": "SUP-00002",
        "name": "Supplier Sayur",
        "address": "Jl Raya Umalas, kerobokan kelod, kuta utara, badung, bali",
        "phone": "081805410047",
        "email": "[email protected]",
        "website": "supplierdaging.com",
        "logo_path": null,
        "icon_path": null,
        "bg_color": "#000000",
        "fg_color": "#ffffff"
    }
}
 

Request   

POST api/v1/property/supplier

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: multipart/form-data

Body Parameters

id   string     

uuid of Property Supplier Example: et

property_id   string     

uuid of Property Example: praesentium

name   string     

Name of Supplier Example: et

address   string  optional    

Address of Supplier Example: deserunt

phone   string  optional    

Phone of Supplier Example: quos

email   string  optional    

E-mail of Supplier Example: [email protected]

website   string  optional    

website of Supplier Example: voluptatum

logo_path   file  optional    

logo dimension must width 1350 x height 750 Example: C:\Users\agusb\AppData\Local\Temp\php99D0.tmp

icon_path   file  optional    

icon dimension ratio 1/1 Example: C:\Users\agusb\AppData\Local\Temp\php99D1.tmp

bg_color   string  optional    

position on hex color text of Supplier background Example: aut

fg_color   string  optional    

position on hex color text of Supplier Text Example: adipisci

Detail Supplier property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/supplier/detail" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"animi\",
    \"supplier_id\": \"atque\"
}"
const url = new URL(
    "http://localhost/api/v1/property/supplier/detail"
);

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

let body = {
    "property_id": "animi",
    "supplier_id": "atque"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/supplier/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'animi',
            'supplier_id' => 'atque',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Property Agent detail",
    "data": {
        "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
        "property": {
            "id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "name": "Hotel Dummy"
        },
        "agent_source_id": {
            "id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In"
        },
        "name": "Walk In",
        "address": null,
        "phone": null,
        "email": null,
        "website": null,
        "logo_path": null,
        "icon_path": null,
        "bg_color": null,
        "fg_color": null
    }
}
 

Request   

POST api/v1/property/supplier/detail

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: animi

supplier_id   string     

uuid of Property Agent Example: atque

Datatables Supplier Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/supplier/datatables" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"aut\"
}"
const url = new URL(
    "http://localhost/api/v1/property/supplier/datatables"
);

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

let body = {
    "property_id": "aut"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/supplier/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'aut',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 12,
    "recordsFiltered": 12,
    "data": [
        {
            "id": "df1c867c-7d63-4a20-9615-ec5df4a406ac",
            "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed",
            "agent_source_id": "8b8e2678-8179-40f5-973d-6824ced83590",
            "name": "Walk In",
            "address": null,
            "phone": null,
            "email": null,
            "website": null,
            "logo_path": null,
            "icon_path": null,
            "bg_color": null,
            "fg_color": null,
            "property_name": "Hotel Dummy",
            "source_name": "Walk In"
        }
    ],
    "queries": [],
    "input": {
        "property_id": "cfc616bb-3145-4a98-bb6b-0efb5c8203ed"
    }
}
 

Request   

POST api/v1/property/supplier/datatables

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: aut

Remove Supplier Property

Example request:
curl --request POST \
    "http://localhost/api/v1/property/supplier/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"fugiat\"
}"
const url = new URL(
    "http://localhost/api/v1/property/supplier/remove"
);

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

let body = {
    "id": "fugiat"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/supplier/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'fugiat',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Property Supplier",
    "data": []
}
 

Request   

POST api/v1/property/supplier/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Supplier Property Example: fugiat

Option Supplier Input

Example request:
curl --request POST \
    "http://localhost/api/v1/property/supplier/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"et\",
    \"mode\": \"source_list\"
}"
const url = new URL(
    "http://localhost/api/v1/property/supplier/dropdown/list"
);

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

let body = {
    "property_id": "et",
    "mode": "source_list"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/property/supplier/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'et',
            'mode' => 'source_list',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Category Amenities Founds",
    "data": [
        {
            "id": "312df64f-1f9a-4633-b8fe-df8d3188449d",
            "name": "Accessibility"
        },
        {
            "id": "c138c2e9-c743-488d-ad71-2a80beea9625",
            "name": "Bathroom"
        },
        {
            "id": "a7f809eb-8874-43a0-93eb-0c9a35cf59ae",
            "name": "Child and Babies"
        },
        {
            "id": "6ca029cd-d7e4-4f91-bb2d-27a4c506e7a3",
            "name": "Entertainment and Multimedia"
        },
        {
            "id": "6ff7ba3a-7c71-473f-934b-d0bfcf75ebc0",
            "name": "Food and Beverages"
        },
        {
            "id": "ffed46c7-290c-4dcf-a608-4cfaa423560e",
            "name": "Room Amenities"
        },
        {
            "id": "a38a243e-0731-4d46-99bd-a3e7ef05ae55",
            "name": "Room and Views"
        },
        {
            "id": "a3fbc0f5-44e7-4dbb-a898-34c69656a887",
            "name": "Safety"
        },
        {
            "id": "984c82da-bbf7-4dd2-b979-2a3fe49834f9",
            "name": "Services & Extras"
        }
    ]
}
 

Request   

POST api/v1/property/supplier/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: et

mode   string  optional    

The language. Example: source_list

Must be one of:
  • source_list

Room Status Default Setup

Detail Room Status

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/room-status-default-list/details/76539d17-0883-31a4-8cc6-92a61d65fa91" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/room-status-default-list/details/76539d17-0883-31a4-8cc6-92a61d65fa91"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/room-status-default-list/details/76539d17-0883-31a4-8cc6-92a61d65fa91';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Room status default detail",
    "data": {
        "id": "1afc4aef-5cc2-4d48-bf3f-42c96309a2db",
        "code": "DND",
        "name": "Do not Disturb",
        "remark": "A guest is currently occupied in the room",
        "text_color": "#ffffff",
        "background": "#c68700",
        "is_available": true
    }
}
 

Request   

GET api/v1/master/room-status-default-list/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Detail Room Status Default. Example: 76539d17-0883-31a4-8cc6-92a61d65fa91

Datatables Room Status

Example request:
curl --request POST \
    "http://localhost/api/v1/master/room-status-default-list/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/room-status-default-list/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/room-status-default-list/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 11,
    "recordsFiltered": 11,
    "data": [
        {
            "id": "1afc4aef-5cc2-4d48-bf3f-42c96309a2db",
            "code": "DND",
            "name": "Do not Disturb",
            "remark": "A guest is currently occupied in the room",
            "text_color": "#ffffff",
            "background": "#c68700",
            "is_available": true
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"room_status_defaults\" where \"room_status_defaults\".\"deleted_at\" is null",
            "bindings": [],
            "time": 2.05
        },
        {
            "query": "select * from \"room_status_defaults\" where \"room_status_defaults\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.42
        }
    ],
    "input": {
        "mode": "category"
    }
}
 

Request   

POST api/v1/master/room-status-default-list/datatables

Headers

Authorization        

Example: Bearer ***************************************

Create / Update Room Status

Example request:
curl --request POST \
    "http://localhost/api/v1/master/room-status-default-list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"rerum\",
    \"code\": \"eligendi\",
    \"name\": \"natus\",
    \"remark\": \"rerum\",
    \"text_color\": \"fugiat\",
    \"background\": \"vel\",
    \"is_available\": true
}"
const url = new URL(
    "http://localhost/api/v1/master/room-status-default-list"
);

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

let body = {
    "id": "rerum",
    "code": "eligendi",
    "name": "natus",
    "remark": "rerum",
    "text_color": "fugiat",
    "background": "vel",
    "is_available": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/room-status-default-list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'rerum',
            'code' => 'eligendi',
            'name' => 'natus',
            'remark' => 'rerum',
            'text_color' => 'fugiat',
            'background' => 'vel',
            'is_available' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update Room status default",
    "data": {
        "id": "90284ad8-37fa-4113-8055-0e933f975899",
        "code": "TES",
        "name": "Tes Status Room Default update",
        "remark": "Tes Status Room Default remark update",
        "text_color": "#FFFFFF",
        "background": "#000000",
        "is_available": true
    }
}
 

Request   

POST api/v1/master/room-status-default-list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string  optional    

if you want update the data please set uuid Room Status Default Example: rerum

code   string     

Code of Room Status Example: eligendi

name   string     

Name of Room Status Example: natus

remark   string     

Description of Room Status Example: rerum

text_color   string  optional    

position on hex color text of Room Status Example: fugiat

background   string  optional    

position on hex color background of Room Status Example: vel

is_available   boolean  optional    

position on is available of Room Status on allotment Example: true

Remove Room Status

Example request:
curl --request POST \
    "http://localhost/api/v1/master/room-status-default-list/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"quibusdam\"
}"
const url = new URL(
    "http://localhost/api/v1/master/room-status-default-list/remove"
);

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

let body = {
    "id": "quibusdam"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/room-status-default-list/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'quibusdam',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Remove Room Status Default",
    "data": []
}
 

Request   

POST api/v1/master/room-status-default-list/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Room Status Example: quibusdam

Setup Feature

Feature Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/feature/details/f2f61c95-86b2-3c0d-97f8-f8aa518bf953" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/feature/details/f2f61c95-86b2-3c0d-97f8-f8aa518bf953"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature/details/f2f61c95-86b2-3c0d-97f8-f8aa518bf953';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Feature Detail",
    "data": {
        "id": "11808366-f178-4924-a10a-457816950e4b",
        "name": "Reservation",
        "meta_access_content": [
            "can_list",
            "can_view",
            "can_add",
            "can_edit"
        ],
        "category": {
            "id": "081650bb-ca78-4112-94e5-ff2c9b9ccffb",
            "name": "General Settings"
        }
    }
}
 

Request   

GET api/v1/master/feature/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Feature Category. Example: f2f61c95-86b2-3c0d-97f8-f8aa518bf953

Datatables Feature

Example request:
curl --request POST \
    "http://localhost/api/v1/master/feature/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/feature/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 28,
    "recordsFiltered": 28,
    "data": [
        {
            "id": "e1679215-52d3-49b2-b369-09e1496f759a",
            "name": "System Features",
            "feature_category": "System Setup",
            "category_id": "796b8a28-e184-49e8-be8c-19fe898e0439"
        },
        {
            "id": "cf9c2145-0575-43fa-b883-906187fe87e6",
            "name": "System Properties",
            "feature_category": "System Setup",
            "category_id": "796b8a28-e184-49e8-be8c-19fe898e0439"
        },
        {
            "id": "aee65784-bc21-4fb4-aebf-da794c21c152",
            "name": "System Users",
            "feature_category": "System Setup",
            "category_id": "796b8a28-e184-49e8-be8c-19fe898e0439"
        },
        {
            "id": "e5278177-69be-4f49-85e6-9dadcd3e0cb5",
            "name": "Room Status Default",
            "feature_category": "System Setup",
            "category_id": "796b8a28-e184-49e8-be8c-19fe898e0439"
        },
        {
            "id": "ef079c02-9e1f-4bd6-9c6b-b8df2e084409",
            "name": "Amenities List Default",
            "feature_category": "System Setup",
            "category_id": "796b8a28-e184-49e8-be8c-19fe898e0439"
        },
        {
            "id": "c89b2f14-77d7-4f9d-9902-860828e2a531",
            "name": "Chart Of Account Default",
            "feature_category": "System Setup",
            "category_id": "796b8a28-e184-49e8-be8c-19fe898e0439"
        },
        {
            "id": "e365e67c-38c5-4e35-9902-0bc41314f5aa",
            "name": "Language Settings",
            "feature_category": "General Settings",
            "category_id": "ca3e1eae-d52b-4708-b10f-6a169ae062ef"
        },
        {
            "id": "1055f92f-79cc-4a48-bfd7-b45583e53592",
            "name": "Currency Settings",
            "feature_category": "General Settings",
            "category_id": "ca3e1eae-d52b-4708-b10f-6a169ae062ef"
        },
        {
            "id": "15ae0de3-b225-4eef-aa61-6363b0b65952",
            "name": "Timezone Settings",
            "feature_category": "General Settings",
            "category_id": "ca3e1eae-d52b-4708-b10f-6a169ae062ef"
        },
        {
            "id": "1128682d-4b65-4c42-a669-0af6834da5d4",
            "name": "Country Settings",
            "feature_category": "General Settings",
            "category_id": "ca3e1eae-d52b-4708-b10f-6a169ae062ef"
        },
        {
            "id": "a8d83be1-e9a7-48ee-8ece-d9b85330ef69",
            "name": "Region Settings",
            "feature_category": "General Settings",
            "category_id": "ca3e1eae-d52b-4708-b10f-6a169ae062ef"
        },
        {
            "id": "72e4fa06-7a4c-4174-960a-56e99013e1dd",
            "name": "Area Settings",
            "feature_category": "General Settings",
            "category_id": "ca3e1eae-d52b-4708-b10f-6a169ae062ef"
        },
        {
            "id": "4e500f6d-a1a9-40b5-94ac-2c5e9467859d",
            "name": "Room Amenities List",
            "feature_category": "Rooms Setup",
            "category_id": "ea87f6ce-0943-478c-8487-ed54e5f74d71"
        },
        {
            "id": "a7ebb4f1-b0bb-49cf-8cdb-cf76e444f753",
            "name": "Room Status List",
            "feature_category": "Rooms Setup",
            "category_id": "ea87f6ce-0943-478c-8487-ed54e5f74d71"
        },
        {
            "id": "f2e1e3eb-dc44-442d-9692-7de0ed0752c5",
            "name": "Room Bed Type List",
            "feature_category": "Rooms Setup",
            "category_id": "ea87f6ce-0943-478c-8487-ed54e5f74d71"
        },
        {
            "id": "8b8c9b65-90b1-4552-99a7-e4d351d3abeb",
            "name": "Room Type",
            "feature_category": "Rooms Setup",
            "category_id": "ea87f6ce-0943-478c-8487-ed54e5f74d71"
        },
        {
            "id": "851cecd1-618d-4210-b4c5-99c8d87d1fcc",
            "name": "Rooms List",
            "feature_category": "Rooms Setup",
            "category_id": "ea87f6ce-0943-478c-8487-ed54e5f74d71"
        },
        {
            "id": "5edbdcdc-0a0b-41d0-9e7e-359a1d060992",
            "name": "Room Rates",
            "feature_category": "Rooms Setup",
            "category_id": "ea87f6ce-0943-478c-8487-ed54e5f74d71"
        },
        {
            "id": "a942fc45-1e20-4163-ae74-28e2d5975234",
            "name": "Reservation",
            "feature_category": "Front Office",
            "category_id": "13efa3ea-6460-484a-b5fa-ce60fceaeb73"
        },
        {
            "id": "e266ea00-5e1a-4ea2-b2b7-bff12285d085",
            "name": "Room Available",
            "feature_category": "Front Office",
            "category_id": "13efa3ea-6460-484a-b5fa-ce60fceaeb73"
        },
        {
            "id": "5d2a339a-4d38-44d5-b7a2-e6e4e50a8899",
            "name": "Night Audit",
            "feature_category": "Front Office",
            "category_id": "13efa3ea-6460-484a-b5fa-ce60fceaeb73"
        },
        {
            "id": "35195a52-30ed-4268-99c4-f4bf612d5153",
            "name": "Guest Profile",
            "feature_category": "Front Office",
            "category_id": "13efa3ea-6460-484a-b5fa-ce60fceaeb73"
        },
        {
            "id": "d1e504cc-d1a5-4031-86c6-b1d4a00a9a26",
            "name": "Guest List Daily",
            "feature_category": "Front Office",
            "category_id": "13efa3ea-6460-484a-b5fa-ce60fceaeb73"
        },
        {
            "id": "01c4381a-a87d-4882-80cd-34dc70ca06f6",
            "name": "Guest Payment",
            "feature_category": "Front Office",
            "category_id": "13efa3ea-6460-484a-b5fa-ce60fceaeb73"
        },
        {
            "id": "4bb6ed49-36bb-4ba4-ab4c-c6c61e426c01",
            "name": "Chart Of Account",
            "feature_category": "Back Office",
            "category_id": "45923ada-0ef0-4d61-a063-87785a2d10ea"
        },
        {
            "id": "b98d6249-98c1-4f11-9cbb-074a1e8d1f61",
            "name": "Tax And Service List",
            "feature_category": "Back Office",
            "category_id": "45923ada-0ef0-4d61-a063-87785a2d10ea"
        },
        {
            "id": "46526085-2782-4dfc-9739-0527c39cdd2f",
            "name": "Agent Property List",
            "feature_category": "Back Office",
            "category_id": "45923ada-0ef0-4d61-a063-87785a2d10ea"
        },
        {
            "id": "ebff526a-c417-42ab-91ad-bda1bc440e75",
            "name": "Payment Options List",
            "feature_category": "Back Office",
            "category_id": "45923ada-0ef0-4d61-a063-87785a2d10ea"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"features\" where \"features\".\"deleted_at\" is null",
            "bindings": [],
            "time": 1.9
        },
        {
            "query": "select * from \"features\" where \"features\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.55
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 2.02
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.5
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.43
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.37
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.38
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                1
            ],
            "time": 0.57
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                2
            ],
            "time": 0.47
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                2
            ],
            "time": 0.41
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                2
            ],
            "time": 0.37
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                2
            ],
            "time": 0.37
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                2
            ],
            "time": 0.76
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                2
            ],
            "time": 0.7
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                3
            ],
            "time": 0.6
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                3
            ],
            "time": 0.5
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                3
            ],
            "time": 0.51
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                3
            ],
            "time": 0.4
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                3
            ],
            "time": 0.37
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                3
            ],
            "time": 0.37
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                4
            ],
            "time": 0.36
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                4
            ],
            "time": 0.37
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                4
            ],
            "time": 0.37
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                4
            ],
            "time": 0.37
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                4
            ],
            "time": 0.36
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                4
            ],
            "time": 0.36
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                5
            ],
            "time": 0.36
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                5
            ],
            "time": 0.36
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                5
            ],
            "time": 0.36
        },
        {
            "query": "select * from \"feature_categories\" where \"feature_categories\".\"id\" = ? and \"feature_categories\".\"id\" is not null and \"feature_categories\".\"deleted_at\" is null limit 1",
            "bindings": [
                5
            ],
            "time": 0.81
        }
    ],
    "input": []
}
 

Request   

POST api/v1/master/feature/datatables

Headers

Authorization        

Example: Bearer ***************************************

Add / Update Feature

Example request:
curl --request POST \
    "http://localhost/api/v1/master/feature" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"similique\",
    \"category_id\": 4,
    \"meta_access_content\": [
        []
    ],
    \"id\": \"eum\"
}"
const url = new URL(
    "http://localhost/api/v1/master/feature"
);

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

let body = {
    "name": "similique",
    "category_id": 4,
    "meta_access_content": [
        []
    ],
    "id": "eum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'similique',
            'category_id' => 4,
            'meta_access_content' => [
                [],
            ],
            'id' => 'eum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update Feature Data",
    "data": {
        "id": "11808366-f178-4924-a10a-457816950e4b",
        "name": "Reservation",
        "meta_access_content": [
            "can_list",
            "can_view",
            "can_add",
            "can_edit"
        ],
        "category": {
            "id": "081650bb-ca78-4112-94e5-ff2c9b9ccffb",
            "name": "General Settings"
        }
    }
}
 

Request   

POST api/v1/master/feature

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

name   string     

the name of feature Example: similique

category_id   integer     

valid of feature category id Example: 4

meta_access_content   object[]  optional    

requeired. Examp:["can_list","can_view","can_add","can_edit"]

id   uuid  optional    

value need if want update name of feature Example: eum

Remove Feature

Example request:
curl --request POST \
    "http://localhost/api/v1/master/feature/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"qui\"
}"
const url = new URL(
    "http://localhost/api/v1/master/feature/remove"
);

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

let body = {
    "id": "qui"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'qui',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Feature",
    "data": []
}
 

Request   

POST api/v1/master/feature/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Feature Example: qui

Option Editor feature Input

Example request:
curl --request POST \
    "http://localhost/api/v1/master/feature/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"category\",
    \"query\": \"quia\"
}"
const url = new URL(
    "http://localhost/api/v1/master/feature/dropdown/list"
);

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

let body = {
    "mode": "category",
    "query": "quia"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'category',
            'query' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Timezone Founds",
    "data": [
        {
            "id": "59af78ff-d35f-40e4-8220-ff67af5d07a3",
            "name": "Africa/Abidjan"
        },
        {
            "id": "f311336a-f1ee-4c7b-9e1e-7d6e61c67e41",
            "name": "Africa/Accra"
        },
        {
            "id": "a9454d6b-abe6-459b-8b97-e710df56c993",
            "name": "Africa/Addis_Ababa"
        }
    ]
}
 

Request   

POST api/v1/master/feature/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: category

Must be one of:
  • category
query   string  optional    

this using for in case option have filter Example: quia

Setup Feature Category

Feature Category Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/feature-category/details/563a9371-17cb-38b1-86b8-b6655de26d84" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/feature-category/details/563a9371-17cb-38b1-86b8-b6655de26d84"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature-category/details/563a9371-17cb-38b1-86b8-b6655de26d84';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success get Feature Category Detail",
    "data": {
        "id": "9814fe6b-1e6a-4f67-8b16-892a18ccfa9e",
        "name": "General Settings",
        "feature": [
            {
                "id": "269bed18-0f45-43da-ab94-6c4e8bf0d2a1",
                "name": "Language Settings"
            },
            {
                "id": "0841438a-ee90-4a9b-bb3f-e653a08c9363",
                "name": "Currency Settings"
            },
            {
                "id": "8c05e2fc-0f09-414d-953e-f57b80d5d798",
                "name": "Timezone Settings"
            },
            {
                "id": "4f4f4b1e-16fb-4227-854c-9fd439c7df22",
                "name": "Country Settings"
            },
            {
                "id": "b29c1382-db2a-4db7-8e89-30ccdf520830",
                "name": "Region Settings"
            },
            {
                "id": "c5ae438b-1e5a-4c8d-a6c0-2988b70ee922",
                "name": "Area Settings"
            }
        ]
    }
}
 

Request   

GET api/v1/master/feature-category/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of Feature Category. Example: 563a9371-17cb-38b1-86b8-b6655de26d84

Datatables Feature Category

Example request:
curl --request POST \
    "http://localhost/api/v1/master/feature-category/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/feature-category/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature-category/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 6,
    "recordsFiltered": 6,
    "data": [
        {
            "id": "0689f1a6-0fc3-401d-a689-bb3b0f37bc84",
            "name": "System Setup"
        },
        {
            "id": "9814fe6b-1e6a-4f67-8b16-892a18ccfa9e",
            "name": "General Settings"
        },
        {
            "id": "fd38d08f-7926-4f38-95e2-bb69bdc00b20",
            "name": "Rooms Setup"
        },
        {
            "id": "7485a2dc-ada0-4bdf-894f-9f58c867e7ae",
            "name": "Front Office"
        },
        {
            "id": "50ad4d03-740f-436d-ba28-5bb11c2cd657",
            "name": "Back Office"
        },
        {
            "id": "6f675faa-dbd1-420f-9620-e73eb2b8046a",
            "name": "Others"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"feature_categories\"",
            "bindings": [],
            "time": 1.9
        },
        {
            "query": "select \"id\", \"uuid\", \"name\" from \"feature_categories\"",
            "bindings": [],
            "time": 0.47
        }
    ],
    "input": []
}
 

Request   

POST api/v1/master/feature-category/datatables

Headers

Authorization        

Example: Bearer ***************************************

Update Feature Category

Example request:
curl --request POST \
    "http://localhost/api/v1/master/feature-category" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"odit\",
    \"id\": \"eos\"
}"
const url = new URL(
    "http://localhost/api/v1/master/feature-category"
);

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

let body = {
    "name": "odit",
    "id": "eos"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature-category';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'odit',
            'id' => 'eos',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update Feature Caategory Data",
    "data": {
        "id": "7b4e994f-55b3-4585-95aa-7c84eb373035",
        "name": "Test Feature Category Data edit",
        "feature": []
    }
}
 

Request   

POST api/v1/master/feature-category

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

name   string     

the name of feature category Example: odit

id   string  optional    

uuid if need update or remove name of feature category Example: eos

Remove Feature Category

Example request:
curl --request POST \
    "http://localhost/api/v1/master/feature-category/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"natus\"
}"
const url = new URL(
    "http://localhost/api/v1/master/feature-category/remove"
);

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

let body = {
    "id": "natus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/feature-category/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'natus',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success remove Feature Category",
    "data": []
}
 

Request   

POST api/v1/master/feature-category/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of Feature Category Example: natus

Setup User Category Feature Default

Category Feature Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/user-category-feature-default/details/59d70d99-f572-3e6b-b8d6-801d7650562e" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/user-category-feature-default/details/59d70d99-f572-3e6b-b8d6-801d7650562e"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/user-category-feature-default/details/59d70d99-f572-3e6b-b8d6-801d7650562e';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "User Category Feature Found",
    "data": {
        "id": "133bb77d-8c09-44e2-a485-6314a1525b33",
        "name": "Corporate Admin",
        "feature_list": [
            {
                "id": "ff5bfbae-3fba-4c19-b232-7fd0be304d22",
                "name": "Properties",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit"
                ]
            },
            {
                "id": "1a7ad5d6-8228-466a-97e8-89930e864ad2",
                "name": "Users",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit"
                ]
            },
            {
                "id": "0c415b9a-c407-4f31-b30b-08a064abf4c2",
                "name": "Room Amenities List",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "47c27a0e-f7f2-4953-b214-6b4a25abc221",
                "name": "Room Status List",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "7d2f46c4-2589-4c7e-a6bd-151e2dc6fbba",
                "name": "Room Bed Type List",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "95c44f89-fc12-47a7-b267-eb1d74c47571",
                "name": "Room Type",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "13a6db9c-7c15-4b99-a4bf-209856459d61",
                "name": "Rooms List",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "9e261752-53f1-4842-a2a2-5d065b270e92",
                "name": "Room Rates",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "11808366-f178-4924-a10a-457816950e4b",
                "name": "Reservation",
                "meta_access": [
                    "can_list",
                    "can_reservation_chart",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "f2ccb171-6658-44b5-8dbc-69e73993df92",
                "name": "Room Available",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "4ad4e368-eb1b-4ed3-b43d-4bbc5c7cf5ef",
                "name": "Night Audit",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "6f9edce2-82a1-477e-b664-66d59dbf84c0",
                "name": "Guest Profile",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "28be0f1b-9be9-41bf-903a-8636d8ff0c11",
                "name": "Guest List Daily",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "829072fb-8605-435b-bede-f3acb937a074",
                "name": "Guest Payment",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "04adb9e4-73ee-45f8-91d8-e5c8455e7db0",
                "name": "Chart Of Account",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "c2277eb7-3a07-49b0-a47e-b3e1ecb91aa3",
                "name": "Tax And Service List",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "daf52f12-7e9a-497c-b928-9fa76786ecd8",
                "name": "Agent Property List",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            },
            {
                "id": "8e1c9feb-b165-4b62-81f8-84a9da48cef2",
                "name": "Payment Options List",
                "meta_access": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            }
        ]
    }
}
 

Request   

GET api/v1/master/user-category-feature-default/details/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of User Category. Example: 59d70d99-f572-3e6b-b8d6-801d7650562e

Update User Category Feature Defaults

Example request:
curl --request POST \
    "http://localhost/api/v1/master/user-category-feature-default" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"user_category_id\": 14,
    \"feature_list\": [
        {
            \"id\": \"b0df0b1b-5776-4074-bb2b-0a4263962449\",
            \"name\": \"Language Settings\",
            \"meta_access\": {
                \"can_list\": false,
                \"can_view\": false,
                \"can_add\": false,
                \"can_edit\": false,
                \"can_delete\": false
            }
        },
        {
            \"id\": \"0663f8b2-f815-4826-a68b-8606f0475c00\",
            \"name\": \"Currency Settings\",
            \"meta_access\": {
                \"can_list\": false,
                \"can_view\": false,
                \"can_add\": false,
                \"can_edit\": false,
                \"can_delete\": false
            }
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/master/user-category-feature-default"
);

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

let body = {
    "user_category_id": 14,
    "feature_list": [
        {
            "id": "b0df0b1b-5776-4074-bb2b-0a4263962449",
            "name": "Language Settings",
            "meta_access": {
                "can_list": false,
                "can_view": false,
                "can_add": false,
                "can_edit": false,
                "can_delete": false
            }
        },
        {
            "id": "0663f8b2-f815-4826-a68b-8606f0475c00",
            "name": "Currency Settings",
            "meta_access": {
                "can_list": false,
                "can_view": false,
                "can_add": false,
                "can_edit": false,
                "can_delete": false
            }
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/user-category-feature-default';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (($p = &\Symfony\Component\VarExporter\Internal\Registry::$prototypes)['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
            ],
            null,
            [
                'stdClass' => [
                    'id' => [
                        'b0df0b1b-5776-4074-bb2b-0a4263962449',
                        2 => '0663f8b2-f815-4826-a68b-8606f0475c00',
                    ],
                    'name' => [
                        'Language Settings',
                        2 => 'Currency Settings',
                    ],
                    'meta_access' => [
                        $o[1],
                        2 => $o[3],
                    ],
                    'can_list' => [
                        1 => false,
                        3 => false,
                    ],
                    'can_view' => [
                        1 => false,
                        3 => false,
                    ],
                    'can_add' => [
                        1 => false,
                        3 => false,
                    ],
                    'can_edit' => [
                        1 => false,
                        3 => false,
                    ],
                    'can_delete' => [
                        1 => false,
                        3 => false,
                    ],
                ],
            ],
            [
                'user_category_id' => 14,
                'feature_list' => [
                    $o[0],
                    $o[2],
                ],
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update User Category Feature Default",
    "data": {
        "id": "2ec686f7-f2d6-4762-8adf-4565ab89dd4e",
        "name": "Property User",
        "feature_list": [
            {
                "id": "2d0b8954-c8e1-4460-b0f3-d5ab153d487c",
                "name": "Language Settings",
                "meta_access": [
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            }
        ]
    }
}
 

Request   

POST api/v1/master/user-category-feature-default

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

user_category_id   integer     

valid of User category id Example: 14

feature_list   object[]  optional    

list of feature

Option Input User Category Feature Defaults

Example request:
curl --request POST \
    "http://localhost/api/v1/master/user-category-feature-default/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"featurelist\",
    \"id\": \"incidunt\"
}"
const url = new URL(
    "http://localhost/api/v1/master/user-category-feature-default/dropdown/list"
);

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

let body = {
    "mode": "featurelist",
    "id": "incidunt"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/master/user-category-feature-default/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'featurelist',
            'id' => 'incidunt',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"message":"Feature Option List Founds","data":[{"id":"66c3f94d-acbd-41fc-9b7c-89759573323e","name":"General Settings","feature_list":[{"id":"465dffb2-b3f0-4d7d-8b44-b220bd271377","name":"Language Settings","meta_access":{"can_list":false,"can_view":false,"can_add":false,"can_edit":false,"can_delete":false}},{"id":"adb5ea32-9488-411f-9627-7f4498708384","name":"Currency Settings","meta_access":{"can_list":false,"can_view":false,"can_add":false,"can_edit":false,"can_delete":false}},{"id":"558910e7-6973-40c9-bdeb-111083d7c4d1","name":"Timezone Settings","meta_access":{"can_list":false,"can_view":false,"can_add":false,"can_edit":false,"can_delete":false}},{"id":"b94f8433-fb85-4cde-984e-f0b0e69c04cb","name":"Country Settings","meta_access":{"can_list":false,"can_view":false,"can_add":false,"can_edit":false,"can_delete":false}},{"id":"f1fbe937-445e-4a69-992f-a2a2d8f26995","name":"Region Settings","meta_access":{"can_list":false,"can_view":false,"can_add":false,"can_edit":false,"can_delete":false}},{"id":"e0c623f1-84fb-4d7d-b50b-97910ae333dd","name":"Area Settings","meta_access":{"can_list":false,"can_view":false,"can_add":false,"can_edit":false,"can_delete":false}}]},]}
 

Request   

POST api/v1/master/user-category-feature-default/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: featurelist

Must be one of:
  • category
  • featurelist
id   string  optional    

uuid User Category required if mode featurelist Example: incidunt

System Dashboard

Dashboard Detail

Example request:
curl --request POST \
    "http://localhost/api/v1/misc/dashboard/data" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"all\",
    \"property_id\": \"eveniet\"
}"
const url = new URL(
    "http://localhost/api/v1/misc/dashboard/data"
);

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

let body = {
    "mode": "all",
    "property_id": "eveniet"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/misc/dashboard/data';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'all',
            'property_id' => 'eveniet',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Timezone Founds",
    "data": [
        {
            "id": "59af78ff-d35f-40e4-8220-ff67af5d07a3",
            "name": "Africa/Abidjan"
        },
        {
            "id": "f311336a-f1ee-4c7b-9e1e-7d6e61c67e41",
            "name": "Africa/Accra"
        },
        {
            "id": "a9454d6b-abe6-459b-8b97-e710df56c993",
            "name": "Africa/Addis_Ababa"
        }
    ]
}
 

Request   

POST api/v1/misc/dashboard/data

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: all

Must be one of:
  • all
property_id   string     

uuid of Property Example: eveniet

Dashboard Detail Light

Example request:
curl --request POST \
    "http://localhost/api/v1/misc/dashboard/data-light" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"all\",
    \"property_id\": \"exercitationem\"
}"
const url = new URL(
    "http://localhost/api/v1/misc/dashboard/data-light"
);

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

let body = {
    "mode": "all",
    "property_id": "exercitationem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/misc/dashboard/data-light';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'all',
            'property_id' => 'exercitationem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Timezone Founds",
    "data": [
        {
            "id": "59af78ff-d35f-40e4-8220-ff67af5d07a3",
            "name": "Africa/Abidjan"
        },
        {
            "id": "f311336a-f1ee-4c7b-9e1e-7d6e61c67e41",
            "name": "Africa/Accra"
        },
        {
            "id": "a9454d6b-abe6-459b-8b97-e710df56c993",
            "name": "Africa/Addis_Ababa"
        }
    ]
}
 

Request   

POST api/v1/misc/dashboard/data-light

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The language. Example: all

Must be one of:
  • all
property_id   string     

uuid of Property Example: exercitationem

User Authentication

Get User Authentication Token

Example request:
curl --request POST \
    "http://localhost/api/v1/auth/gettoken" \
    --header "Content-Type: application/json" \
    --data "{
    \"email\": \"\'[email protected]\'\",
    \"password\": \"9)hF;~:\\\"2N#{>f\"
}"
const url = new URL(
    "http://localhost/api/v1/auth/gettoken"
);

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

let body = {
    "email": "'[email protected]'",
    "password": "9)hF;~:\"2N#{>f"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/auth/gettoken';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'email' => '\'[email protected]\'',
            'password' => '9)hF;~:"2N#{>f',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": true,
    "message": "Successfully get token access",
    "token": "4|zXDYofbLV9hgotCyc3TzNnx6wWnFuQNbCckDZGe8"
}
 

Example response (401):


{
    "status": false,
    "message": "Email & Password does not match with our record."
}
 

Request   

POST api/v1/auth/gettoken

Headers

Content-Type        

Example: application/json

Body Parameters

email   string     

The email of the user. Example: '[email protected]'

password   string      f" data-component="body">

The password of the user. Example: 9)hF;~:"2N#{>f

User Google 2 FA Validation

Example request:
curl --request POST \
    "http://localhost/api/v1/auth/google2fa/validation" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"email\": \"\'[email protected]\'\",
    \"secret\": \"itaque\"
}"
const url = new URL(
    "http://localhost/api/v1/auth/google2fa/validation"
);

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

let body = {
    "email": "'[email protected]'",
    "secret": "itaque"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/auth/google2fa/validation';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'email' => '\'[email protected]\'',
            'secret' => 'itaque',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 5
x-ratelimit-remaining: 3
access-control-allow-origin: *
 

{
    "success": false,
    "message": "Sorry You Unauthenticated Access.."
}
 

Request   

POST api/v1/auth/google2fa/validation

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

email   string     

The email of the user. Example: '[email protected]'

secret   string     

The google OTP Code of the user. Example: itaque

User Check Validation token

Example request:
curl --request GET \
    --get "http://localhost/api/v1/auth/checkvalidtoken" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/auth/checkvalidtoken"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

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

Example response (200):


{
    "status": true,
    "message": "success access via token"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/auth/checkvalidtoken

Headers

Authorization        

Example: Bearer ***************************************

User Enable / Disable google2fa

Example request:
curl --request POST \
    "http://localhost/api/v1/auth/google2fa" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"status\": 12
}"
const url = new URL(
    "http://localhost/api/v1/auth/google2fa"
);

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

let body = {
    "status": 12
};

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

Example response (200):


{
    "status": true,
    "secret": "ROXTGX2RYNKYB7L5",
    "appname": "Loka Room",
    "qr_code_url": "otpauth://totp/Loka%20Room:master%40lokaroom.net?secret=ROXTGX2RYNKYB7L5&issuer=Loka%20Room&algorithm=SHA1&digits=6&period=30"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/auth/google2fa

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

status   integer     

value 1 for enable value 0 for disable Example: 12

Get User Authenticated Detail

Example request:
curl --request GET \
    --get "http://localhost/api/v1/auth/getaccount" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/auth/getaccount"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

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

Example response (200):


{
    "message": "Success get user Account login",
    "data": {
        "detail": {
            "name": "Master User Api",
            "shortname": "Master Use...",
            "phone": null,
            "category": "System Admin",
            "timezone": null,
            "language": null,
            "email": "[email protected]",
            "google2fa_secret": null,
            "google2fa_is_active": false,
            "properties": [
                {
                    "id": "31db6935-0f23-4939-b31f-d4bd1a1af828",
                    "name": "Hotel Dummy"
                }
            ],
            "features": {
                "language_settings": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "currency_settings": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "timezone_settings": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "country_settings": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "region_settings": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "area_settings": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "features_categories": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "user_category_features_defaults": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "properties": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "users": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "room_status_default": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "amenities_list_default": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "chart_of_account_default": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "chart_of_account_template": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "room_amenities_list": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "room_status_list": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "room_bed_type_list": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "room_type": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "rooms_list": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "room_rates": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "reservation": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "room_available": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "night_audit": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "guest_profile": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "guest_list_daily": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "guest_payment": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "chart_of_account": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "tax_and_service_list": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "agent_property_list": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ],
                "payment_options_list": [
                    "can_list",
                    "can_view",
                    "can_add",
                    "can_edit",
                    "can_delete"
                ]
            }
        }
    }
}
 

Request   

GET api/v1/auth/getaccount

Headers

Authorization        

Example: Bearer ***************************************

active Current Property

Example request:
curl --request POST \
    "http://localhost/api/v1/auth/active-current-property" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"blanditiis\"
}"
const url = new URL(
    "http://localhost/api/v1/auth/active-current-property"
);

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

let body = {
    "property_id": "blanditiis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/auth/active-current-property';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'blanditiis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": true,
    "secret": "ROXTGX2RYNKYB7L5",
    "appname": "Loka Room",
    "qr_code_url": "otpauth://totp/Loka%20Room:master%40lokaroom.net?secret=ROXTGX2RYNKYB7L5&issuer=Loka%20Room&algorithm=SHA1&digits=6&period=30"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request   

POST api/v1/auth/active-current-property

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: blanditiis

User Setup

Datatables User

Example request:
curl --request POST \
    "http://localhost/api/v1/user/datatables" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/datatables"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 1,
    "recordsFiltered": 1,
    "data": [
        {
            "id": "7342b731-c0fc-44c0-a55e-73f7ecc9958b",
            "name": "Master User Api",
            "email": "[email protected]",
            "user_googletwofa": "Not Active",
            "user_category": "System Admin",
            "user_status": "Active"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"users\" where \"users\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.74
        },
        {
            "query": "select * from \"users\" where \"users\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.51
        },
        {
            "query": "select * from \"user_categories\" where \"user_categories\".\"id\" = ? and \"user_categories\".\"id\" is not null limit 1",
            "bindings": [
                1
            ],
            "time": 1.9
        }
    ],
    "input": []
}
 

Request   

POST api/v1/user/datatables

Headers

Authorization        

Example: Bearer ***************************************

List User

Example request:
curl --request POST \
    "http://localhost/api/v1/user/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"enim\",
    \"user_search\": \"animi\",
    \"is_active\": \"true\",
    \"page_no\": 16
}"
const url = new URL(
    "http://localhost/api/v1/user/list"
);

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

let body = {
    "property_id": "enim",
    "user_search": "animi",
    "is_active": "true",
    "page_no": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'enim',
            'user_search' => 'animi',
            'is_active' => 'true',
            'page_no' => 16,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "draw": 0,
    "recordsTotal": 1,
    "recordsFiltered": 1,
    "data": [
        {
            "id": "7342b731-c0fc-44c0-a55e-73f7ecc9958b",
            "name": "Master User Api",
            "email": "[email protected]",
            "user_googletwofa": "Not Active",
            "user_category": "System Admin",
            "user_status": "Active"
        }
    ],
    "queries": [
        {
            "query": "select count(*) as aggregate from \"users\" where \"users\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.74
        },
        {
            "query": "select * from \"users\" where \"users\".\"deleted_at\" is null",
            "bindings": [],
            "time": 0.51
        },
        {
            "query": "select * from \"user_categories\" where \"user_categories\".\"id\" = ? and \"user_categories\".\"id\" is not null limit 1",
            "bindings": [
                1
            ],
            "time": 1.9
        }
    ],
    "input": []
}
 

Request   

POST api/v1/user/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: enim

user_search   string     

query of name or email. Example: animi

is_active   string  optional    

required. Example: true

Must be one of:
  • true
  • false
page_no   integer  optional    

number of pagination Example: 16

Option User list Filter

Example request:
curl --request POST \
    "http://localhost/api/v1/user/list/dropdown/filter" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"group\"
}"
const url = new URL(
    "http://localhost/api/v1/user/list/dropdown/filter"
);

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

let body = {
    "mode": "group"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/list/dropdown/filter';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'group',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart Of Account Template Options Founds",
    "data": [
        {
            "id": "6fe39895-7805-4e41-a241-f19b80ebf6f5",
            "name": "Full Chart Of Account"
        },
        {
            "id": "460a784a-e3d0-4fe1-b699-a55c52d03b69",
            "name": "Simple Chart Of Account"
        }
    ]
}
 

Request   

POST api/v1/user/list/dropdown/filter

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The property. Example: group

Must be one of:
  • property

Detail User

Example request:
curl --request GET \
    --get "http://localhost/api/v1/user/detail/01e9e2a2-f556-3a2d-84e4-f68a897dead5" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"et\"
}"
const url = new URL(
    "http://localhost/api/v1/user/detail/01e9e2a2-f556-3a2d-84e4-f68a897dead5"
);

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

let body = {
    "id": "et"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/detail/01e9e2a2-f556-3a2d-84e4-f68a897dead5';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'et',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "f17e0571-1c0e-45bf-a67f-0160613c5e23",
    "name": "Master User Api",
    "email": "[email protected]",
    "google2fa_is_active": true,
    "google2fa_secret": "ROXTGX2RYNKYB7L5",
    "is_active": true,
    "user_categories": {
        "id": 1,
        "name": "System Admin"
    },
    "features": [
        {
            "id": 1,
            "feature_name": "System Features"
        },
        {
            "id": 2,
            "feature_name": "System Properties"
        },
        {
            "id": 3,
            "feature_name": "System Users"
        }
    ],
    "properties": [],
    "detail": []
}
 

Request   

GET api/v1/user/detail/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

URL Parameters

uuid   string     

Example: 01e9e2a2-f556-3a2d-84e4-f68a897dead5

Body Parameters

id   string     

UUID of User Example: et

Create / Update User

Example request:
curl --request POST \
    "http://localhost/api/v1/user/editor" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"impedit\",
    \"name\": \"nihil\",
    \"email\": \"[email protected]\",
    \"password\": \"-*v|LNw{>?Ol\",
    \"user_category_id\": \"molestiae\",
    \"status\": false,
    \"phone\": \"quam\",
    \"timezone_id\": 7,
    \"language_id\": 11
}"
const url = new URL(
    "http://localhost/api/v1/user/editor"
);

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

let body = {
    "id": "impedit",
    "name": "nihil",
    "email": "[email protected]",
    "password": "-*v|LNw{>?Ol",
    "user_category_id": "molestiae",
    "status": false,
    "phone": "quam",
    "timezone_id": 7,
    "language_id": 11
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/editor';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'impedit',
            'name' => 'nihil',
            'email' => '[email protected]',
            'password' => '-*v|LNw{>?Ol',
            'user_category_id' => 'molestiae',
            'status' => false,
            'phone' => 'quam',
            'timezone_id' => 7,
            'language_id' => 11,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update User",
    "data": {
        "id": "deb3c983-a749-4f61-8257-3d2b3683efd5",
        "name": "Agus Bawa Nadi Putra update",
        "email": "[email protected]",
        "google2fa_is_active": false,
        "is_active": true,
        "user_categories": {
            "id": 1,
            "name": "System Admin"
        },
        "phone": "+6281805410047",
        "language": {
            "id": 1,
            "name": "Afrikaans"
        },
        "timezone": {
            "id": 1,
            "name": "Africa/Abidjan"
        },
        "features": [],
        "properties": [],
        "detail": {
            "id": 4,
            "user_id": 5,
            "email_verification_code": null,
            "email_verified_at": null,
            "phone": "eyJpdiI6IlkvR1h4aVI0OEtjQTFIR2F4NTVDd2c9PSIsInZhbHVlIjoicCtUR1FYeGZiemxxOEIyYWhVQS9OQT09IiwibWFjIjoiMmRmNmQ5YmY5ZGNiY2Q5Y2Q4MGYxZTcwY2NlNzJlNGZhNDA3YzA5ZGExZTU3MjBlZjlhZGRlYzMyM2ZmN2EwOCIsInRhZyI6IiJ9",
            "phone_verified_at": null,
            "timezone_id": 1,
            "language_id": 1,
            "created_at": "2024-05-31 15:57:57",
            "updated_at": "2024-05-31 15:57:57",
            "deleted_at": null
        }
    }
}
 

Request   

POST api/v1/user/editor

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

The uuid of the user, if want update the data user please add di parameter. Example: impedit

name   string     

name of User Example: nihil

email   string     

email of User Example: [email protected]

password   string     

Password of User, set this parameter if want change the password Example: -*v|LNw{>?Ol

user_category_id   string     

uuid user categories of User Example: molestiae

status   boolean     

status of User if true is active and false deactive Example: false

phone   string     

phone number of User use format +620890090990 Example: quam

timezone_id   integer     

timezone uuid of User Example: 7

language_id   integer     

language uuid of User Example: 11

Option User Editor Input

Example request:
curl --request POST \
    "http://localhost/api/v1/user/editor/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"mode\": \"group\"
}"
const url = new URL(
    "http://localhost/api/v1/user/editor/dropdown/list"
);

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

let body = {
    "mode": "group"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/editor/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'mode' => 'group',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Chart Of Account Template Options Founds",
    "data": [
        {
            "id": "6fe39895-7805-4e41-a241-f19b80ebf6f5",
            "name": "Full Chart Of Account"
        },
        {
            "id": "460a784a-e3d0-4fe1-b699-a55c52d03b69",
            "name": "Simple Chart Of Account"
        }
    ]
}
 

Request   

POST api/v1/user/editor/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

mode   string  optional    

The property. Example: group

Must be one of:
  • category
  • timezone
  • language

Remove User

Example request:
curl --request POST \
    "http://localhost/api/v1/user/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": true
}"
const url = new URL(
    "http://localhost/api/v1/user/remove"
);

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

let body = {
    "id": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Remove Property",
    "data": []
}
 

Request   

POST api/v1/user/remove

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   boolean     

The uuid of the user. Example: true

Update User Feature

Example request:
curl --request POST \
    "http://localhost/api/v1/user/update/feature" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"vitae\",
    \"feature_list\": [
        {
            \"id\": \"b0df0b1b-5776-4074-bb2b-0a4263962449\",
            \"name\": \"Language Settings\",
            \"meta_access\": {
                \"can_list\": false,
                \"can_view\": false,
                \"can_add\": false,
                \"can_edit\": false,
                \"can_delete\": false
            }
        },
        {
            \"id\": \"0663f8b2-f815-4826-a68b-8606f0475c00\",
            \"name\": \"Currency Settings\",
            \"meta_access\": {
                \"can_list\": false,
                \"can_view\": false,
                \"can_add\": false,
                \"can_edit\": false,
                \"can_delete\": false
            }
        }
    ]
}"
const url = new URL(
    "http://localhost/api/v1/user/update/feature"
);

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

let body = {
    "id": "vitae",
    "feature_list": [
        {
            "id": "b0df0b1b-5776-4074-bb2b-0a4263962449",
            "name": "Language Settings",
            "meta_access": {
                "can_list": false,
                "can_view": false,
                "can_add": false,
                "can_edit": false,
                "can_delete": false
            }
        },
        {
            "id": "0663f8b2-f815-4826-a68b-8606f0475c00",
            "name": "Currency Settings",
            "meta_access": {
                "can_list": false,
                "can_view": false,
                "can_add": false,
                "can_edit": false,
                "can_delete": false
            }
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/update/feature';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (($p = &\Symfony\Component\VarExporter\Internal\Registry::$prototypes)['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
                clone $p['stdClass'],
                clone $p['stdClass'],
                clone $p['stdClass'],
            ],
            null,
            [
                'stdClass' => [
                    'id' => [
                        'b0df0b1b-5776-4074-bb2b-0a4263962449',
                        2 => '0663f8b2-f815-4826-a68b-8606f0475c00',
                    ],
                    'name' => [
                        'Language Settings',
                        2 => 'Currency Settings',
                    ],
                    'meta_access' => [
                        $o[1],
                        2 => $o[3],
                    ],
                    'can_list' => [
                        1 => false,
                        3 => false,
                    ],
                    'can_view' => [
                        1 => false,
                        3 => false,
                    ],
                    'can_add' => [
                        1 => false,
                        3 => false,
                    ],
                    'can_edit' => [
                        1 => false,
                        3 => false,
                    ],
                    'can_delete' => [
                        1 => false,
                        3 => false,
                    ],
                ],
            ],
            [
                'id' => 'vitae',
                'feature_list' => [
                    $o[0],
                    $o[2],
                ],
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success update User Category Feature Default",
    "data": {
        "id": "5fdf1e50-c125-4db1-bcbc-a02439054a39",
        "name": "Agus Bawa Nadi Putra",
        "user_categories_id": "30738b69-5a51-43cc-a678-d3a0301d82fe",
        "feature_list": [
            {
                "id": "9c8918af-9db2-4f04-b51d-7bdb2c62661e",
                "name": "General Settings",
                "feature_list": [
                    {
                        "id": "a95bf984-8842-4e7f-807e-e8462bb28cdf",
                        "name": "Language Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": false,
                            "can_edit": true,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "c901bdea-94d6-413b-83bf-db8d72384182",
                        "name": "Currency Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": false,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "6ebda416-fed0-42df-a475-b031e60033b8",
                        "name": "Timezone Settings",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "57793c0f-b525-4d71-9649-9d00e0aa9c1b",
                        "name": "Country Settings",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "2ba3ade1-3ddc-4f62-b7c6-5bc4f317bc46",
                        "name": "Region Settings",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "4a81c333-0277-4a78-8759-b778c7a7a860",
                        "name": "Area Settings",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    }
                ]
            },
            {
                "id": "7d49fc3c-e41e-487b-beb2-f764caf21a58",
                "name": "System Setup",
                "feature_list": [
                    {
                        "id": "22251f3b-ff7d-4c86-9657-a96e0e90e2e1",
                        "name": "Features Categories",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "0cff66cc-d0ce-4b6c-9723-f46d5e8fca29",
                        "name": "User Category Features Defaults",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "2ab7ad36-3f81-4863-a578-3657b2d5d153",
                        "name": "Properties Settings",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "e306a2c6-d101-46f0-bf85-0868e3201ea9",
                        "name": "Users Settings",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "cb04628f-381f-47bc-b8ad-75c7ea8e8bba",
                        "name": "Room Status Default",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "23486475-dd2e-434b-bb6e-2f5ddab042dd",
                        "name": "Amenities List Default",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "daeca237-fbe2-4a87-90b9-7b3aea028846",
                        "name": "Chart Of Account Default",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "6311cf9f-e96e-4d83-be03-3da126200157",
                        "name": "Chart Of Account Template",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    }
                ]
            },
            {
                "id": "feaeee14-cda1-435c-af28-88e5465c7884",
                "name": "Property Setup",
                "feature_list": [
                    {
                        "id": "1bcacebd-d3c7-4288-b012-d1894ddc43a1",
                        "name": "Room Amenities List",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "4bc141ca-07ea-4c31-a50c-9c848fdc95cb",
                        "name": "Room Status List",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "510d1643-582b-42f4-bcc1-a94cff3e29a9",
                        "name": "Room Bed Type List",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "d815b27b-c4b0-472e-8b4c-1e2b98877e03",
                        "name": "Room Type",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "34fb3ff1-3d48-4a6e-aaf3-242a43d26b0e",
                        "name": "Rooms List",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "1c686e55-aa5c-4879-a276-e15abb103b36",
                        "name": "Room Rates",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    }
                ]
            },
            {
                "id": "9c189c4e-165b-4107-895f-c3c216e0022f",
                "name": "Front Office",
                "feature_list": [
                    {
                        "id": "1ebc1e9b-8077-481c-b434-643bbb8c2e58",
                        "name": "Reservation",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "4bdbbea0-224c-4713-bae8-6eab7b99918c",
                        "name": "Room Available",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "e53c8448-19b3-434d-99d8-2bfb3d00fce0",
                        "name": "Night Audit",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "80a2d514-de3b-48a8-b6c1-7f7f46a6bab7",
                        "name": "Guest Profile",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "8b5351c6-f64a-4d54-81d6-0665a0859153",
                        "name": "Guest List Daily",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "298b6766-3472-4415-8ff6-671760e15636",
                        "name": "Guest Payment",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    }
                ]
            },
            {
                "id": "fc711b7f-050d-4a79-86d6-76f29bcceb6c",
                "name": "Back Office",
                "feature_list": [
                    {
                        "id": "de19014a-4c5a-496a-9781-4ccbb240369d",
                        "name": "Chart Of Account",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "91b8e800-fedc-4e49-9724-a462dd3b2525",
                        "name": "Tax And Service List",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "f9bfa10c-a87c-4c25-b1df-11cd6cb12550",
                        "name": "Agent Property List",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    },
                    {
                        "id": "d7496a07-7d69-4332-ac6a-a5f3ddfc0d9c",
                        "name": "Payment Options List",
                        "meta_access": {
                            "can_list": false,
                            "can_view": false,
                            "can_add": false,
                            "can_edit": false,
                            "can_delete": false
                        }
                    }
                ]
            }
        ]
    }
}
 

Request   

POST api/v1/user/update/feature

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of User Example: vitae

feature_list   object[]  optional    

list of feature

List User features

Example request:
curl --request GET \
    --get "http://localhost/api/v1/user/feature/detail/147f9dd2-72f8-3ff0-a910-d27e4f6da3cf" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/feature/detail/147f9dd2-72f8-3ff0-a910-d27e4f6da3cf"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/feature/detail/147f9dd2-72f8-3ff0-a910-d27e4f6da3cf';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get User Feature",
    "data": {
        "id": "69fe1eb9-d32d-41b7-be3b-832f16b5cd8d",
        "name": "Master User Api",
        "user_categories_id": "5dc3b91d-c354-40d0-b747-6ee4b8a3d992",
        "feature_list": [
            {
                "id": "9c8918af-9db2-4f04-b51d-7bdb2c62661e",
                "name": "General Settings",
                "feature_list": [
                    {
                        "id": "a95bf984-8842-4e7f-807e-e8462bb28cdf",
                        "name": "Language Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "c901bdea-94d6-413b-83bf-db8d72384182",
                        "name": "Currency Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "6ebda416-fed0-42df-a475-b031e60033b8",
                        "name": "Timezone Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "57793c0f-b525-4d71-9649-9d00e0aa9c1b",
                        "name": "Country Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "2ba3ade1-3ddc-4f62-b7c6-5bc4f317bc46",
                        "name": "Region Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "4a81c333-0277-4a78-8759-b778c7a7a860",
                        "name": "Area Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    }
                ]
            },
            {
                "id": "7d49fc3c-e41e-487b-beb2-f764caf21a58",
                "name": "System Setup",
                "feature_list": [
                    {
                        "id": "22251f3b-ff7d-4c86-9657-a96e0e90e2e1",
                        "name": "Features Categories",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "0cff66cc-d0ce-4b6c-9723-f46d5e8fca29",
                        "name": "User Category Features Defaults",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "2ab7ad36-3f81-4863-a578-3657b2d5d153",
                        "name": "Properties Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "e306a2c6-d101-46f0-bf85-0868e3201ea9",
                        "name": "Users Settings",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "cb04628f-381f-47bc-b8ad-75c7ea8e8bba",
                        "name": "Room Status Default",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "23486475-dd2e-434b-bb6e-2f5ddab042dd",
                        "name": "Amenities List Default",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "daeca237-fbe2-4a87-90b9-7b3aea028846",
                        "name": "Chart Of Account Default",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "6311cf9f-e96e-4d83-be03-3da126200157",
                        "name": "Chart Of Account Template",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    }
                ]
            },
            {
                "id": "feaeee14-cda1-435c-af28-88e5465c7884",
                "name": "Property Setup",
                "feature_list": [
                    {
                        "id": "1bcacebd-d3c7-4288-b012-d1894ddc43a1",
                        "name": "Room Amenities List",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "4bc141ca-07ea-4c31-a50c-9c848fdc95cb",
                        "name": "Room Status List",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "510d1643-582b-42f4-bcc1-a94cff3e29a9",
                        "name": "Room Bed Type List",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "d815b27b-c4b0-472e-8b4c-1e2b98877e03",
                        "name": "Room Type",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "34fb3ff1-3d48-4a6e-aaf3-242a43d26b0e",
                        "name": "Rooms List",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "1c686e55-aa5c-4879-a276-e15abb103b36",
                        "name": "Room Rates",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    }
                ]
            },
            {
                "id": "9c189c4e-165b-4107-895f-c3c216e0022f",
                "name": "Front Office",
                "feature_list": [
                    {
                        "id": "1ebc1e9b-8077-481c-b434-643bbb8c2e58",
                        "name": "Reservation",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "4bdbbea0-224c-4713-bae8-6eab7b99918c",
                        "name": "Room Available",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "e53c8448-19b3-434d-99d8-2bfb3d00fce0",
                        "name": "Night Audit",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "80a2d514-de3b-48a8-b6c1-7f7f46a6bab7",
                        "name": "Guest Profile",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "8b5351c6-f64a-4d54-81d6-0665a0859153",
                        "name": "Guest List Daily",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "298b6766-3472-4415-8ff6-671760e15636",
                        "name": "Guest Payment",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    }
                ]
            },
            {
                "id": "fc711b7f-050d-4a79-86d6-76f29bcceb6c",
                "name": "Back Office",
                "feature_list": [
                    {
                        "id": "de19014a-4c5a-496a-9781-4ccbb240369d",
                        "name": "Chart Of Account",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "91b8e800-fedc-4e49-9724-a462dd3b2525",
                        "name": "Tax And Service List",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "f9bfa10c-a87c-4c25-b1df-11cd6cb12550",
                        "name": "Agent Property List",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    },
                    {
                        "id": "d7496a07-7d69-4332-ac6a-a5f3ddfc0d9c",
                        "name": "Payment Options List",
                        "meta_access": {
                            "can_list": true,
                            "can_view": true,
                            "can_add": true,
                            "can_edit": true,
                            "can_delete": true
                        }
                    }
                ]
            }
        ]
    }
}
 

Request   

GET api/v1/user/feature/detail/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of User. Example: 147f9dd2-72f8-3ff0-a910-d27e4f6da3cf

Update User Property

Example request:
curl --request POST \
    "http://localhost/api/v1/user/editor/property" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"reiciendis\",
    \"property_list\": [
        \"1dce3106-2edb-4c56-956d-3987785080c2\",
        \"70b6a5bd-fa17-4072-ac38-8dcb81f16f81\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/user/editor/property"
);

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

let body = {
    "id": "reiciendis",
    "property_list": [
        "1dce3106-2edb-4c56-956d-3987785080c2",
        "70b6a5bd-fa17-4072-ac38-8dcb81f16f81"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/editor/property';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'reiciendis',
            'property_list' => [
                '1dce3106-2edb-4c56-956d-3987785080c2',
                '70b6a5bd-fa17-4072-ac38-8dcb81f16f81',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update User",
    "data": {
        "id": "deb3c983-a749-4f61-8257-3d2b3683efd5",
        "name": "Agus Bawa Nadi Putra update",
        "email": "[email protected]",
        "google2fa_is_active": false,
        "is_active": true,
        "user_categories": {
            "id": 1,
            "name": "System Admin"
        },
        "phone": "+6281805410047",
        "language": {
            "id": 1,
            "name": "Afrikaans"
        },
        "timezone": {
            "id": 1,
            "name": "Africa/Abidjan"
        },
        "features": [],
        "properties": [
            {
                "id": "3aae9ad7-19cf-4cdc-959f-dd43558c712c",
                "name": "Hotel Dummy"
            }
        ],
        "detail": {
            "id": 4,
            "user_id": 5,
            "email_verification_code": null,
            "email_verified_at": null,
            "phone": "eyJpdiI6IlkvR1h4aVI0OEtjQTFIR2F4NTVDd2c9PSIsInZhbHVlIjoicCtUR1FYeGZiemxxOEIyYWhVQS9OQT09IiwibWFjIjoiMmRmNmQ5YmY5ZGNiY2Q5Y2Q4MGYxZTcwY2NlNzJlNGZhNDA3YzA5ZGExZTU3MjBlZjlhZGRlYzMyM2ZmN2EwOCIsInRhZyI6IiJ9",
            "phone_verified_at": null,
            "timezone_id": 1,
            "language_id": 1,
            "created_at": "2024-05-31 15:57:57",
            "updated_at": "2024-05-31 15:57:57",
            "deleted_at": null
        }
    }
}
 

Request   

POST api/v1/user/editor/property

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of User Example: reiciendis

property_list   string[]  optional    

This is a feature list uuid.

Option User Property Editor Input

Example request:
curl --request POST \
    "http://localhost/api/v1/user/editor/property/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": false
}"
const url = new URL(
    "http://localhost/api/v1/user/editor/property/dropdown/list"
);

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

let body = {
    "id": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/editor/property/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Properties Options Founds",
    "data": [
        {
            "id": "3aae9ad7-19cf-4cdc-959f-dd43558c712c",
            "name": "Hotel Dummy"
        }
    ]
}
 

Request   

POST api/v1/user/editor/property/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   boolean     

The uuid of the user. Example: false

List User Property

Example request:
curl --request GET \
    --get "http://localhost/api/v1/user/property/lists/e4dec77a-d5b5-3603-a681-030432e022a9" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/property/lists/e4dec77a-d5b5-3603-a681-030432e022a9"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/property/lists/e4dec77a-d5b5-3603-a681-030432e022a9';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Property",
    "data": [
        {
            "uuid": "3aae9ad7-19cf-4cdc-959f-dd43558c712c",
            "name": "Hotel Dummy"
        }
    ]
}
 

Request   

GET api/v1/user/property/lists/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

Example: e4dec77a-d5b5-3603-a681-030432e022a9

id   string     

uuid of User. Example: sunt

Update User Property Groups

Example request:
curl --request POST \
    "http://localhost/api/v1/user/editor/propertygroups" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"amet\",
    \"property_group_list\": [
        \"1dce3106-2edb-4c56-956d-3987785080c2\",
        \"70b6a5bd-fa17-4072-ac38-8dcb81f16f81\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/user/editor/propertygroups"
);

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

let body = {
    "id": "amet",
    "property_group_list": [
        "1dce3106-2edb-4c56-956d-3987785080c2",
        "70b6a5bd-fa17-4072-ac38-8dcb81f16f81"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/editor/propertygroups';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'amet',
            'property_group_list' => [
                '1dce3106-2edb-4c56-956d-3987785080c2',
                '70b6a5bd-fa17-4072-ac38-8dcb81f16f81',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Update User",
    "data": {
        "id": "deb3c983-a749-4f61-8257-3d2b3683efd5",
        "name": "Agus Bawa Nadi Putra update",
        "email": "[email protected]",
        "google2fa_is_active": false,
        "is_active": true,
        "user_categories": {
            "id": 1,
            "name": "System Admin"
        },
        "phone": "+6281805410047",
        "language": {
            "id": 1,
            "name": "Afrikaans"
        },
        "timezone": {
            "id": 1,
            "name": "Africa/Abidjan"
        },
        "features": [],
        "properties": [
            {
                "id": "3aae9ad7-19cf-4cdc-959f-dd43558c712c",
                "name": "Hotel Dummy"
            }
        ],
        "detail": {
            "id": 4,
            "user_id": 5,
            "email_verification_code": null,
            "email_verified_at": null,
            "phone": "eyJpdiI6IlkvR1h4aVI0OEtjQTFIR2F4NTVDd2c9PSIsInZhbHVlIjoicCtUR1FYeGZiemxxOEIyYWhVQS9OQT09IiwibWFjIjoiMmRmNmQ5YmY5ZGNiY2Q5Y2Q4MGYxZTcwY2NlNzJlNGZhNDA3YzA5ZGExZTU3MjBlZjlhZGRlYzMyM2ZmN2EwOCIsInRhZyI6IiJ9",
            "phone_verified_at": null,
            "timezone_id": 1,
            "language_id": 1,
            "created_at": "2024-05-31 15:57:57",
            "updated_at": "2024-05-31 15:57:57",
            "deleted_at": null
        }
    }
}
 

Request   

POST api/v1/user/editor/propertygroups

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of User Example: amet

property_group_list   string[]  optional    

This is a feature list uuid.

Option User Property Group Editor Input

Example request:
curl --request POST \
    "http://localhost/api/v1/user/editor/propertygroups/dropdown/list" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": false
}"
const url = new URL(
    "http://localhost/api/v1/user/editor/propertygroups/dropdown/list"
);

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

let body = {
    "id": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/editor/propertygroups/dropdown/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Properties Groups Options Founds",
    "data": [
        {
            "id": "3aae9ad7-19cf-4cdc-959f-dd43558c712c",
            "name": "Hotel Dummy"
        }
    ]
}
 

Request   

POST api/v1/user/editor/propertygroups/dropdown/list

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   boolean     

The uuid of the user. Example: false

List User Property Groups

Example request:
curl --request GET \
    --get "http://localhost/api/v1/user/propertygroups/lists/653f86ba-05b8-347d-a834-1e3746c855b1" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/propertygroups/lists/653f86ba-05b8-347d-a834-1e3746c855b1"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/propertygroups/lists/653f86ba-05b8-347d-a834-1e3746c855b1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Success Get List Property",
    "data": [
        {
            "uuid": "3aae9ad7-19cf-4cdc-959f-dd43558c712c",
            "name": "Hotel Dummy"
        }
    ]
}
 

Request   

GET api/v1/user/propertygroups/lists/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

Example: 653f86ba-05b8-347d-a834-1e3746c855b1

id   string     

uuid of User. Example: nesciunt

Update User Ip Whitelist

Example request:
curl --request POST \
    "http://localhost/api/v1/user/update/ipwhitelist" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"doloribus\",
    \"ip_list\": [
        \"127.0.0.1\",
        \"127.0.0.2\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/user/update/ipwhitelist"
);

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

let body = {
    "id": "doloribus",
    "ip_list": [
        "127.0.0.1",
        "127.0.0.2"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/update/ipwhitelist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'doloribus',
            'ip_list' => [
                '127.0.0.1',
                '127.0.0.2',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": "65665b19-80f8-4333-b228-46786077101c",
    "name": "Agus Bawa Nadi Putra",
    "email": "[email protected]",
    "google2fa_is_active": false,
    "is_active": true,
    "user_categories": {
        "id": 1,
        "name": "System Admin"
    },
    "features": [
        {
            "id": 1,
            "feature_name": "System Features"
        },
        {
            "id": 3,
            "feature_name": "System Users"
        }
    ],
    "properties": [
        {
            "id": "1dce3106-2edb-4c56-956d-3987785080c2",
            "name": "Satria Cotages"
        },
        {
            "id": "70b6a5bd-fa17-4072-ac38-8dcb81f16f81",
            "name": "Satria Cotages"
        }
    ],
    "detail": []
}
 

Request   

POST api/v1/user/update/ipwhitelist

Headers

Authorization        

Example: Bearer ***************************************

Content-Type        

Example: application/json

Body Parameters

id   string     

uuid of User Example: doloribus

ip_list   string[]  optional    

This is a ip list uuid.

List User Ip Whitelist

Example request:
curl --request GET \
    --get "http://localhost/api/v1/user/ipwhitelist/lists/8f6b55b8-e61d-3350-a64f-4ab53c5debf7" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/ipwhitelist/lists/8f6b55b8-e61d-3350-a64f-4ab53c5debf7"
);

const headers = {
    "Authorization": "Bearer ***************************************",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/ipwhitelist/lists/8f6b55b8-e61d-3350-a64f-4ab53c5debf7';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


[
    {
        "key": "1-system-setup",
        "label": "System Setup",
        "active_all": true,
        "feature": [
            {
                "id": 1,
                "name": "System Features",
                "is_active": true
            },
            {
                "id": 2,
                "name": "System Properties",
                "is_active": true
            },
            {
                "id": 3,
                "name": "System Users",
                "is_active": true
            }
        ]
    }
]
 

Request   

GET api/v1/user/ipwhitelist/lists/{uuid}

Headers

Authorization        

Example: Bearer ***************************************

URL Parameters

uuid   string     

uuid of User. Example: 8f6b55b8-e61d-3350-a64f-4ab53c5debf7