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/feef82c4-836a-3e92-a1db-dddbb0cc7f61" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/amenities/details/feef82c4-836a-3e92-a1db-dddbb0cc7f61"
);

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/feef82c4-836a-3e92-a1db-dddbb0cc7f61';
$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: feef82c4-836a-3e92-a1db-dddbb0cc7f61

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\": \"beatae\",
    \"name\": \"amet\",
    \"description\": \"Dolor saepe nostrum ullam.\"
}"
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": "beatae",
    "name": "amet",
    "description": "Dolor saepe nostrum ullam."
};

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' => 'beatae',
            'name' => 'amet',
            'description' => 'Dolor saepe nostrum ullam.',
        ],
    ]
);
$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: beatae

name   string     

Name of Amenities Example: amet

description   string     

Description of Amenities Example: Dolor saepe nostrum ullam.

Remove Amenities

Example request:
curl --request POST \
    "http://localhost/api/v1/master/amenities/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"sint\"
}"
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": "sint"
};

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' => 'sint',
        ],
    ]
);
$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: sint

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\": \"ut\",
    \"reference_no\": \"ut\",
    \"start_date\": \"ut\",
    \"end_date\": \"sapiente\",
    \"page_no\": 16
}"
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": "ut",
    "reference_no": "ut",
    "start_date": "ut",
    "end_date": "sapiente",
    "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/property/backoffice/account-payable/aging-list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'ut',
            'reference_no' => 'ut',
            'start_date' => 'ut',
            'end_date' => 'sapiente',
            'page_no' => 16,
        ],
    ]
);
$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: ut

reference_no   string  optional    

no of refrence trx Example: ut

start_date   string  optional    

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

end_date   string  optional    

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

page_no   integer  optional    

number of pagination Example: 16

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\": \"tempora\",
    \"mode\": \"ap_aging_list\",
    \"reference_no\": \"qui\",
    \"start_date\": \"quam\",
    \"end_date\": \"quos\",
    \"page_no\": 3,
    \"list_current_reconcile\": \"accusantium\"
}"
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": "tempora",
    "mode": "ap_aging_list",
    "reference_no": "qui",
    "start_date": "quam",
    "end_date": "quos",
    "page_no": 3,
    "list_current_reconcile": "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-payable/payment/dropdownoptionlist';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'tempora',
            'mode' => 'ap_aging_list',
            'reference_no' => 'qui',
            'start_date' => 'quam',
            'end_date' => 'quos',
            'page_no' => 3,
            'list_current_reconcile' => '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-payable/payment/dropdownoptionlist

Headers

Authorization        

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

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: tempora

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: qui

start_date   string  optional    

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

end_date   string  optional    

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

page_no   integer  optional    

number of pagination Example: 3

list_current_reconcile   array.  optional    

Example: accusantium

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\": \"aut\",
    \"ap_payment_id\": \"accusantium\"
}"
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": "aut",
    "ap_payment_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/backoffice/account-payable/payment/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'aut',
            'ap_payment_id' => 'accusantium',
        ],
    ]
);
$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: aut

ap_payment_id   string     

uuid of Trx Property Ap Payment Example: accusantium

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\": \"qui\",
    \"reference_no\": \"asperiores\",
    \"start_date\": \"sed\",
    \"end_date\": \"sunt\",
    \"page_no\": 8
}"
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": "qui",
    "reference_no": "asperiores",
    "start_date": "sed",
    "end_date": "sunt",
    "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/payment/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'qui',
            'reference_no' => 'asperiores',
            'start_date' => 'sed',
            'end_date' => 'sunt',
            '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/payment/list

Headers

Authorization        

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

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property. Example: qui

reference_no   string  optional    

no of refrence trx Example: asperiores

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: sunt

page_no   integer  optional    

number of pagination Example: 8

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\": \"et\",
    \"remark\": \"aut\",
    \"trx_date\": \"explicabo\",
    \"list_journal\": \"est\"
}"
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": "et",
    "remark": "aut",
    "trx_date": "explicabo",
    "list_journal": "est"
};

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' => 'et',
            'remark' => 'aut',
            'trx_date' => 'explicabo',
            'list_journal' => '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/property/backoffice/account-payable/journal/manual

Headers

Authorization        

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

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: et

remark   string     

remark of AP Payment Example: aut

trx_date   string  optional    

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

list_journal   array.  optional    

Example: est

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\": \"dolorem\",
    \"mode\": \"coa\",
    \"coa_search\": \"inventore\",
    \"default_value\": \"dolorum\"
}"
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": "dolorem",
    "mode": "coa",
    "coa_search": "inventore",
    "default_value": "dolorum"
};

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' => 'dolorem',
            'mode' => 'coa',
            'coa_search' => 'inventore',
            'default_value' => 'dolorum',
        ],
    ]
);
$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: dolorem

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
  • journal_type
coa_search   string     

name of coa finding Example: inventore

default_value   string     

name of coa default value Example: dolorum

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\": \"maiores\",
    \"start_date\": \"dolores\",
    \"end_date\": \"dolorum\",
    \"page_no\": 11
}"
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": "maiores",
    "start_date": "dolores",
    "end_date": "dolorum",
    "page_no": 11
};

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' => 'maiores',
            'start_date' => 'dolores',
            'end_date' => 'dolorum',
            'page_no' => 11,
        ],
    ]
);
$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: maiores

start_date   string  optional    

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

end_date   string  optional    

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

page_no   integer  optional    

number of pagination Example: 11

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\": \"optio\",
    \"reference_no\": \"dolorum\",
    \"start_date\": \"id\",
    \"end_date\": \"et\",
    \"page_no\": 11
}"
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": "optio",
    "reference_no": "dolorum",
    "start_date": "id",
    "end_date": "et",
    "page_no": 11
};

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' => 'optio',
            'reference_no' => 'dolorum',
            'start_date' => 'id',
            'end_date' => 'et',
            'page_no' => 11,
        ],
    ]
);
$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: optio

reference_no   string  optional    

no of refrence trx Example: dolorum

start_date   string  optional    

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

end_date   string  optional    

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

page_no   integer  optional    

number of pagination Example: 11

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\": \"et\",
    \"mode\": \"ar_aging_list\",
    \"reference_no\": \"hic\",
    \"start_date\": \"non\",
    \"end_date\": \"aliquid\",
    \"page_no\": 20,
    \"list_current_reconcile\": \"harum\"
}"
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": "et",
    "mode": "ar_aging_list",
    "reference_no": "hic",
    "start_date": "non",
    "end_date": "aliquid",
    "page_no": 20,
    "list_current_reconcile": "harum"
};

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' => 'et',
            'mode' => 'ar_aging_list',
            'reference_no' => 'hic',
            'start_date' => 'non',
            'end_date' => 'aliquid',
            'page_no' => 20,
            'list_current_reconcile' => 'harum',
        ],
    ]
);
$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: et

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: hic

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: aliquid

page_no   integer  optional    

number of pagination Example: 20

list_current_reconcile   array.  optional    

Example: harum

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\": \"minima\",
    \"ar_payment_id\": \"consequuntur\"
}"
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": "minima",
    "ar_payment_id": "consequuntur"
};

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' => 'minima',
            'ar_payment_id' => 'consequuntur',
        ],
    ]
);
$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: minima

ar_payment_id   string     

uuid of Trx Property Ar Payment Example: consequuntur

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\": \"ratione\",
    \"reference_no\": \"occaecati\",
    \"start_date\": \"itaque\",
    \"end_date\": \"aut\",
    \"page_no\": 4
}"
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": "ratione",
    "reference_no": "occaecati",
    "start_date": "itaque",
    "end_date": "aut",
    "page_no": 4
};

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' => 'ratione',
            'reference_no' => 'occaecati',
            'start_date' => 'itaque',
            'end_date' => 'aut',
            'page_no' => 4,
        ],
    ]
);
$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: ratione

reference_no   string  optional    

no of refrence trx Example: occaecati

start_date   string  optional    

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

end_date   string  optional    

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

page_no   integer  optional    

number of pagination Example: 4

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\": \"quo\",
    \"remark\": \"et\",
    \"trx_date\": \"hic\",
    \"list_journal\": \"enim\"
}"
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": "quo",
    "remark": "et",
    "trx_date": "hic",
    "list_journal": "enim"
};

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' => 'quo',
            'remark' => 'et',
            'trx_date' => 'hic',
            'list_journal' => 'enim',
        ],
    ]
);
$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: quo

remark   string     

remark of AR Payment Example: et

trx_date   string  optional    

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

list_journal   array.  optional    

Example: enim

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\": \"labore\",
    \"mode\": \"coa\",
    \"coa_search\": \"et\",
    \"default_value\": \"est\"
}"
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": "labore",
    "mode": "coa",
    "coa_search": "et",
    "default_value": "est"
};

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' => 'labore',
            'mode' => 'coa',
            'coa_search' => 'et',
            'default_value' => 'est',
        ],
    ]
);
$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: labore

mode   string  optional    

The language. Example: coa

Must be one of:
  • coa
  • journal_type
coa_search   string     

name of coa finding Example: et

default_value   string     

name of coa default value Example: est

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\": \"distinctio\",
    \"start_date\": \"dolorem\",
    \"end_date\": \"dicta\",
    \"page_no\": 20
}"
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": "distinctio",
    "start_date": "dolorem",
    "end_date": "dicta",
    "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/property/backoffice/account-receivable/journal/manual/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'distinctio',
            'start_date' => 'dolorem',
            'end_date' => 'dicta',
            'page_no' => 20,
        ],
    ]
);
$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: distinctio

start_date   string  optional    

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

end_date   string  optional    

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

page_no   integer  optional    

number of pagination Example: 20

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\": \"laborum\"
}"
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": "laborum"
};

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' => 'laborum',
        ],
    ]
);
$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: laborum

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\": \"dignissimos\",
    \"coa_search\": \"voluptatem\",
    \"default_value\": \"maxime\"
}"
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": "dignissimos",
    "coa_search": "voluptatem",
    "default_value": "maxime"
};

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' => 'dignissimos',
            'coa_search' => 'voluptatem',
            'default_value' => 'maxime',
        ],
    ]
);
$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: dignissimos

coa_search   string     

name of coa finding Example: voluptatem

default_value   string     

name of coa default value Example: maxime

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\": \"temporibus\",
    \"discount_option_id\": \"aut\"
}"
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": "temporibus",
    "discount_option_id": "aut"
};

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' => 'temporibus',
            'discount_option_id' => 'aut',
        ],
    ]
);
$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: temporibus

discount_option_id   string     

uuid of Discount Option Example: aut

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\": \"tempora\"
}"
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": "tempora"
};

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' => 'tempora',
        ],
    ]
);
$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: tempora

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\": \"consequatur\",
    \"property_id\": \"molestias\",
    \"coa_id\": \"at\",
    \"department_id\": \"commodi\",
    \"title\": \"cum\",
    \"remark\": \"minus\"
}"
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": "consequatur",
    "property_id": "molestias",
    "coa_id": "at",
    "department_id": "commodi",
    "title": "cum",
    "remark": "minus"
};

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' => 'consequatur',
            'property_id' => 'molestias',
            'coa_id' => 'at',
            'department_id' => 'commodi',
            'title' => 'cum',
            'remark' => 'minus',
        ],
    ]
);
$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: consequatur

property_id   string     

uuid of Property Example: molestias

coa_id   string     

uuid of Chart of Account Payment Method Example: at

department_id   string     

uuid of Department Example: commodi

title   string     

title of Discount Example: cum

remark   string  optional    

remark of discount can nullable Example: minus

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\": \"iste\"
}"
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": "iste"
};

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' => 'iste',
        ],
    ]
);
$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: iste

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\": \"ab\",
    \"coa_search\": \"veritatis\",
    \"default_value\": \"nisi\"
}"
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": "ab",
    "coa_search": "veritatis",
    "default_value": "nisi"
};

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' => 'ab',
            'coa_search' => 'veritatis',
            'default_value' => 'nisi',
        ],
    ]
);
$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: ab

coa_search   string     

name of coa finding Example: veritatis

default_value   string     

name of coa default value Example: nisi

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\": \"velit\",
    \"payment_method_id\": \"aut\"
}"
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": "velit",
    "payment_method_id": "aut"
};

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' => 'velit',
            'payment_method_id' => 'aut',
        ],
    ]
);
$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: velit

payment_method_id   string     

uuid of Payment Method Example: aut

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\": \"fugiat\",
    \"payment_option_id\": \"assumenda\"
}"
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": "fugiat",
    "payment_option_id": "assumenda"
};

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' => 'fugiat',
            'payment_option_id' => 'assumenda',
        ],
    ]
);
$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: fugiat

payment_option_id   string     

uuid of Payment Options Example: assumenda

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\": \"labore\",
    \"payment_option_id\": \"provident\",
    \"coa_id\": \"consequuntur\",
    \"name\": \"illo\"
}"
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": "labore",
    "payment_option_id": "provident",
    "coa_id": "consequuntur",
    "name": "illo"
};

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' => 'labore',
            'payment_option_id' => 'provident',
            'coa_id' => 'consequuntur',
            'name' => 'illo',
        ],
    ]
);
$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: labore

payment_option_id   string     

uuid of Payment Option Example: provident

coa_id   string     

uuid of Chart of Account Payment Method Example: consequuntur

name   string     

Name Payment Method Example: illo

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\": \"corporis\"
}"
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": "corporis"
};

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' => 'corporis',
        ],
    ]
);
$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: corporis

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\": \"quis\",
    \"coa_search\": \"omnis\",
    \"default_value\": \"consequatur\"
}"
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": "quis",
    "coa_search": "omnis",
    "default_value": "consequatur"
};

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' => 'quis',
            'coa_search' => 'omnis',
            'default_value' => 'consequatur',
        ],
    ]
);
$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: quis

coa_search   string     

name of coa finding Example: omnis

default_value   string     

name of coa default value Example: consequatur

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\": \"corporis\",
    \"payment_option_id\": \"quo\"
}"
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": "corporis",
    "payment_option_id": "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-options/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'corporis',
            'payment_option_id' => 'quo',
        ],
    ]
);
$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: corporis

payment_option_id   string     

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

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\": \"reprehenderit\"
}"
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": "reprehenderit"
};

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' => 'reprehenderit',
        ],
    ]
);
$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: reprehenderit

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\": \"dolores\",
    \"name\": \"deleniti\",
    \"agent_id\": \"inventore\",
    \"coa_id\": \"eum\"
}"
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": "dolores",
    "name": "deleniti",
    "agent_id": "inventore",
    "coa_id": "eum"
};

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' => 'dolores',
            'name' => 'deleniti',
            'agent_id' => 'inventore',
            'coa_id' => 'eum',
        ],
    ]
);
$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: dolores

name   string     

Name of Tax and Service Example: deleniti

agent_id   string     

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

coa_id   string     

uuid of Chart of Account Payment Method Example: eum

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\": \"dolorum\"
}"
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": "dolorum"
};

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' => 'dolorum',
        ],
    ]
);
$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: dolorum

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\": \"asperiores\",
    \"coa_search\": \"autem\",
    \"default_value\": \"eos\"
}"
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": "asperiores",
    "coa_search": "autem",
    "default_value": "eos"
};

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' => 'asperiores',
            'coa_search' => 'autem',
            'default_value' => 'eos',
        ],
    ]
);
$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: asperiores

coa_search   string     

name of coa finding Example: autem

default_value   string     

name of coa default value Example: eos

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\": \"non\",
    \"rate_plan_id\": \"doloremque\"
}"
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": "non",
    "rate_plan_id": "doloremque"
};

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' => 'non',
            'rate_plan_id' => 'doloremque',
        ],
    ]
);
$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: non

rate_plan_id   string     

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

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\": \"temporibus\",
    \"page_no\": 11,
    \"rate_plan_name\": \"temporibus\",
    \"rate_type_id\": \"quas\",
    \"room_type_id\": \"consectetur\",
    \"active_start_date\": \"perferendis\",
    \"active_end_date\": \"dolorem\",
    \"status_active\": false
}"
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": "temporibus",
    "page_no": 11,
    "rate_plan_name": "temporibus",
    "rate_type_id": "quas",
    "room_type_id": "consectetur",
    "active_start_date": "perferendis",
    "active_end_date": "dolorem",
    "status_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/rate-plan/list';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'temporibus',
            'page_no' => 11,
            'rate_plan_name' => 'temporibus',
            'rate_type_id' => 'quas',
            'room_type_id' => 'consectetur',
            'active_start_date' => 'perferendis',
            'active_end_date' => 'dolorem',
            'status_active' => false,
        ],
    ]
);
$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: temporibus

page_no   integer  optional    

number of pagination Example: 11

rate_plan_name   string  optional    

filter of rate plan name Example: temporibus

rate_type_id   string  optional    

uuid of rate plan type Example: quas

room_type_id   string  optional    

uuid of room type Example: consectetur

active_start_date   string  optional    

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

active_end_date   string  optional    

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

status_active   boolean  optional    

status of rate plan true or false. Example: false

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\": \"voluptas\",
    \"property_id\": \"ullam\",
    \"rate_plan_type_id\": \"sed\",
    \"tax_and_service_id\": \"dolor\",
    \"room_type_id\": \"consequuntur\",
    \"room_type_multi\": null,
    \"open_rate\": \"dolorem\",
    \"name\": \"doloremque\",
    \"remark\": \"exercitationem\",
    \"start_date\": \"veniam\",
    \"end_date\": \"aperiam\",
    \"min_night\": 10,
    \"max_night\": 11,
    \"max_adult\": 18,
    \"max_child\": 9,
    \"max_pax\": 11,
    \"rate\": 18,
    \"extra_adult_rate\": 6,
    \"extra_child_rate\": 5,
    \"daily_rate_period_start_date\": \"corrupti\",
    \"daily_rate_period_end_date\": \"nam\",
    \"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": "voluptas",
    "property_id": "ullam",
    "rate_plan_type_id": "sed",
    "tax_and_service_id": "dolor",
    "room_type_id": "consequuntur",
    "room_type_multi": null,
    "open_rate": "dolorem",
    "name": "doloremque",
    "remark": "exercitationem",
    "start_date": "veniam",
    "end_date": "aperiam",
    "min_night": 10,
    "max_night": 11,
    "max_adult": 18,
    "max_child": 9,
    "max_pax": 11,
    "rate": 18,
    "extra_adult_rate": 6,
    "extra_child_rate": 5,
    "daily_rate_period_start_date": "corrupti",
    "daily_rate_period_end_date": "nam",
    "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' => 'voluptas',
            'property_id' => 'ullam',
            'rate_plan_type_id' => 'sed',
            'tax_and_service_id' => 'dolor',
            'room_type_id' => 'consequuntur',
            'room_type_multi' => null,
            'open_rate' => 'dolorem',
            'name' => 'doloremque',
            'remark' => 'exercitationem',
            'start_date' => 'veniam',
            'end_date' => 'aperiam',
            'min_night' => 10,
            'max_night' => 11,
            'max_adult' => 18,
            'max_child' => 9,
            'max_pax' => 11,
            'rate' => 18,
            'extra_adult_rate' => 6,
            'extra_child_rate' => 5,
            'daily_rate_period_start_date' => 'corrupti',
            'daily_rate_period_end_date' => 'nam',
            '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: voluptas

property_id   string     

uuid of Property Example: ullam

rate_plan_type_id   string     

uuid of Rate Plan Type Example: sed

tax_and_service_id   string     

uuid of Tax and Service Example: dolor

room_type_id   string  optional    

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

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: dolorem

name   string     

name Of Rate Plan Example: doloremque

remark   string     

remark Of Rate Plan Example: exercitationem

start_date   string     

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

end_date   string     

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

min_night   integer     

minimum night stay rate plan Example: 10

max_night   integer     

maximum night stay rate plan Example: 11

max_adult   integer     

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

max_child   integer     

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

max_pax   integer     

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

rate   integer     

value of Rate Example: 18

extra_adult_rate   integer  optional    

value of Extra Adult Rate Example: 6

extra_child_rate   integer  optional    

value of Extra child Rate Example: 5

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: corrupti

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: nam

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\": \"harum\"
}"
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": "harum"
};

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' => 'harum',
        ],
    ]
);
$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: harum

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\": \"quaerat\",
    \"rate_plan_type_id\": \"voluptatem\",
    \"product_category_id\": \"maxime\"
}"
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": "quaerat",
    "rate_plan_type_id": "voluptatem",
    "product_category_id": "maxime"
};

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' => 'quaerat',
            'rate_plan_type_id' => 'voluptatem',
            'product_category_id' => 'maxime',
        ],
    ]
);
$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: quaerat

rate_plan_type_id   string     

uuid of Property if mode rate_plan_detail_default Example: voluptatem

product_category_id   string     

uuid of Product Category if mode product Example: maxime

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\": \"eos\",
    \"property_id\": \"sed\",
    \"start_date\": \"omnis\",
    \"end_date\": \"architecto\",
    \"adjust_start_date\": \"alias\",
    \"adjust_end_date\": \"sapiente\",
    \"rate\": 16,
    \"extra_adult_rate\": 8,
    \"extra_child_rate\": 6,
    \"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": "eos",
    "property_id": "sed",
    "start_date": "omnis",
    "end_date": "architecto",
    "adjust_start_date": "alias",
    "adjust_end_date": "sapiente",
    "rate": 16,
    "extra_adult_rate": 8,
    "extra_child_rate": 6,
    "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' => 'eos',
            'property_id' => 'sed',
            'start_date' => 'omnis',
            'end_date' => 'architecto',
            'adjust_start_date' => 'alias',
            'adjust_end_date' => 'sapiente',
            'rate' => 16,
            'extra_adult_rate' => 8,
            'extra_child_rate' => 6,
            '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: eos

property_id   string     

uuid of Property Example: sed

start_date   string     

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

end_date   string     

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

adjust_start_date   string     

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

adjust_end_date   string     

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

rate   integer     

value of Rate adjustment Example: 16

extra_adult_rate   integer  optional    

value of Extra Adult Rate adjustment Example: 8

extra_child_rate   integer  optional    

value of Extra child Rate adjustment Example: 6

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\": \"sequi\",
    \"report_type\": \"occupancy\",
    \"period\": \"daily\",
    \"year\": 2026,
    \"start_date\": \"2026-05-01\",
    \"end_date\": \"2026-05-31\",
    \"room_type_ids\": [
        \"quia\"
    ]
}"
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": "sequi",
    "report_type": "occupancy",
    "period": "daily",
    "year": 2026,
    "start_date": "2026-05-01",
    "end_date": "2026-05-31",
    "room_type_ids": [
        "quia"
    ]
};

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' => 'sequi',
            'report_type' => 'occupancy',
            'period' => 'daily',
            'year' => 2026,
            'start_date' => '2026-05-01',
            'end_date' => '2026-05-31',
            'room_type_ids' => [
                'quia',
            ],
        ],
    ]
);
$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: sequi

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.

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\": \"possimus\"
}"
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": "possimus"
};

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' => 'possimus',
        ],
    ]
);
$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: possimus

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\": \"natus\"
}"
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": "natus"
};

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' => 'natus',
        ],
    ]
);
$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: natus

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\": \"nesciunt\",
    \"tax_coa_id\": \"praesentium\",
    \"service_coa_id\": \"alias\",
    \"name\": \"qui\",
    \"calculation_type\": \"consectetur\",
    \"tax\": 2.44,
    \"service\": 132691254.4,
    \"use_service\": \"enim\",
    \"is_default\": \"assumenda\"
}"
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": "nesciunt",
    "tax_coa_id": "praesentium",
    "service_coa_id": "alias",
    "name": "qui",
    "calculation_type": "consectetur",
    "tax": 2.44,
    "service": 132691254.4,
    "use_service": "enim",
    "is_default": "assumenda"
};

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' => 'nesciunt',
            'tax_coa_id' => 'praesentium',
            'service_coa_id' => 'alias',
            'name' => 'qui',
            'calculation_type' => 'consectetur',
            'tax' => 2.44,
            'service' => 132691254.4,
            'use_service' => 'enim',
            'is_default' => 'assumenda',
        ],
    ]
);
$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: nesciunt

tax_coa_id   string     

uuid of Char Of Account for tax Example: praesentium

service_coa_id   string     

uuid of Char Of Account for service Example: alias

name   string     

Name of Tax and Service Example: qui

calculation_type   string     

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

tax   number     

Value of Tax Example: 2.44

service   number  optional    

Value of Service Example: 132691254.4

use_service   bolean  optional    

if use service please set true Example: enim

is_default   bolean  optional    

if this default on option set true Example: assumenda

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\": \"ea\"
}"
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": "ea"
};

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' => 'ea',
        ],
    ]
);
$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: ea

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\": \"officia\",
    \"mode\": \"coa_list\",
    \"coa_search\": \"velit\"
}"
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": "officia",
    "mode": "coa_list",
    "coa_search": "velit"
};

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' => 'officia',
            'mode' => 'coa_list',
            'coa_search' => 'velit',
        ],
    ]
);
$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: officia

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: velit

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\": \"facilis\"
}"
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": "facilis"
};

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' => 'facilis',
        ],
    ]
);
$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: facilis

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\": \"sunt\",
    \"name\": \"quidem\",
    \"is_permanent\": \"non\"
}"
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": "sunt",
    "name": "quidem",
    "is_permanent": "non"
};

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' => 'sunt',
            'name' => 'quidem',
            'is_permanent' => 'non',
        ],
    ]
);
$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: sunt

name   string     

Name of Room Type Example: quidem

is_permanent   bolean     

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

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\": \"sapiente\",
    \"booking_room_id\": \"adipisci\",
    \"property_product_id\": \"veniam\",
    \"rate_plan_id\": \"et\",
    \"tax_and_service_id\": \"odio\",
    \"guest_id\": \"consequuntur\",
    \"agent_id\": \"consequatur\",
    \"bill_date\": \"sint\",
    \"bill_date_start\": \"et\",
    \"bill_date_end\": \"vero\",
    \"amount\": 4,
    \"remark\": \"quod\",
    \"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": "sapiente",
    "booking_room_id": "adipisci",
    "property_product_id": "veniam",
    "rate_plan_id": "et",
    "tax_and_service_id": "odio",
    "guest_id": "consequuntur",
    "agent_id": "consequatur",
    "bill_date": "sint",
    "bill_date_start": "et",
    "bill_date_end": "vero",
    "amount": 4,
    "remark": "quod",
    "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' => 'sapiente',
            'booking_room_id' => 'adipisci',
            'property_product_id' => 'veniam',
            'rate_plan_id' => 'et',
            'tax_and_service_id' => 'odio',
            'guest_id' => 'consequuntur',
            'agent_id' => 'consequatur',
            'bill_date' => 'sint',
            'bill_date_start' => 'et',
            'bill_date_end' => 'vero',
            'amount' => 4,
            'remark' => 'quod',
            '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: sapiente

booking_room_id   string     

uuid of booking room Example: adipisci

property_product_id   string     

uuid of Property Product Example: veniam

rate_plan_id   string     

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

tax_and_service_id   string     

uuid of tax and service Example: odio

guest_id   string     

if provide guest need uuid guest profile Example: consequuntur

agent_id   string     

if provide agent name need uuid agent property Example: consequatur

bill_date   string  optional    

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

bill_date_start   string  optional    

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

bill_date_end   string  optional    

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

amount   integer     

of bill amount Example: 4

remark   string     

remark Of bill Example: quod

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\": \"vel\",
    \"query\": \"in\"
}"
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": "vel",
    "query": "in"
};

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' => 'vel',
            'query' => 'in',
        ],
    ]
);
$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: vel

query   string  optional    

this use for guest Example: in

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\": \"repellendus\",
    \"booking_room_id\": \"neque\",
    \"booking_bill_id\": \"explicabo\"
}"
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": "repellendus",
    "booking_room_id": "neque",
    "booking_bill_id": "explicabo"
};

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' => 'repellendus',
            'booking_room_id' => 'neque',
            'booking_bill_id' => 'explicabo',
        ],
    ]
);
$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: repellendus

booking_room_id   string     

uuid of booking room Example: neque

booking_bill_id   string     

uuid of booking Bill Example: explicabo

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\": \"et\",
    \"booking_room_id\": \"rem\",
    \"comm_remark\": \"omnis\",
    \"comm_date\": \"rerum\",
    \"amount\": 19,
    \"booking_commision_id\": \"non\"
}"
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": "et",
    "booking_room_id": "rem",
    "comm_remark": "omnis",
    "comm_date": "rerum",
    "amount": 19,
    "booking_commision_id": "non"
};

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' => 'et',
            'booking_room_id' => 'rem',
            'comm_remark' => 'omnis',
            'comm_date' => 'rerum',
            'amount' => 19,
            'booking_commision_id' => 'non',
        ],
    ]
);
$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: et

booking_room_id   string     

uuid of booking room Example: rem

comm_remark   string     

remark Of bill Example: omnis

comm_date   string  optional    

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

amount   integer     

of bill amount Example: 19

booking_commision_id   string     

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

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\": \"ab\",
    \"booking_room_id\": \"eos\",
    \"booking_commision_id\": \"excepturi\"
}"
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": "ab",
    "booking_room_id": "eos",
    "booking_commision_id": "excepturi"
};

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' => 'ab',
            'booking_room_id' => 'eos',
            'booking_commision_id' => 'excepturi',
        ],
    ]
);
$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: ab

booking_room_id   string     

uuid of booking room Example: eos

booking_commision_id   string     

uuid of booking Payment Example: excepturi

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\": \"esse\",
    \"query\": \"nihil\"
}"
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": "esse",
    "query": "nihil"
};

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' => 'esse',
            'query' => '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/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: esse

query   string  optional    

this use for guest Example: nihil

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\": \"blanditiis\",
    \"booking_room_id\": \"officia\",
    \"discount_option_id\": \"dicta\",
    \"discount_for\": \"agent\",
    \"discount_remark\": \"qui\",
    \"discount_date\": \"quia\",
    \"amount\": 13,
    \"booking_discount_id\": \"assumenda\"
}"
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": "blanditiis",
    "booking_room_id": "officia",
    "discount_option_id": "dicta",
    "discount_for": "agent",
    "discount_remark": "qui",
    "discount_date": "quia",
    "amount": 13,
    "booking_discount_id": "assumenda"
};

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' => 'blanditiis',
            'booking_room_id' => 'officia',
            'discount_option_id' => 'dicta',
            'discount_for' => 'agent',
            'discount_remark' => 'qui',
            'discount_date' => 'quia',
            'amount' => 13,
            'booking_discount_id' => 'assumenda',
        ],
    ]
);
$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: blanditiis

booking_room_id   string     

uuid of booking room Example: officia

discount_option_id   string     

uuid of Discount options Example: dicta

discount_for   string  optional    

The discount. Example: agent

Must be one of:
  • agent
  • guest
discount_remark   string     

remark Of Discount Example: qui

discount_date   string  optional    

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

amount   integer     

of bill amount Example: 13

booking_discount_id   string     

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

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\": \"quo\",
    \"booking_room_id\": \"hic\",
    \"booking_discount_id\": \"asperiores\"
}"
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": "quo",
    "booking_room_id": "hic",
    "booking_discount_id": "asperiores"
};

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' => 'quo',
            'booking_room_id' => 'hic',
            'booking_discount_id' => 'asperiores',
        ],
    ]
);
$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: quo

booking_room_id   string     

uuid of booking room Example: hic

booking_discount_id   string     

uuid of booking Discount Example: asperiores

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\": \"dolor\",
    \"query\": \"laboriosam\"
}"
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": "dolor",
    "query": "laboriosam"
};

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' => 'dolor',
            'query' => 'laboriosam',
        ],
    ]
);
$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: dolor

query   string  optional    

this use for guest Example: laboriosam

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\": \"cupiditate\",
    \"booking_room_id\": \"rerum\",
    \"payment_option_id\": \"veritatis\",
    \"payment_date\": \"omnis\",
    \"amount\": 12,
    \"remark\": \"voluptate\",
    \"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": "cupiditate",
    "booking_room_id": "rerum",
    "payment_option_id": "veritatis",
    "payment_date": "omnis",
    "amount": 12,
    "remark": "voluptate",
    "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' => 'cupiditate',
            'booking_room_id' => 'rerum',
            'payment_option_id' => 'veritatis',
            'payment_date' => 'omnis',
            'amount' => 12,
            'remark' => 'voluptate',
            '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: cupiditate

booking_room_id   string     

uuid of booking room Example: rerum

payment_option_id   string     

uuid of Option Example: veritatis

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: 12

remark   string     

remark Of bill Example: voluptate

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\": \"accusamus\",
    \"booking_room_id\": \"autem\",
    \"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": "accusamus",
    "booking_room_id": "autem",
    "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' => 'accusamus',
            'booking_room_id' => 'autem',
            '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: accusamus

booking_room_id   string     

uuid of booking room Example: autem

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\": \"quas\",
    \"payment_id\": \"nisi\",
    \"booking_room_id\": \"temporibus\",
    \"query\": \"corporis\"
}"
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": "quas",
    "payment_id": "nisi",
    "booking_room_id": "temporibus",
    "query": "corporis"
};

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' => 'quas',
            'payment_id' => 'nisi',
            'booking_room_id' => 'temporibus',
            'query' => 'corporis',
        ],
    ]
);
$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: quas

payment_id   string     

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

booking_room_id   string     

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

query   string  optional    

this use for guest Example: corporis

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\": \"a\",
    \"start_date\": \"nihil\",
    \"end_date\": \"ab\",
    \"room_type_id\": \"natus\",
    \"bed_type_id\": \"laudantium\",
    \"booking_no\": \"similique\",
    \"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": "a",
    "start_date": "nihil",
    "end_date": "ab",
    "room_type_id": "natus",
    "bed_type_id": "laudantium",
    "booking_no": "similique",
    "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' => 'a',
            'start_date' => 'nihil',
            'end_date' => 'ab',
            'room_type_id' => 'natus',
            'bed_type_id' => 'laudantium',
            'booking_no' => 'similique',
            '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: a

start_date   string     

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

end_date   string     

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

room_type_id   string  optional    

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

bed_type_id   string  optional    

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

booking_no   string  optional    

Booking number. Example: similique

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\": \"sed\",
    \"periode\": \"dolores\"
}"
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": "sed",
    "periode": "dolores"
};

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' => 'sed',
            'periode' => 'dolores',
        ],
    ]
);
$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: sed

periode   string     

chart start date format Y-m Example: dolores

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\": \"aut\"
}"
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": "aut"
};

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' => 'aut',
        ],
    ]
);
$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: aut

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\": \"quos\"
}"
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": "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/bookingoutstanding';
$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/bookingoutstanding

Headers

Authorization        

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

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: quos

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\": \"saepe\",
    \"query\": \"illum\",
    \"findby\": \"phone\",
    \"findvalue\": \"suscipit\",
    \"room_type_id\": \"fugiat\",
    \"arival_date\": \"quisquam\",
    \"depature_date\": \"distinctio\",
    \"total_adult\": \"ut\",
    \"total_child\": \"ut\",
    \"default_rate\": \"et\",
    \"default_extra_adult_rate\": \"magnam\",
    \"default_extra_child_rate\": \"id\",
    \"default_rate_detail\": \"in\",
    \"booking_room_id\": \"quasi\",
    \"split_to\": [
        \"quo\"
    ],
    \"current_room_type_id\": \"facere\",
    \"current_room_id\": \"earum\"
}"
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": "saepe",
    "query": "illum",
    "findby": "phone",
    "findvalue": "suscipit",
    "room_type_id": "fugiat",
    "arival_date": "quisquam",
    "depature_date": "distinctio",
    "total_adult": "ut",
    "total_child": "ut",
    "default_rate": "et",
    "default_extra_adult_rate": "magnam",
    "default_extra_child_rate": "id",
    "default_rate_detail": "in",
    "booking_room_id": "quasi",
    "split_to": [
        "quo"
    ],
    "current_room_type_id": "facere",
    "current_room_id": "earum"
};

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' => 'saepe',
            'query' => 'illum',
            'findby' => 'phone',
            'findvalue' => 'suscipit',
            'room_type_id' => 'fugiat',
            'arival_date' => 'quisquam',
            'depature_date' => 'distinctio',
            'total_adult' => 'ut',
            'total_child' => 'ut',
            'default_rate' => 'et',
            'default_extra_adult_rate' => 'magnam',
            'default_extra_child_rate' => 'id',
            'default_rate_detail' => 'in',
            'booking_room_id' => 'quasi',
            'split_to' => [
                'quo',
            ],
            'current_room_type_id' => 'facere',
            'current_room_id' => 'earum',
        ],
    ]
);
$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: saepe

query   string  optional    

this using for in case option have filter Example: illum

findby   string  optional    

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

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

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

room_type_id   string  optional    

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

arival_date   string  optional    

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

depature_date   string  optional    

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

total_adult   string  optional    

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

total_child   string  optional    

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

default_rate   string  optional    

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

default_extra_adult_rate   string  optional    

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

default_extra_child_rate   string  optional    

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

default_rate_detail   string  optional    

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

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: quasi

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: facere

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: earum

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\": \"dolor\",
    \"property_agent_id\": \"ut\",
    \"booking_status_id\": \"vitae\",
    \"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\": \"deleniti\",
    \"hold_date\": \"vel\",
    \"total_adults\": 11,
    \"total_childrens\": 20,
    \"remark\": \"voluptatem\",
    \"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": "dolor",
    "property_agent_id": "ut",
    "booking_status_id": "vitae",
    "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": "deleniti",
    "hold_date": "vel",
    "total_adults": 11,
    "total_childrens": 20,
    "remark": "voluptatem",
    "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' => 'dolor',
            'property_agent_id' => 'ut',
            'booking_status_id' => 'vitae',
            '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' => 'deleniti',
            'hold_date' => 'vel',
            'total_adults' => 11,
            'total_childrens' => 20,
            'remark' => 'voluptatem',
            '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: dolor

property_agent_id   string     

uuid of Property Agent. Example: ut

booking_status_id   string     

uuid of Booking Status. Example: vitae

guest_booking   object     

detail of Guest make Bookig.

booking_reference   string  optional    

add this value if hafe booking reference. Example: deleniti

hold_date   string  optional    

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

total_adults   integer  optional    

total Adult Guest on this booking Example: 11

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: voluptatem

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\": \"dolorem\",
    \"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": "dolorem",
    "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' => 'dolorem',
            '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: dolorem

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\": [
        \"sed\"
    ]
}"
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": [
        "sed"
    ]
};

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' => [
                'sed',
            ],
        ],
    ]
);
$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\": \"voluptas\",
    \"booking_id\": \"itaque\"
}"
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": "voluptas",
    "booking_id": "itaque"
};

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' => 'voluptas',
            'booking_id' => 'itaque',
        ],
    ]
);
$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: voluptas

booking_id   string     

uuid of Booking. Example: itaque

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\": \"aut\",
    \"booking_room_id\": \"temporibus\",
    \"mode\": \"\'guestbill\'\"
}"
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": "aut",
    "booking_room_id": "temporibus",
    "mode": "'guestbill'"
};

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' => 'aut',
            'booking_room_id' => 'temporibus',
            'mode' => '\'guestbill\'',
        ],
    ]
);
$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: aut

booking_room_id   string     

uuid of Booking. Example: temporibus

mode   string  optional    

mode result. Example: 'guestbill'

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\": \"rerum\",
    \"booking_id\": \"et\",
    \"booking_room_id\": \"rerum\",
    \"cancel_status_id\": \"exercitationem\"
}"
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": "rerum",
    "booking_id": "et",
    "booking_room_id": "rerum",
    "cancel_status_id": "exercitationem"
};

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' => 'rerum',
            'booking_id' => 'et',
            'booking_room_id' => 'rerum',
            'cancel_status_id' => 'exercitationem',
        ],
    ]
);
$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: rerum

booking_id   string     

uuid of booking Example: et

booking_room_id   string  optional    

optional uuid of booking room Example: rerum

cancel_status_id   string     

uuid of Cancel Status Example: exercitationem

Confirm Booking

Example request:
curl --request POST \
    "http://localhost/api/v1/booking/confirm" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"minus\",
    \"booking_id\": \"aut\",
    \"confirm_status_id\": \"sit\"
}"
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": "minus",
    "booking_id": "aut",
    "confirm_status_id": "sit"
};

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' => 'minus',
            'booking_id' => 'aut',
            'confirm_status_id' => 'sit',
        ],
    ]
);
$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: minus

booking_id   string     

uuid of booking Example: aut

confirm_status_id   string     

uuid of Confirm Status Example: sit

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\": \"vel\",
    \"booking_id\": \"est\",
    \"property_agent_id\": \"ipsa\",
    \"booking_reference\": \"voluptatem\",
    \"remark\": \"et\"
}"
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": "vel",
    "booking_id": "est",
    "property_agent_id": "ipsa",
    "booking_reference": "voluptatem",
    "remark": "et"
};

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' => 'vel',
            'booking_id' => 'est',
            'property_agent_id' => 'ipsa',
            'booking_reference' => 'voluptatem',
            'remark' => 'et',
        ],
    ]
);
$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: vel

booking_id   string     

uuid of booking Example: est

property_agent_id   string     

uuid of Property Agent. Example: ipsa

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: et

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\": \"sit\",
    \"guest_id\": \"veniam\",
    \"booking_id\": \"libero\",
    \"booking_room_id\": \"possimus\",
    \"history_remark\": \"vitae\"
}"
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": "sit",
    "guest_id": "veniam",
    "booking_id": "libero",
    "booking_room_id": "possimus",
    "history_remark": "vitae"
};

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' => 'sit',
            'guest_id' => 'veniam',
            'booking_id' => 'libero',
            'booking_room_id' => 'possimus',
            'history_remark' => 'vitae',
        ],
    ]
);
$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: sit

guest_id   string     

uuid of Guest ID Example: veniam

booking_id   string     

uuid of Booking ID Example: libero

booking_room_id   string     

uuid of Booking Room ID Example: possimus

history_remark   string     

Name Payment Method Example: vitae

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\": \"consequatur\",
    \"guest_history_id\": \"excepturi\"
}"
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": "consequatur",
    "guest_history_id": "excepturi"
};

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' => 'consequatur',
            'guest_history_id' => 'excepturi',
        ],
    ]
);
$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: consequatur

guest_history_id   string     

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

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\": \"in\",
    \"booking_id\": \"maxime\",
    \"booking_room_id\": \"nihil\",
    \"special_request\": \"et\"
}"
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": "in",
    "booking_id": "maxime",
    "booking_room_id": "nihil",
    "special_request": "et"
};

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' => 'in',
            'booking_id' => 'maxime',
            'booking_room_id' => 'nihil',
            'special_request' => 'et',
        ],
    ]
);
$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: in

booking_id   string     

uuid of booking Example: maxime

booking_room_id   string     

uuid of booking room Example: nihil

special_request   string     

remark Of Special Request Example: et

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\": \"velit\",
    \"booking_id\": \"atque\",
    \"booking_room_id\": \"nobis\"
}"
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": "velit",
    "booking_id": "atque",
    "booking_room_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/room-special-request/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'velit',
            'booking_id' => 'atque',
            'booking_room_id' => 'nobis',
        ],
    ]
);
$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: velit

booking_id   string     

uuid of booking Example: atque

booking_room_id   string     

uuid of booking room Example: nobis

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\": \"tenetur\",
    \"booking_room_id\": \"fuga\",
    \"guest_id\": \"velit\",
    \"guest_prefix_id\": \"quo\",
    \"first_name\": \"ut\",
    \"last_name\": \"ducimus\",
    \"country_id\": \"amet\",
    \"national_id\": \"nemo\",
    \"identity_type_id\": \"consectetur\",
    \"identity_no\": \"et\",
    \"email\": \"[email protected]\",
    \"phone\": \"consequatur\",
    \"address\": \"voluptates\"
}"
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": "tenetur",
    "booking_room_id": "fuga",
    "guest_id": "velit",
    "guest_prefix_id": "quo",
    "first_name": "ut",
    "last_name": "ducimus",
    "country_id": "amet",
    "national_id": "nemo",
    "identity_type_id": "consectetur",
    "identity_no": "et",
    "email": "[email protected]",
    "phone": "consequatur",
    "address": "voluptates"
};

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' => 'tenetur',
            'booking_room_id' => 'fuga',
            'guest_id' => 'velit',
            'guest_prefix_id' => 'quo',
            'first_name' => 'ut',
            'last_name' => 'ducimus',
            'country_id' => 'amet',
            'national_id' => 'nemo',
            'identity_type_id' => 'consectetur',
            'identity_no' => 'et',
            'email' => '[email protected]',
            'phone' => 'consequatur',
            'address' => 'voluptates',
        ],
    ]
);
$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: tenetur

booking_room_id   string     

uuid of booking room Example: fuga

guest_id   string     

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

guest_prefix_id   string     

uuid of Guest Prefix Example: quo

first_name   string     

First Name Of Guest Profile Example: ut

last_name   string     

Last Name Of Guest Profile Example: ducimus

country_id   string     

uuid of Country Example: amet

national_id   string     

uuid of National same use country data Example: nemo

identity_type_id   string     

uuid of Guest Identity Type Example: consectetur

identity_no   string     

Identity Number Of Guest Profile Example: et

email   string     

Email Of Guest Profile Example: [email protected]

phone   string     

Phone Of Guest Profile Example: consequatur

address   string     

Address Of Guest Profile Example: voluptates

Download Register form

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

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/dignissimos';
$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: dignissimos

Download Booking Bill

Example request:
curl --request GET \
    --get "http://localhost/api/v1/booking/bill/print/error" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/booking/bill/print/error"
);

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/error';
$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: error

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\": \"omnis\",
    \"booking_room_id\": \"voluptatem\",
    \"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": "omnis",
    "booking_room_id": "voluptatem",
    "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' => 'omnis',
            'booking_room_id' => 'voluptatem',
            '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: omnis

booking_room_id   string     

uuid of Booking. Example: voluptatem

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\": \"molestiae\",
    \"booking_room_id\": \"quis\",
    \"bill_model\": \"[\'agent\'\"
}"
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": "molestiae",
    "booking_room_id": "quis",
    "bill_model": "['agent'"
};

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' => 'molestiae',
            'booking_room_id' => 'quis',
            'bill_model' => '[\'agent\'',
        ],
    ]
);
$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: molestiae

booking_room_id   string     

uuid of Booking. Example: quis

bill_model   string  optional    

bill model result. Example: ['agent'

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\": \"labore\",
    \"booking_room_id\": \"veritatis\",
    \"bill_model\": \"[\'agent\'\"
}"
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": "labore",
    "booking_room_id": "veritatis",
    "bill_model": "['agent'"
};

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' => 'labore',
            'booking_room_id' => 'veritatis',
            'bill_model' => '[\'agent\'',
        ],
    ]
);
$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: labore

booking_room_id   string     

uuid of Booking. Example: veritatis

bill_model   string  optional    

bill model result. Example: ['agent'

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\": \"est\",
    \"booking_room_id\": \"quam\",
    \"guest_status_id\": \"sunt\"
}"
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": "est",
    "booking_room_id": "quam",
    "guest_status_id": "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-status-inroom/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'booking_id' => 'est',
            'booking_room_id' => 'quam',
            'guest_status_id' => '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-status-inroom/update

Headers

Authorization        

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

Content-Type        

Example: application/json

Body Parameters

booking_id   string     

uuid of booking Example: est

booking_room_id   string     

uuid of booking room Example: quam

guest_status_id   string     

uuid of Guest Status Example: sunt

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\": \"earum\"
}"
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": "earum"
};

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' => 'earum',
        ],
    ]
);
$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: earum

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\": \"ut\",
    \"arival_start_date\": \"dolorem\",
    \"arival_end_date\": \"animi\",
    \"booking_no\": \"eveniet\",
    \"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": "ut",
    "arival_start_date": "dolorem",
    "arival_end_date": "animi",
    "booking_no": "eveniet",
    "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' => 'ut',
            'arival_start_date' => 'dolorem',
            'arival_end_date' => 'animi',
            'booking_no' => 'eveniet',
            '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: ut

arival_start_date   string  optional    

add this value Arrival Start Date with format date Y-m-d. Exmp:2024-02-18 Example: dolorem

arival_end_date   string  optional    

add this value Arrival End Date with format date Y-m-d. Exmp:2024-02-18 Example: animi

booking_no   string     

Booking Number Example: eveniet

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\": \"eaque\",
    \"hold_start_date\": \"dolorem\",
    \"hold_end_date\": \"voluptates\",
    \"booking_no\": \"mollitia\",
    \"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": "eaque",
    "hold_start_date": "dolorem",
    "hold_end_date": "voluptates",
    "booking_no": "mollitia",
    "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' => 'eaque',
            'hold_start_date' => 'dolorem',
            'hold_end_date' => 'voluptates',
            'booking_no' => 'mollitia',
            '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: eaque

hold_start_date   string  optional    

add this value Hold Start Date with format date Y-m-d. Exmp:2024-02-18 Example: dolorem

hold_end_date   string  optional    

add this value Hold End Date with format date Y-m-d. Exmp:2024-02-18 Example: voluptates

booking_no   string     

Booking Number Example: mollitia

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\": \"saepe\",
    \"booking_room_id\": \"rerum\",
    \"mode\": \"roomavailable\",
    \"room_type_id\": \"maxime\",
    \"arival_date\": \"molestias\",
    \"depature_date\": \"nulla\",
    \"rate_plan_id\": \"tempora\",
    \"tax_and_service_id\": \"quia\",
    \"use_rate_before\": false
}"
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": "saepe",
    "booking_room_id": "rerum",
    "mode": "roomavailable",
    "room_type_id": "maxime",
    "arival_date": "molestias",
    "depature_date": "nulla",
    "rate_plan_id": "tempora",
    "tax_and_service_id": "quia",
    "use_rate_before": false
};

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' => 'saepe',
            'booking_room_id' => 'rerum',
            'mode' => 'roomavailable',
            'room_type_id' => 'maxime',
            'arival_date' => 'molestias',
            'depature_date' => 'nulla',
            'rate_plan_id' => 'tempora',
            'tax_and_service_id' => 'quia',
            'use_rate_before' => false,
        ],
    ]
);
$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: saepe

booking_room_id   string     

uuid of Booking Room. Example: rerum

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: maxime

arival_date   string  optional    

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

depature_date   string  optional    

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

rate_plan_id   string  optional    

use this parameter when mode "roomratedaily". Example: tempora

tax_and_service_id   string  optional    

use this parameter when mode "roomratedaily". Example: quia

use_rate_before   boolean  optional    

set true if use current rate. Example: false

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\": \"omnis\",
    \"booking_room_id\": \"perferendis\",
    \"room_id\": \"excepturi\",
    \"arival\": \"et\",
    \"depature\": \"sequi\",
    \"use_rate_before\": false
}"
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": "omnis",
    "booking_room_id": "perferendis",
    "room_id": "excepturi",
    "arival": "et",
    "depature": "sequi",
    "use_rate_before": false
};

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' => 'omnis',
            'booking_room_id' => 'perferendis',
            'room_id' => 'excepturi',
            'arival' => 'et',
            'depature' => 'sequi',
            'use_rate_before' => false,
        ],
    ]
);
$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: omnis

booking_room_id   string     

uuid of Booking. Example: perferendis

room_id   string     

uuid of new Room id if have new room please provide id. Example: excepturi

arival   string     

uuid of new arival date format Y-m-d if have new arival date. Example: et

depature   string     

uuid of new depature date format Y-m-d if have new depature date. Example: sequi

use_rate_before   boolean  optional    

set true if use current rate. Example: false

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\": \"praesentium\",
    \"booking_room_id\": \"repudiandae\",
    \"room_type_id\": \"est\",
    \"room_id\": \"quasi\",
    \"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": "praesentium",
    "booking_room_id": "repudiandae",
    "room_type_id": "est",
    "room_id": "quasi",
    "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' => 'praesentium',
            'booking_room_id' => 'repudiandae',
            'room_type_id' => 'est',
            'room_id' => 'quasi',
            '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: praesentium

booking_room_id   string     

uuid of Booking Room. Example: repudiandae

room_type_id   string     

uuid of Room type. Example: est

room_id   string     

uuid of Room. Example: quasi

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\": \"rerum\",
    \"booking_room_id\": \"doloribus\",
    \"room_id\": \"aut\"
}"
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": "rerum",
    "booking_room_id": "doloribus",
    "room_id": "aut"
};

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' => 'rerum',
            'booking_room_id' => 'doloribus',
            'room_id' => 'aut',
        ],
    ]
);
$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: rerum

booking_room_id   string     

uuid of Booking Room. Example: doloribus

room_id   string  optional    

uuid of the target Room. Omit or send null to unassign the current room. Example: aut

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\": \"iure\"
}"
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": "iure"
};

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' => 'iure',
        ],
    ]
);
$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: iure

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\": \"dicta\",
    \"booking_id\": \"tenetur\",
    \"booking_room_id\": \"inventore\",
    \"payment_collect_type_id\": \"in\"
}"
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": "dicta",
    "booking_id": "tenetur",
    "booking_room_id": "inventore",
    "payment_collect_type_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/room-general-update/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'dicta',
            'booking_id' => 'tenetur',
            'booking_room_id' => 'inventore',
            'payment_collect_type_id' => 'in',
        ],
    ]
);
$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: dicta

booking_id   string     

uuid of booking Example: tenetur

booking_room_id   string     

uuid of booking room Example: inventore

payment_collect_type_id   string     

uuid of Payment Collect Type Example: in

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\": \"sed\",
    \"booking_id\": \"eligendi\",
    \"booking_room_id\": \"praesentium\"
}"
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": "sed",
    "booking_id": "eligendi",
    "booking_room_id": "praesentium"
};

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' => 'sed',
            'booking_id' => 'eligendi',
            'booking_room_id' => 'praesentium',
        ],
    ]
);
$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: sed

booking_id   string     

uuid of booking Example: eligendi

booking_room_id   string     

uuid of booking room Example: praesentium

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\": \"earum\",
    \"booking_id\": \"facilis\",
    \"booking_room_id\": \"omnis\"
}"
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": "earum",
    "booking_id": "facilis",
    "booking_room_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/roomrate/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'earum',
            'booking_id' => 'facilis',
            'booking_room_id' => 'omnis',
        ],
    ]
);
$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: earum

booking_id   string     

uuid of Booking. Example: facilis

booking_room_id   string     

uuid of Booking Room ID. Example: omnis

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\": \"voluptatum\",
    \"booking_id\": \"est\",
    \"booking_room_id\": \"et\",
    \"rate_plan_id\": \"alias\",
    \"tax_and_service_id\": \"sequi\",
    \"total_adult\": \"qui\",
    \"total_child\": \"laborum\",
    \"default_rate\": \"incidunt\",
    \"default_extra_adult_rate\": \"non\",
    \"default_extra_child_rate\": \"dolor\",
    \"default_rate_detail\": \"cumque\",
    \"mode\": \"\'calculation\']\"
}"
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": "voluptatum",
    "booking_id": "est",
    "booking_room_id": "et",
    "rate_plan_id": "alias",
    "tax_and_service_id": "sequi",
    "total_adult": "qui",
    "total_child": "laborum",
    "default_rate": "incidunt",
    "default_extra_adult_rate": "non",
    "default_extra_child_rate": "dolor",
    "default_rate_detail": "cumque",
    "mode": "'calculation']"
};

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' => 'voluptatum',
            'booking_id' => 'est',
            'booking_room_id' => 'et',
            'rate_plan_id' => 'alias',
            'tax_and_service_id' => 'sequi',
            'total_adult' => 'qui',
            'total_child' => 'laborum',
            'default_rate' => 'incidunt',
            'default_extra_adult_rate' => 'non',
            'default_extra_child_rate' => 'dolor',
            'default_rate_detail' => 'cumque',
            'mode' => '\'calculation\']',
        ],
    ]
);
$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: voluptatum

booking_id   string     

uuid of Booking. Example: est

booking_room_id   string     

uuid of Booking Room ID. Example: et

rate_plan_id   string     

uuid of Rate Plan ID if use mode roomratedaily. Example: alias

tax_and_service_id   string     

uuid of Rate Plan ID if use mode roomratedaily. Example: sequi

total_adult   string  optional    

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

total_child   string  optional    

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

default_rate   string  optional    

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

default_extra_adult_rate   string  optional    

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

default_extra_child_rate   string  optional    

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

default_rate_detail   string  optional    

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

mode   string  optional    

mode result. Example: 'calculation']

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\": \"quia\",
    \"booking_id\": \"ut\",
    \"booking_room_id\": \"necessitatibus\",
    \"rate_plan_id\": \"quo\",
    \"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": "quia",
    "booking_id": "ut",
    "booking_room_id": "necessitatibus",
    "rate_plan_id": "quo",
    "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' => 'quia',
                'booking_id' => 'ut',
                'booking_room_id' => 'necessitatibus',
                'rate_plan_id' => 'quo',
                '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: quia

booking_id   string     

uuid of Booking. Example: ut

booking_room_id   string     

uuid of Booking Room ID. Example: necessitatibus

rate_plan_id   string     

uuid of Rate Plan ID if use mode roomratedaily. Example: quo

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\": \"odit\",
    \"booking_id\": \"consequatur\",
    \"booking_room_id\": \"et\",
    \"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": "odit",
    "booking_id": "consequatur",
    "booking_room_id": "et",
    "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' => 'odit',
                'booking_id' => 'consequatur',
                'booking_room_id' => 'et',
                '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: odit

booking_id   string     

uuid of Booking. Example: consequatur

booking_room_id   string     

uuid of Booking Room ID. Example: et

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\": \"aspernatur\",
    \"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": "aspernatur",
    "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' => 'aspernatur',
            '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: aspernatur

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\": \"laboriosam\",
    \"activity_log_id\": \"dicta\",
    \"status\": \"error\",
    \"page_number\": \"odit\"
}"
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": "laboriosam",
    "activity_log_id": "dicta",
    "status": "error",
    "page_number": "odit"
};

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' => 'laboriosam',
            'activity_log_id' => 'dicta',
            'status' => 'error',
            'page_number' => 'odit',
        ],
    ]
);
$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: laboriosam

activity_log_id   string     

uuid of Cm Activity Log Example: dicta

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: odit

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\": \"amet\",
    \"property_agent_list_id\": \"earum\",
    \"cm_ota_list_id\": \"eos\",
    \"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": "amet",
    "property_agent_list_id": "earum",
    "cm_ota_list_id": "eos",
    "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' => 'amet',
            'property_agent_list_id' => 'earum',
            'cm_ota_list_id' => 'eos',
            '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: amet

property_agent_list_id   string     

UUID of Property Agent List Example: earum

cm_ota_list_id   string     

UUID of CM OTA List Example: eos

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/5b39f659-9081-345b-8886-557842fa4fa5" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/cm/agent/property/map/detail/5b39f659-9081-345b-8886-557842fa4fa5"
);

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/5b39f659-9081-345b-8886-557842fa4fa5';
$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: 5b39f659-9081-345b-8886-557842fa4fa5

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\": \"unde\",
    \"property_agent_list_id\": \"sunt\",
    \"cm_ota_list_id\": \"non\"
}"
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": "unde",
    "property_agent_list_id": "sunt",
    "cm_ota_list_id": "non"
};

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' => 'unde',
            'property_agent_list_id' => 'sunt',
            'cm_ota_list_id' => 'non',
        ],
    ]
);
$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: unde

property_agent_list_id   string     

uuid of Property Agent List Example: sunt

cm_ota_list_id   string     

uuid of Cm OTA List Example: non

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\": \"voluptates\",
    \"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": "voluptates",
    "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' => 'voluptates',
            '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: voluptates

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\": \"suscipit\"
}"
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": "suscipit"
};

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' => 'suscipit',
        ],
    ]
);
$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: suscipit

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\": \"saepe\",
    \"room_type_id\": \"sapiente\",
    \"is_multiple_request\": true,
    \"status\": 19,
    \"filter_by\": \"from\",
    \"search_date_from\": \"architecto\",
    \"search_date_to\": \"ullam\",
    \"page_no\": 14
}"
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": "saepe",
    "room_type_id": "sapiente",
    "is_multiple_request": true,
    "status": 19,
    "filter_by": "from",
    "search_date_from": "architecto",
    "search_date_to": "ullam",
    "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/cm/availability/update/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'saepe',
            'room_type_id' => 'sapiente',
            'is_multiple_request' => true,
            'status' => 19,
            'filter_by' => 'from',
            'search_date_from' => 'architecto',
            'search_date_to' => 'ullam',
            'page_no' => 14,
        ],
    ]
);
$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: saepe

room_type_id   string  optional    

optional uuid of Room Type Property if want filter by room Type Example: sapiente

is_multiple_request   boolean  optional    

this for get multiple request when not set room type and rate plan Example: true

status   integer  optional    

with value 1: inprogrees, 2: Success, 3: Errors Example: 19

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: architecto

search_date_to   string  optional    

with format date Y-m-d Example: ullam

page_no   integer  optional    

number of pagination Example: 14

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\": \"magnam\",
    \"mode\": \"room_type_list\",
    \"room_type_id\": \"tempora\",
    \"room_type_list\": [
        \"amet\"
    ],
    \"date_from\": \"doloribus\",
    \"date_to\": \"reprehenderit\"
}"
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": "magnam",
    "mode": "room_type_list",
    "room_type_id": "tempora",
    "room_type_list": [
        "amet"
    ],
    "date_from": "doloribus",
    "date_to": "reprehenderit"
};

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' => 'magnam',
            'mode' => 'room_type_list',
            'room_type_id' => 'tempora',
            'room_type_list' => [
                'amet',
            ],
            'date_from' => 'doloribus',
            'date_to' => 'reprehenderit',
        ],
    ]
);
$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: magnam

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: tempora

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: doloribus

date_to   string  optional    

with format date Y-m-d, this use when mode availability_list Example: reprehenderit

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\": \"cupiditate\",
    \"room_type_id\": \"tenetur\",
    \"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": "cupiditate",
    "room_type_id": "tenetur",
    "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' => 'cupiditate',
            'room_type_id' => 'tenetur',
            '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: cupiditate

room_type_id   string     

uuid of Room Type Property Example: tenetur

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\": \"repellendus\",
    \"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": "repellendus",
    "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' => 'repellendus',
                '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: repellendus

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\": \"omnis\",
    \"room_type_id\": [
        \"nemo\"
    ],
    \"date_start\": \"voluptatem\",
    \"date_end\": \"eius\"
}"
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": "omnis",
    "room_type_id": [
        "nemo"
    ],
    "date_start": "voluptatem",
    "date_end": "eius"
};

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' => 'omnis',
            'room_type_id' => [
                'nemo',
            ],
            'date_start' => 'voluptatem',
            'date_end' => 'eius',
        ],
    ]
);
$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: omnis

room_type_id   string[]     

uuid of Room Type Property

date_start   string     

with format date Y-m-d Example: voluptatem

date_end   string     

with format date Y-m-d Example: eius

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\": \"expedita\",
    \"status\": \"inprogress\",
    \"page_no\": 17
}"
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": "expedita",
    "status": "inprogress",
    "page_no": 17
};

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' => 'expedita',
            'status' => 'inprogress',
            'page_no' => 17,
        ],
    ]
);
$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: expedita

status   string     

with value Example: inprogress

Must be one of:
  • inprogress
  • done
page_no   integer  optional    

number of pagination Example: 17

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\": \"corporis\",
    \"ota_reservation_code\": \"voluptatem\",
    \"filter_by\": \"arrival\",
    \"search_date_from\": \"impedit\",
    \"search_date_to\": \"ut\",
    \"page_no\": 4
}"
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": "corporis",
    "ota_reservation_code": "voluptatem",
    "filter_by": "arrival",
    "search_date_from": "impedit",
    "search_date_to": "ut",
    "page_no": 4
};

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' => 'corporis',
            'ota_reservation_code' => 'voluptatem',
            'filter_by' => 'arrival',
            'search_date_from' => 'impedit',
            'search_date_to' => 'ut',
            'page_no' => 4,
        ],
    ]
);
$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: corporis

ota_reservation_code   string  optional    

optional reservation code from OTA Example: voluptatem

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: impedit

search_date_to   string  optional    

with format date Y-m-d Example: ut

page_no   integer  optional    

number of pagination Example: 4

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\": \"deserunt\",
    \"search\": \"non\",
    \"page_number\": \"culpa\"
}"
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": "deserunt",
    "search": "non",
    "page_number": "culpa"
};

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' => 'deserunt',
            'search' => 'non',
            'page_number' => 'culpa',
        ],
    ]
);
$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: deserunt

search   string  optional    

Pencarian berdasarkan Booking ID dari Channel Manager Example: non

page_number   numeric  optional    

number of page Example: culpa

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\": \"modi\"
}"
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": "modi"
};

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' => 'modi',
        ],
    ]
);
$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: modi

CM - Country Map

Maping Country Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/cm/country/map/details/b5b9ea12-5363-314e-9cbc-b908d55a08b5" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/cm/country/map/details/b5b9ea12-5363-314e-9cbc-b908d55a08b5"
);

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/b5b9ea12-5363-314e-9cbc-b908d55a08b5';
$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: b5b9ea12-5363-314e-9cbc-b908d55a08b5

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\": \"molestiae\",
    \"country_id\": \"in\",
    \"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": "molestiae",
    "country_id": "in",
    "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' => 'molestiae',
            'country_id' => 'in',
            '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: molestiae

country_id   string     

UUID of Country Example: in

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\": \"natus\"
}"
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": "natus"
};

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' => 'natus',
        ],
    ]
);
$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: natus

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\": \"ipsa\",
    \"room_type_id\": \"est\",
    \"rate_plan_id\": \"ut\",
    \"status\": 19,
    \"filter_by\": \"from\",
    \"is_multiple_request\": false,
    \"search_date_from\": \"deserunt\",
    \"search_date_to\": \"omnis\",
    \"page_no\": 18
}"
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": "ipsa",
    "room_type_id": "est",
    "rate_plan_id": "ut",
    "status": 19,
    "filter_by": "from",
    "is_multiple_request": false,
    "search_date_from": "deserunt",
    "search_date_to": "omnis",
    "page_no": 18
};

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' => 'ipsa',
            'room_type_id' => 'est',
            'rate_plan_id' => 'ut',
            'status' => 19,
            'filter_by' => 'from',
            'is_multiple_request' => false,
            'search_date_from' => 'deserunt',
            'search_date_to' => 'omnis',
            'page_no' => 18,
        ],
    ]
);
$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: ipsa

room_type_id   string  optional    

optional uuid of Room Type Property if want filter by room Type Example: est

rate_plan_id   string  optional    

optional uuid of Rate Plan Property if want filter by Rate Plan Example: ut

status   integer  optional    

with value 1: inprogrees, 2: Success, 3: Errors Example: 19

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: deserunt

search_date_to   string  optional    

with format date Y-m-d Example: omnis

page_no   integer  optional    

number of pagination Example: 18

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\": \"cumque\",
    \"mode\": \"room_type_list\",
    \"room_type_id\": \"quia\",
    \"rate_plan_id\": \"nulla\",
    \"room_type_and_rate_plan_list\": [
        \"consequatur\"
    ],
    \"date_from\": \"repellat\",
    \"date_to\": \"quia\"
}"
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": "cumque",
    "mode": "room_type_list",
    "room_type_id": "quia",
    "rate_plan_id": "nulla",
    "room_type_and_rate_plan_list": [
        "consequatur"
    ],
    "date_from": "repellat",
    "date_to": "quia"
};

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' => 'cumque',
            'mode' => 'room_type_list',
            'room_type_id' => 'quia',
            'rate_plan_id' => 'nulla',
            'room_type_and_rate_plan_list' => [
                'consequatur',
            ],
            'date_from' => 'repellat',
            'date_to' => 'quia',
        ],
    ]
);
$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: cumque

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: quia

rate_plan_id   string     

uuid of Rate Plan Property Example: nulla

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: repellat

date_to   string  optional    

with format date Y-m-d, this use when mode availability_list Example: quia

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\": \"accusamus\",
    \"room_type_id\": \"enim\",
    \"rate_plan_id\": \"repudiandae\",
    \"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": "accusamus",
    "room_type_id": "enim",
    "rate_plan_id": "repudiandae",
    "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' => 'accusamus',
            'room_type_id' => 'enim',
            'rate_plan_id' => 'repudiandae',
            '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: accusamus

room_type_id   string     

uuid of Room Type Property Example: enim

rate_plan_id   string     

uuid of Rate Plan Property Example: repudiandae

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\": \"magni\",
    \"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": "magni",
    "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' => 'magni',
                '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: magni

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\": \"et\",
    \"rate_plan_list\": [
        {
            \"room_type_id\": \"uuid\",
            \"rate_plan_id\": \"uuid\"
        }
    ],
    \"date_start\": \"facilis\",
    \"date_end\": \"dolores\"
}"
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": "et",
    "rate_plan_list": [
        {
            "room_type_id": "uuid",
            "rate_plan_id": "uuid"
        }
    ],
    "date_start": "facilis",
    "date_end": "dolores"
};

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' => 'et',
                'rate_plan_list' => [
                    $o[0],
                ],
                'date_start' => 'facilis',
                'date_end' => 'dolores',
            ],
            []
        ),
    ]
);
$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: et

rate_plan_list   string[]     

list of Rate Plan Property.

date_start   string     

with format date Y-m-d Example: facilis

date_end   string     

with format date Y-m-d Example: dolores

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\": \"est\",
    \"status\": \"inprogress\",
    \"page_no\": 15
}"
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": "est",
    "status": "inprogress",
    "page_no": 15
};

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' => 'est',
            'status' => 'inprogress',
            'page_no' => 15,
        ],
    ]
);
$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: est

status   string     

with value Example: inprogress

Must be one of:
  • inprogress
  • done
page_no   integer  optional    

number of pagination Example: 15

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\": \"eveniet\",
    \"property_id\": \"ipsam\",
    \"cm_property_id\": \"consequatur\",
    \"cm_property_code\": \"eum\",
    \"cm_property_name\": \"tempora\",
    \"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": "eveniet",
    "property_id": "ipsam",
    "cm_property_id": "consequatur",
    "cm_property_code": "eum",
    "cm_property_name": "tempora",
    "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' => 'eveniet',
            'property_id' => 'ipsam',
            'cm_property_id' => 'consequatur',
            'cm_property_code' => 'eum',
            'cm_property_name' => 'tempora',
            '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: eveniet

property_id   string     

UUID of Property Example: ipsam

cm_property_id   string     

ID of Property on Channel Manager Example: consequatur

cm_property_code   string  optional    

optional Code of Property on Channel Manager Example: eum

cm_property_name   string  optional    

optional Name of Property on Channel Manager Example: tempora

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/f3b6ed9b-63b0-3308-b8a4-256cd32ea5ba" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/cm/property/map/detail/f3b6ed9b-63b0-3308-b8a4-256cd32ea5ba"
);

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/f3b6ed9b-63b0-3308-b8a4-256cd32ea5ba';
$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: f3b6ed9b-63b0-3308-b8a4-256cd32ea5ba

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\": \"dolores\",
    \"cm_active_list_id\": \"minima\",
    \"cm_property_id\": \"odit\"
}"
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": "dolores",
    "cm_active_list_id": "minima",
    "cm_property_id": "odit"
};

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' => 'dolores',
            'cm_active_list_id' => 'minima',
            'cm_property_id' => 'odit',
        ],
    ]
);
$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: dolores

cm_active_list_id   string     

uuid of Cm Active List Example: minima

cm_property_id   string     

uuid of Cm Property Example: odit

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\": \"dolore\",
    \"property_id\": \"illum\",
    \"credentials\": \"aut\"
}"
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": "dolore",
    "property_id": "illum",
    "credentials": "aut"
};

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' => 'dolore',
            'property_id' => 'illum',
            'credentials' => 'aut',
        ],
    ]
);
$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: dolore

property_id   string  optional    

property id this use when mode is verify_cm,cm_property_list Example: illum

credentials   string  optional    

cnx user api key this use when mode is verify_cm,cm_property_list Example: aut

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\": \"est\"
}"
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": "est"
};

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' => 'est',
        ],
    ]
);
$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: est

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\": \"qui\",
    \"room_type_and_rate_plan_list\": [
        \"alias\"
    ]
}"
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": "qui",
    "room_type_and_rate_plan_list": [
        "alias"
    ]
};

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' => 'qui',
            'room_type_and_rate_plan_list' => [
                '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/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: qui

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\": \"autem\"
}"
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": "autem"
};

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' => 'autem',
        ],
    ]
);
$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: autem

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\": \"officia\",
    \"mode\": \"cm_room_type_list\",
    \"cm_room_type_id\": \"ea\"
}"
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": "officia",
    "mode": "cm_room_type_list",
    "cm_room_type_id": "ea"
};

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' => 'officia',
            'mode' => 'cm_room_type_list',
            'cm_room_type_id' => 'ea',
        ],
    ]
);
$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: officia

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: ea

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\": \"incidunt\",
    \"type_id\": \"enim\"
}"
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": "incidunt",
    "type_id": "enim"
};

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' => 'incidunt',
            'type_id' => 'enim',
        ],
    ]
);
$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: incidunt

type_id   string  optional    

uuid of COA type if want filter by type. Example: enim

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\": \"laboriosam\",
    \"parent_id\": \"optio\",
    \"type_id\": \"vel\",
    \"department_id\": \"sint\",
    \"code\": \"omnis\",
    \"name\": \"explicabo\"
}"
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": "laboriosam",
    "parent_id": "optio",
    "type_id": "vel",
    "department_id": "sint",
    "code": "omnis",
    "name": "explicabo"
};

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' => 'laboriosam',
            'parent_id' => 'optio',
            'type_id' => 'vel',
            'department_id' => 'sint',
            'code' => 'omnis',
            'name' => 'explicabo',
        ],
    ]
);
$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: laboriosam

parent_id   string  optional    

uuid of Chart Of Account required if coa is sub. Example: optio

type_id   string  optional    

uuid of COA type required if have coa type. Example: vel

department_id   string  optional    

uuid of COA type required if have coa department. Example: sint

code   string     

Code COA Example: omnis

name   string     

Name COA Example: explicabo

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\": \"fugiat\"
}"
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": "fugiat"
};

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' => 'fugiat',
        ],
    ]
);
$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: fugiat

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\": \"harum\"
}"
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": "harum"
};

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' => 'harum',
        ],
    ]
);
$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: harum

Download COA List Default

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/chart-of-account-default/list/print/distinctio" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/chart-of-account-default/list/print/distinctio"
);

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/distinctio';
$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: distinctio

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\": \"eos\",
    \"query_search\": \"necessitatibus\",
    \"type_id\": \"laborum\"
}"
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": "eos",
    "query_search": "necessitatibus",
    "type_id": "laborum"
};

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' => 'eos',
            'query_search' => 'necessitatibus',
            'type_id' => 'laborum',
        ],
    ]
);
$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: eos

query_search   string     

name of coa finding Example: necessitatibus

type_id   string  optional    

uuid of COA type if want filter by type. Example: laborum

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\": \"ut\",
    \"coa_id\": \"sit\",
    \"parent_id\": \"sit\",
    \"type_id\": \"et\",
    \"department_id\": \"ut\",
    \"code\": \"maiores\",
    \"name\": \"mollitia\"
}"
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": "ut",
    "coa_id": "sit",
    "parent_id": "sit",
    "type_id": "et",
    "department_id": "ut",
    "code": "maiores",
    "name": "mollitia"
};

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' => 'ut',
            'coa_id' => 'sit',
            'parent_id' => 'sit',
            'type_id' => 'et',
            'department_id' => 'ut',
            'code' => 'maiores',
            'name' => 'mollitia',
        ],
    ]
);
$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: ut

coa_id   string  optional    

uuid of Chart Of Account this required if update current data. Example: sit

parent_id   string  optional    

uuid of Chart Of Account required if coa is sub. Example: sit

type_id   string  optional    

uuid of COA type required if have coa type. Example: et

department_id   string  optional    

uuid of COA type required if have coa department. Example: ut

code   string     

Code COA Example: maiores

name   string     

Name COA Example: mollitia

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\": \"alias\"
}"
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": "alias"
};

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' => 'alias',
        ],
    ]
);
$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: alias

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\": \"voluptatem\",
    \"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": "voluptatem",
    "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' => 'voluptatem',
            '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: voluptatem

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\": \"quo\"
}"
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": "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/datatables';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'parameter' => 'quo',
        ],
    ]
);
$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: quo

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\": \"animi\",
    \"type_id\": \"fuga\",
    \"query_search\": \"aperiam\",
    \"page_no\": \"asperiores\"
}"
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": "animi",
    "type_id": "fuga",
    "query_search": "aperiam",
    "page_no": "asperiores"
};

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' => 'animi',
            'type_id' => 'fuga',
            'query_search' => 'aperiam',
            'page_no' => 'asperiores',
        ],
    ]
);
$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: animi

type_id   using  optional    

uuid coa type id. Example: fuga

query_search   using  optional    

for search coa By code or name. Example: aperiam

page_no   using  optional    

for set current page. Example: asperiores

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\": \"laudantium\",
    \"name\": \"porro\"
}"
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": "laudantium",
    "name": "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/update';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'template_id' => 'laudantium',
            'name' => 'porro',
        ],
    ]
);
$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: laudantium

name   this  optional    

name of coa template. Example: porro

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\": \"labore\",
    \"coa_id\": \"cumque\"
}"
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": "labore",
    "coa_id": "cumque"
};

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' => 'labore',
            'coa_id' => 'cumque',
        ],
    ]
);
$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: labore

coa_id   using  optional    

uuid coa id. Example: cumque

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\": \"ut\"
}"
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": "ut"
};

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' => 'ut',
        ],
    ]
);
$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: ut

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\": \"nobis\",
    \"coa_id\": \"nulla\"
}"
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": "nobis",
    "coa_id": "nulla"
};

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' => 'nobis',
            'coa_id' => 'nulla',
        ],
    ]
);
$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: nobis

coa_id   using  optional    

uuid coa id. Example: nulla

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\": \"nulla\"
}"
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": "nulla"
};

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' => 'nulla',
        ],
    ]
);
$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: nulla

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\": \"accusamus\",
    \"timezone_id\": \"eum\",
    \"language_id\": \"dolorem\",
    \"name\": \"recusandae\",
    \"phone\": \"facere\",
    \"password\": \"V{$d:w#sKTa^e\'Lxe\",
    \"password_confirmation\": \"atque\"
}"
const url = new URL(
    "http://localhost/api/v1/misc/currentuser"
);

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

let body = {
    "id": "accusamus",
    "timezone_id": "eum",
    "language_id": "dolorem",
    "name": "recusandae",
    "phone": "facere",
    "password": "V{$d:w#sKTa^e'Lxe",
    "password_confirmation": "atque"
};

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' => 'accusamus',
            'timezone_id' => 'eum',
            'language_id' => 'dolorem',
            'name' => 'recusandae',
            'phone' => 'facere',
            'password' => 'V{$d:w#sKTa^e\'Lxe',
            'password_confirmation' => 'atque',
        ],
    ]
);
$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: accusamus

timezone_id   string     

uuid of Timezone Example: eum

language_id   string     

uuid of Timezone Example: dolorem

name   string     

Name of Amenities Example: recusandae

phone   string     

User Phone Number Example: facere

password   string     

if want change user password Example: V{$d:w#sKTa^e'Lxe

password_confirmation   string     

if want change user password must same with this Example: atque

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: f85e3972-938a-391d-9714-05b040075d4c

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\": 18
}"
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": 18
};

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' => 18,
        ],
    ]
);
$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: 18

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\": \"ut\",
    \"days\": \"et\",
    \"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": "ut",
    "days": "et",
    "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' => 'ut',
            'days' => 'et',
            '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: ut

days   string  optional    

date of date report date format Y-m-d. Example: et

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/agent"
const url = new URL(
    "http://localhost/api/v1/booking/dayuse/dropdown/agent"
);

fetch(url, {
    method: "POST",
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/booking/dayuse/dropdown/agent';
$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: agent

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\": \"qui\",
    \"arival\": \"et\",
    \"depature\": \"et\",
    \"room_lists\": [
        \"quia\"
    ]
}"
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": "qui",
    "arival": "et",
    "depature": "et",
    "room_lists": [
        "quia"
    ]
};

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' => 'qui',
            'arival' => 'et',
            'depature' => 'et',
            'room_lists' => [
                'quia',
            ],
        ],
    ]
);
$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: qui

arival   string     

Y-m-d (same as depature) Example: et

depature   string     

Y-m-d Example: et

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\": \"maiores\",
    \"property_agent_id\": \"suscipit\",
    \"booking_status_id\": \"beatae\",
    \"payment_collect_type_id\": \"impedit\",
    \"arival\": \"consequatur\",
    \"depature\": \"quo\",
    \"guest_booking\": [],
    \"remark\": \"beatae\",
    \"booking_reference\": \"illum\",
    \"room_lists\": [
        \"cum\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/dayuse/create"
);

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

let body = {
    "property_id": "maiores",
    "property_agent_id": "suscipit",
    "booking_status_id": "beatae",
    "payment_collect_type_id": "impedit",
    "arival": "consequatur",
    "depature": "quo",
    "guest_booking": [],
    "remark": "beatae",
    "booking_reference": "illum",
    "room_lists": [
        "cum"
    ]
};

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' => 'maiores',
            'property_agent_id' => 'suscipit',
            'booking_status_id' => 'beatae',
            'payment_collect_type_id' => 'impedit',
            'arival' => 'consequatur',
            'depature' => 'quo',
            'guest_booking' => [],
            'remark' => 'beatae',
            'booking_reference' => 'illum',
            'room_lists' => [
                'cum',
            ],
        ],
    ]
);
$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: maiores

property_agent_id   string     

uuid of Property Agent (must be Walk-In or Direct source) Example: suscipit

booking_status_id   string     

uuid of Booking Status (typically Confirm) Example: beatae

payment_collect_type_id   string     

uuid of Payment Collect Type Example: impedit

arival   string     

Y-m-d (must equal depature — same-day) Example: consequatur

depature   string     

Y-m-d (must equal arival — same-day) Example: quo

guest_booking   object     

guest profile

remark   string  optional    

optional Example: beatae

booking_reference   string  optional    

optional Example: illum

room_lists   string[]     
room_type_id   string     

uuid of Room Type Example: minima

room_id   string     

uuid of Room Example: magni

rate_plan_id   string     

uuid of a Day-Use rate plan Example: harum

adult   integer     

min:0 Example: 15

child   integer     

min:0 Example: 8

extra_adult   integer     

min:0 Example: 19

extra_child   integer     

min:0 Example: 1

checkin_time   string     

H:i (24-hour) Example: ex

checkout_time   string     

H:i, > checkin_time, same day Example: ad

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\": \"et\",
    \"booking_id\": \"omnis\",
    \"booking_status_id\": \"quibusdam\",
    \"property_agent_id\": \"perspiciatis\",
    \"payment_collect_type_id\": \"consequatur\",
    \"booking_reference\": \"nesciunt\",
    \"remark\": \"deserunt\",
    \"guest_booking\": [],
    \"room_lists\": [
        \"possimus\"
    ]
}"
const url = new URL(
    "http://localhost/api/v1/booking/dayuse/save"
);

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

let body = {
    "property_id": "et",
    "booking_id": "omnis",
    "booking_status_id": "quibusdam",
    "property_agent_id": "perspiciatis",
    "payment_collect_type_id": "consequatur",
    "booking_reference": "nesciunt",
    "remark": "deserunt",
    "guest_booking": [],
    "room_lists": [
        "possimus"
    ]
};

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' => 'et',
            'booking_id' => 'omnis',
            'booking_status_id' => 'quibusdam',
            'property_agent_id' => 'perspiciatis',
            'payment_collect_type_id' => 'consequatur',
            'booking_reference' => 'nesciunt',
            'remark' => 'deserunt',
            'guest_booking' => [],
            'room_lists' => [
                'possimus',
            ],
        ],
    ]
);
$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: et

booking_id   string     

uuid Booking Example: omnis

booking_status_id   string  optional    

optional uuid Booking Status Example: quibusdam

property_agent_id   string  optional    

optional uuid Property Agent Example: perspiciatis

payment_collect_type_id   string  optional    

optional uuid Payment Collect Type Example: consequatur

booking_reference   string  optional    

optional Example: nesciunt

remark   string  optional    

optional Example: deserunt

guest_booking   object  optional    

optional

room_lists   string[]     
changes_status   string     

Example: update

Must be one of:
  • add
  • update
  • remove
booking_room_id   string     

for update/remove Example: ut

room_type_id   string     

for add Example: vero

room_id   string     

for add Example: ea

rate_plan_id   string     

for add/update Example: ut

arrival   string     

for add/update Y-m-d (must equal departure) Example: non

departure   string     

for add/update Y-m-d (must equal arrival) Example: vel

checkin_time   string     

for add/update H:i Example: nulla

checkout_time   string     

for add/update H:i Example: consequatur

adult   integer     

for add/update Example: 12

child   integer     

for add/update Example: 7

extra_adult   integer     

for add/update Example: 19

extra_child   integer     

for add/update Example: 4

list_inclusion   string[]  optional    

optional

Endpoints

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\php7BD8.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\php7BD8.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\php7BD8.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\": \"est\",
    \"check_in_end_date\": \"fugit\",
    \"booking_id\": \"sed\",
    \"guest_name\": \"maiores\",
    \"ota_name\": \"vel\",
    \"import_batch\": \"magnam\",
    \"source\": \"non\",
    \"status\": \"quia\",
    \"page_number\": 14,
    \"per_page\": 9
}"
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": "est",
    "check_in_end_date": "fugit",
    "booking_id": "sed",
    "guest_name": "maiores",
    "ota_name": "vel",
    "import_batch": "magnam",
    "source": "non",
    "status": "quia",
    "page_number": 14,
    "per_page": 9
};

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' => 'est',
            'check_in_end_date' => 'fugit',
            'booking_id' => 'sed',
            'guest_name' => 'maiores',
            'ota_name' => 'vel',
            'import_batch' => 'magnam',
            'source' => 'non',
            'status' => 'quia',
            'page_number' => 14,
            'per_page' => 9,
        ],
    ]
);
$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: est

check_in_end_date   string  optional    

optional Check-in to (Y-m-d). Use together with check_in_start_date. Example: fugit

booking_id   string  optional    

optional Partial match on booking ID. Example: sed

guest_name   string  optional    

optional Partial match (case-insensitive) on guest name. Example: maiores

ota_name   string  optional    

optional Partial match (case-insensitive) on OTA name. Example: vel

import_batch   string  optional    

optional Filter by import batch ID. Example: magnam

source   string  optional    

optional Exact source key (e.g. agoda). Example: non

status   string  optional    

optional Partial match (case-insensitive) on booking status. Example: quia

page_number   integer  optional    

optional Page number (minimum 1). If omitted, page 1 is used. Example: 14

per_page   integer  optional    

optional Results per page. Default: 30, max: 100. Example: 9

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/room" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"libero\",
    \"query\": \"tenetur\",
    \"arival_date\": \"exercitationem\",
    \"depature_date\": \"sit\",
    \"room_type_id\": \"reprehenderit\",
    \"total_adult\": 3,
    \"total_child\": 10,
    \"findby\": \"first_name\",
    \"findvalue\": \"aut\"
}"
const url = new URL(
    "http://localhost/api/v1/property/future-booking-imports/dropdown/room"
);

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

let body = {
    "property_id": "libero",
    "query": "tenetur",
    "arival_date": "exercitationem",
    "depature_date": "sit",
    "room_type_id": "reprehenderit",
    "total_adult": 3,
    "total_child": 10,
    "findby": "first_name",
    "findvalue": "aut"
};

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/room';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'libero',
            'query' => 'tenetur',
            'arival_date' => 'exercitationem',
            'depature_date' => 'sit',
            'room_type_id' => 'reprehenderit',
            'total_adult' => 3,
            'total_child' => 10,
            'findby' => 'first_name',
            'findvalue' => 'aut',
        ],
    ]
);
$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: room

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: libero

query   string  optional    

optional Search keyword for agent, room_type, and rate_plan. Example: tenetur

arival_date   string  optional    

optional Required for room and rate_plan. Format: Y-m-d. Example: exercitationem

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: reprehenderit

total_adult   integer  optional    

optional Additional filter for rate_plan. Example: 3

total_child   integer  optional    

optional Additional filter for rate_plan. Example: 10

findby   string  optional    

optional Required for guestexistingfind. Example: first_name

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

optional Required for guestexistingfind. Value to search by. Example: aut

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\": [
        \"cum\"
    ]
}"
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": [
        "cum"
    ]
};

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' => [
                'cum',
            ],
        ],
    ]
);
$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\": \"perspiciatis\",
    \"future_booking_import_id\": [
        \"quas\"
    ],
    \"import_batch_id\": \"minus\"
}"
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": "perspiciatis",
    "future_booking_import_id": [
        "quas"
    ],
    "import_batch_id": "minus"
};

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' => 'perspiciatis',
            'future_booking_import_id' => [
                'quas',
            ],
            'import_batch_id' => 'minus',
        ],
    ]
);
$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: perspiciatis

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: minus

General Area

Area Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/area/details/a3b6f278-1ad7-3537-82eb-869cda0c854f" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/area/details/a3b6f278-1ad7-3537-82eb-869cda0c854f"
);

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/a3b6f278-1ad7-3537-82eb-869cda0c854f';
$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: a3b6f278-1ad7-3537-82eb-869cda0c854f

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\": \"excepturi\",
    \"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": "excepturi",
    "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' => 'excepturi',
            '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: excepturi

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\": \"et\"
}"
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": "et"
};

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' => 'et',
        ],
    ]
);
$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: et

General Country

Country Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/country/details/c7c28508-4d39-3364-9bf7-f4838c601ba2" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/country/details/c7c28508-4d39-3364-9bf7-f4838c601ba2"
);

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/c7c28508-4d39-3364-9bf7-f4838c601ba2';
$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: c7c28508-4d39-3364-9bf7-f4838c601ba2

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\": \"natus\"
}"
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": "natus"
};

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' => 'natus',
        ],
    ]
);
$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: natus

General Currency

Currency Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/currency/details/8872d0f4-b4c4-3d48-9d4e-b3e14f350ed5" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/currency/details/8872d0f4-b4c4-3d48-9d4e-b3e14f350ed5"
);

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/8872d0f4-b4c4-3d48-9d4e-b3e14f350ed5';
$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: 8872d0f4-b4c4-3d48-9d4e-b3e14f350ed5

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\": \"et\",
    \"code\": \"unde\",
    \"symbol\": \"aut\",
    \"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": "et",
    "code": "unde",
    "symbol": "aut",
    "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' => 'et',
            'code' => 'unde',
            'symbol' => 'aut',
            '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: et

code   string     

the code of Currency. Example: unde

symbol   string     

the symbol of Currency. Example: aut

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\": \"error\"
}"
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": "error"
};

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' => 'error',
        ],
    ]
);
$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: error

General Language

Language Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/languages/details/16c223de-d433-3e2f-9ef4-54ffab595460" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/languages/details/16c223de-d433-3e2f-9ef4-54ffab595460"
);

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/16c223de-d433-3e2f-9ef4-54ffab595460';
$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: 16c223de-d433-3e2f-9ef4-54ffab595460

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\": \"dolorem\",
    \"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": "dolorem",
    "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' => 'dolorem',
            '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: dolorem

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/f9a7dab9-3e89-328f-9d14-48aa28af7127" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/region/details/f9a7dab9-3e89-328f-9d14-48aa28af7127"
);

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/f9a7dab9-3e89-328f-9d14-48aa28af7127';
$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: f9a7dab9-3e89-328f-9d14-48aa28af7127

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\": \"est\",
    \"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": "est",
    "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' => 'est',
            '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: est

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\": \"voluptas\"
}"
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": "voluptas"
};

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' => 'voluptas',
        ],
    ]
);
$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: voluptas

General Timezone

TimeZone Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/general/timezone/details/8bf19f0f-d9a1-3046-aa37-0b5e7ce9c3e2" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/general/timezone/details/8bf19f0f-d9a1-3046-aa37-0b5e7ce9c3e2"
);

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/8bf19f0f-d9a1-3046-aa37-0b5e7ce9c3e2';
$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: 8bf19f0f-d9a1-3046-aa37-0b5e7ce9c3e2

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\": \"libero\",
    \"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": "libero",
    "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' => 'libero',
            '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: libero

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\": \"sint\"
}"
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": "sint"
};

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' => 'sint',
        ],
    ]
);
$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: sint

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\": \"voluptatum\",
    \"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": "voluptatum",
    "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' => 'voluptatum',
            '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: voluptatum

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\": \"harum\",
    \"days\": \"quas\",
    \"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": "harum",
    "days": "quas",
    "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' => 'harum',
            'days' => 'quas',
            '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: harum

days   string  optional    

date of date report date format Y-m-d. Example: quas

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/reiciendis" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"maiores\",
    \"days\": \"suscipit\",
    \"list_type\": \"source_list.\",
    \"show_by\": \"room_type.\"
}"
const url = new URL(
    "http://localhost/api/v1/property/guestdaily/list/print/reiciendis"
);

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

let body = {
    "property_id": "maiores",
    "days": "suscipit",
    "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/reiciendis';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'maiores',
            'days' => 'suscipit',
            '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: reiciendis

Body Parameters

property_id   string     

uuid of Property. Example: maiores

days   string  optional    

date of date report date format Y-m-d. Example: suscipit

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/927a078c-11ec-3d41-b243-67ef27d10950" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property-groups/details/927a078c-11ec-3d41-b243-67ef27d10950"
);

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/927a078c-11ec-3d41-b243-67ef27d10950';
$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: 927a078c-11ec-3d41-b243-67ef27d10950

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\": \"doloremque\"
}"
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": "doloremque"
};

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' => 'doloremque',
        ],
    ]
);
$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: doloremque

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\": \"laborum\",
    \"nightaudit_process_date\": \"fugiat\",
    \"ignore_bill_outstanding\": \"et\"
}"
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": "laborum",
    "nightaudit_process_date": "fugiat",
    "ignore_bill_outstanding": "et"
};

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' => 'laborum',
            'nightaudit_process_date' => 'fugiat',
            'ignore_bill_outstanding' => 'et',
        ],
    ]
);
$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: laborum

nightaudit_process_date   string  optional    

add this value nightaudit date will process with format date Y-m-d. Exmp:2024-02-18 Example: fugiat

ignore_bill_outstanding   bolean  optional    

this value set if you want ignore outstanding bill Example: et

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\": \"consequatur\"
}"
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": "consequatur"
};

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' => 'consequatur',
        ],
    ]
);
$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: consequatur

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\": \"rem\",
    \"name\": \"sunt\",
    \"is_permanent\": \"doloribus\"
}"
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": "rem",
    "name": "sunt",
    "is_permanent": "doloribus"
};

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' => 'rem',
            'name' => 'sunt',
            'is_permanent' => 'doloribus',
        ],
    ]
);
$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: rem

name   string     

Name of Payment Collect Type Example: sunt

is_permanent   bolean     

set true if Payment Collect Type permanent can't update or edit Example: doloribus

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\": \"ratione\"
}"
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": "ratione"
};

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' => 'ratione',
        ],
    ]
);
$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: ratione

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\": \"officiis\",
    \"start_date\": \"officiis\",
    \"end_date\": \"a\",
    \"payment_option_id\": \"perferendis\",
    \"created_by_id\": \"est\"
}"
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": "officiis",
    "start_date": "officiis",
    "end_date": "a",
    "payment_option_id": "perferendis",
    "created_by_id": "est"
};

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' => 'officiis',
            'start_date' => 'officiis',
            'end_date' => 'a',
            'payment_option_id' => 'perferendis',
            'created_by_id' => 'est',
        ],
    ]
);
$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: officiis

start_date   string  optional    

start date of date receive payment date format Y-m-d. Example: officiis

end_date   string  optional    

end date of date receive payment date format Y-m-d. Example: a

payment_option_id   string     

uuid of payment_option add this parameter if want for spesification method. Example: perferendis

created_by_id   string     

uuid of user add this parameter if want for payment created by. Example: est

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\": \"magnam\",
    \"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": "magnam",
    "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' => 'magnam',
            '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: magnam

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=dolore"\
    --form "property_id=nesciunt"\
    --form "agent_source_id=sunt"\
    --form "name=consequatur"\
    --form "address=ut"\
    --form "phone=accusamus"\
    --form "[email protected]"\
    --form "website=et"\
    --form "bg_color=sequi"\
    --form "fg_color=quis"\
    --form "logo_path=@C:\Users\agusb\AppData\Local\Temp\php78C6.tmp" \
    --form "icon_path=@C:\Users\agusb\AppData\Local\Temp\php78C7.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', 'dolore');
body.append('property_id', 'nesciunt');
body.append('agent_source_id', 'sunt');
body.append('name', 'consequatur');
body.append('address', 'ut');
body.append('phone', 'accusamus');
body.append('email', '[email protected]');
body.append('website', 'et');
body.append('bg_color', 'sequi');
body.append('fg_color', 'quis');
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' => 'dolore'
            ],
            [
                'name' => 'property_id',
                'contents' => 'nesciunt'
            ],
            [
                'name' => 'agent_source_id',
                'contents' => 'sunt'
            ],
            [
                'name' => 'name',
                'contents' => 'consequatur'
            ],
            [
                'name' => 'address',
                'contents' => 'ut'
            ],
            [
                'name' => 'phone',
                'contents' => 'accusamus'
            ],
            [
                'name' => 'email',
                'contents' => '[email protected]'
            ],
            [
                'name' => 'website',
                'contents' => 'et'
            ],
            [
                'name' => 'bg_color',
                'contents' => 'sequi'
            ],
            [
                'name' => 'fg_color',
                'contents' => 'quis'
            ],
            [
                'name' => 'logo_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php78C6.tmp', 'r')
            ],
            [
                'name' => 'icon_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php78C7.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"
    }
}
 

Request   

POST api/v1/property/agent

Headers

Authorization        

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

Content-Type        

Example: multipart/form-data

Body Parameters

id   string     

uuid of Property agent Example: dolore

property_id   string     

uuid of Property Example: nesciunt

agent_source_id   string     

uuid of Property Example: sunt

name   string     

Name of Agent Example: consequatur

address   string  optional    

Address of Agent Example: ut

phone   string  optional    

Phone of Agent Example: accusamus

email   string  optional    

E-mail of Agent Example: [email protected]

website   string  optional    

website of Agent Example: et

logo_path   file  optional    

logo dimension must width 1350 x height 750 Example: C:\Users\agusb\AppData\Local\Temp\php78C6.tmp

icon_path   file  optional    

icon dimension ratio 1/1 Example: C:\Users\agusb\AppData\Local\Temp\php78C7.tmp

bg_color   string  optional    

position on hex color text of Room Status Example: sequi

fg_color   string  optional    

position on hex color text of Room Status Example: quis

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\": \"dolore\",
    \"agent_id\": \"aut\"
}"
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": "dolore",
    "agent_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/agent/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'dolore',
            'agent_id' => 'aut',
        ],
    ]
);
$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/agent/detail

Headers

Authorization        

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

Content-Type        

Example: application/json

Body Parameters

property_id   string     

uuid of Property Example: dolore

agent_id   string     

uuid of Property Agent Example: aut

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\": \"autem\"
}"
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": "autem"
};

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' => 'autem',
        ],
    ]
);
$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: autem

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\": \"quia\",
    \"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": "quia",
    "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' => 'quia',
            '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: quia

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\": \"sed\"
}"
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": "sed"
};

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' => 'sed',
        ],
    ]
);
$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: sed

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\": \"dolores\",
    \"mode\": \"coa_list\",
    \"coa_search\": \"corporis\"
}"
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": "dolores",
    "mode": "coa_list",
    "coa_search": "corporis"
};

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' => 'dolores',
            'mode' => 'coa_list',
            'coa_search' => 'corporis',
        ],
    ]
);
$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: dolores

mode   string  optional    

The language. Example: coa_list

Must be one of:
  • coa_list
coa_search   string  optional    

name of Chart Account Example: corporis

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\": \"minima\",
    \"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": "minima",
    "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' => 'minima',
            '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: minima

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\": \"quos\",
    \"department_id\": \"sed\"
}"
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": "quos",
    "department_id": "sed"
};

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' => 'quos',
            'department_id' => 'sed',
        ],
    ]
);
$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: quos

department_id   string     

uuid of Property Department Example: sed

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\": \"possimus\",
    \"department_id\": \"voluptatum\",
    \"department_name\": \"incidunt\"
}"
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": "possimus",
    "department_id": "voluptatum",
    "department_name": "incidunt"
};

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' => 'possimus',
            'department_id' => 'voluptatum',
            'department_name' => 'incidunt',
        ],
    ]
);
$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: possimus

department_id   string     

uuid of Department Example: voluptatum

department_name   string     

Name of Department Example: incidunt

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\": \"eveniet\",
    \"property_id\": \"atque\",
    \"supplier_id\": \"et\",
    \"coa_id\": \"quidem\",
    \"trx_date\": \"sunt\",
    \"total_amount\": 17,
    \"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": "eveniet",
    "property_id": "atque",
    "supplier_id": "et",
    "coa_id": "quidem",
    "trx_date": "sunt",
    "total_amount": 17,
    "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' => 'eveniet',
            'property_id' => 'atque',
            'supplier_id' => 'et',
            'coa_id' => 'quidem',
            'trx_date' => 'sunt',
            'total_amount' => 17,
            '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: eveniet

property_id   string     

uuid of Property Example: atque

supplier_id   string     

uuid of Supplier Example: et

coa_id   string     

uuid of Chart of Account Example: quidem

trx_date   string  optional    

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

total_amount   integer     

of expense amount Example: 17

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\": \"nostrum\",
    \"property_id\": \"architecto\"
}"
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": "nostrum",
    "property_id": "architecto"
};

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' => 'nostrum',
            'property_id' => 'architecto',
        ],
    ]
);
$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: nostrum

property_id   string     

uuid of Property Example: architecto

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\": \"est\",
    \"property_id\": \"libero\"
}"
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": "est",
    "property_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/backoffice/expense-invoice/close';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'exp_invoice_id' => 'est',
            'property_id' => 'libero',
        ],
    ]
);
$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: est

property_id   string     

uuid of Property Example: libero

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\": \"nihil\",
    \"supplier_search\": \"sunt\",
    \"coa_search\": \"perspiciatis\",
    \"default_value\": \"aspernatur\",
    \"payment_option_id\": \"soluta\",
    \"payment_option_search\": \"explicabo\",
    \"payment_method_search\": \"officiis\"
}"
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": "nihil",
    "supplier_search": "sunt",
    "coa_search": "perspiciatis",
    "default_value": "aspernatur",
    "payment_option_id": "soluta",
    "payment_option_search": "explicabo",
    "payment_method_search": "officiis"
};

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' => 'nihil',
            'supplier_search' => 'sunt',
            'coa_search' => 'perspiciatis',
            'default_value' => 'aspernatur',
            'payment_option_id' => 'soluta',
            'payment_option_search' => 'explicabo',
            'payment_method_search' => 'officiis',
        ],
    ]
);
$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: nihil

supplier_search   string     

supplier name Example: sunt

coa_search   string     

name of coa finding Example: perspiciatis

default_value   string     

name of coa default value Example: aspernatur

payment_option_id   string     

uuid of payment option Example: soluta

payment_option_search   string     

name of Payment option Example: explicabo

payment_method_search   string     

name of Payment method Example: officiis

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\": \"provident\",
    \"name\": \"excepturi\"
}"
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": "provident",
    "name": "excepturi"
};

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' => 'provident',
            'name' => 'excepturi',
        ],
    ]
);
$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: provident

name   string     

Name of Amenities Example: excepturi

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\": \"aspernatur\"
}"
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": "aspernatur"
};

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' => 'aspernatur',
        ],
    ]
);
$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: aspernatur

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\": \"quidem\",
    \"guest_id\": \"unde\",
    \"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": "quidem",
    "guest_id": "unde",
    "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' => 'quidem',
            'guest_id' => 'unde',
            '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: quidem

guest_id   string     

uuid of Property Guest Profile Example: unde

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\": \"ab\",
    \"guest_id\": \"in\",
    \"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": "ab",
    "guest_id": "in",
    "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' => 'ab',
            'guest_id' => 'in',
            '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: ab

guest_id   string     

uuid of Property Guest Profile Example: in

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\": \"est\",
    \"guest_id\": \"distinctio\",
    \"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": "est",
    "guest_id": "distinctio",
    "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' => 'est',
            'guest_id' => 'distinctio',
            '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: est

guest_id   string     

uuid of Property Guest Profile Example: distinctio

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\": \"non\"
}"
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": "non"
};

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' => 'non',
        ],
    ]
);
$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: non

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\": \"tempora\",
    \"guest_id\": \"non\"
}"
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": "tempora",
    "guest_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/guestprofile/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'tempora',
            'guest_id' => 'non',
        ],
    ]
);
$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: tempora

guest_id   string     

uuid of Property Guest Profile Example: non

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\": \"odio\",
    \"property_id\": \"tempore\",
    \"guest_prefix_id\": \"quia\",
    \"first_name\": \"nam\",
    \"last_name\": \"nisi\",
    \"country_id\": \"illum\",
    \"national_id\": \"enim\",
    \"identity_type_id\": \"porro\",
    \"identity_no\": \"qui\",
    \"email\": \"[email protected]\",
    \"phone\": \"dolor\",
    \"address\": \"doloribus\"
}"
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": "odio",
    "property_id": "tempore",
    "guest_prefix_id": "quia",
    "first_name": "nam",
    "last_name": "nisi",
    "country_id": "illum",
    "national_id": "enim",
    "identity_type_id": "porro",
    "identity_no": "qui",
    "email": "[email protected]",
    "phone": "dolor",
    "address": "doloribus"
};

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' => 'odio',
            'property_id' => 'tempore',
            'guest_prefix_id' => 'quia',
            'first_name' => 'nam',
            'last_name' => 'nisi',
            'country_id' => 'illum',
            'national_id' => 'enim',
            'identity_type_id' => 'porro',
            'identity_no' => 'qui',
            'email' => '[email protected]',
            'phone' => 'dolor',
            'address' => 'doloribus',
        ],
    ]
);
$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: odio

property_id   string     

uuid of Property Example: tempore

guest_prefix_id   string     

uuid of Guest Prefix Example: quia

first_name   string     

First Name Of Guest Profile Example: nam

last_name   string     

Last Name Of Guest Profile Example: nisi

country_id   string     

uuid of Country Example: illum

national_id   string     

uuid of National same use country data Example: enim

identity_type_id   string     

uuid of Guest Identity Type Example: porro

identity_no   string     

Identity Number Of Guest Profile Example: qui

email   string     

Email Of Guest Profile Example: [email protected]

phone   string     

Phone Of Guest Profile Example: dolor

address   string     

Address Of Guest Profile Example: doloribus

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\": \"sit\",
    \"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": "sit",
    "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' => 'sit',
            '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: sit

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\": \"voluptatem\"
}"
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": "voluptatem"
};

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' => 'voluptatem',
        ],
    ]
);
$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: voluptatem

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\": \"et\",
    \"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": "et",
    "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' => 'et',
            '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: et

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\": \"similique\",
    \"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": "similique",
    "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' => 'similique',
            '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: similique

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\": \"magni\",
    \"is_auto\": true,
    \"run_time_schedule\": \"voluptas\"
}"
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": "magni",
    "is_auto": true,
    "run_time_schedule": "voluptas"
};

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' => 'magni',
            'is_auto' => true,
            'run_time_schedule' => 'voluptas',
        ],
    ]
);
$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: magni

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: voluptas

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\": \"eum\",
    \"poduct_category_id\": \"rem\"
}"
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": "eum",
    "poduct_category_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/product-category/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eum',
            'poduct_category_id' => 'rem',
        ],
    ]
);
$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: eum

poduct_category_id   string     

uuid of Property Product Category Example: rem

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\": \"deleniti\",
    \"product_category_id\": \"rerum\",
    \"name\": \"magni\"
}"
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": "deleniti",
    "product_category_id": "rerum",
    "name": "magni"
};

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' => 'deleniti',
            'product_category_id' => 'rerum',
            'name' => 'magni',
        ],
    ]
);
$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: deleniti

product_category_id   string     

uuid of Product Category Example: rerum

name   string     

Name of Product Category Example: magni

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\": \"sint\"
}"
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": "sint"
};

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' => 'sint',
        ],
    ]
);
$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: sint

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\": \"corrupti\",
    \"product_id\": \"quibusdam\"
}"
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": "corrupti",
    "product_id": "quibusdam"
};

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' => 'corrupti',
            'product_id' => 'quibusdam',
        ],
    ]
);
$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: corrupti

product_id   string     

uuid of Property Room Status Example: quibusdam

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\": \"dolorum\",
    \"property_id\": \"ullam\",
    \"category_id\": \"reprehenderit\",
    \"department_id\": \"repellat\",
    \"sell_coa_id\": \"odit\",
    \"cost_coa_id\": \"dicta\",
    \"name\": \"est\",
    \"remark\": \"aut\",
    \"sell_amount\": 6,
    \"cost_amount\": 8,
    \"is_active\": \"voluptatem\"
}"
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": "dolorum",
    "property_id": "ullam",
    "category_id": "reprehenderit",
    "department_id": "repellat",
    "sell_coa_id": "odit",
    "cost_coa_id": "dicta",
    "name": "est",
    "remark": "aut",
    "sell_amount": 6,
    "cost_amount": 8,
    "is_active": "voluptatem"
};

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' => 'dolorum',
            'property_id' => 'ullam',
            'category_id' => 'reprehenderit',
            'department_id' => 'repellat',
            'sell_coa_id' => 'odit',
            'cost_coa_id' => 'dicta',
            'name' => 'est',
            'remark' => 'aut',
            'sell_amount' => 6,
            'cost_amount' => 8,
            'is_active' => 'voluptatem',
        ],
    ]
);
$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: dolorum

property_id   string     

uuid of Property Example: ullam

category_id   string     

uuid of Category Example: reprehenderit

department_id   string     

uuid of Department Example: repellat

sell_coa_id   string     

uuid of Selling Chart Of Account Example: odit

cost_coa_id   string     

uuid of Cost Chart Of Account Example: dicta

name   string     

Name of Product Example: est

remark   string  optional    

Remark Of Product Example: aut

sell_amount   integer     

sell amount price Example: 6

cost_amount   integer     

cost amount price Example: 8

is_active   bolean  optional    

uuid of room amenities Example: voluptatem

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\": \"esse\"
}"
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": "esse"
};

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' => 'esse',
        ],
    ]
);
$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: esse

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\": \"numquam\"
}"
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": "numquam"
};

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' => 'numquam',
        ],
    ]
);
$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: numquam

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\": \"est\",
    \"room_type_id\": \"ut\",
    \"room_id\": \"labore\"
}"
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": "est",
    "room_type_id": "ut",
    "room_id": "labore"
};

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' => 'est',
            'room_type_id' => 'ut',
            'room_id' => 'labore',
        ],
    ]
);
$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: est

room_type_id   string     

uuid of Property Room Type Example: ut

room_id   string     

uuid of Property Room Example: labore

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\": \"qui\",
    \"room_type_id\": \"vitae\"
}"
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": "qui",
    "room_type_id": "vitae"
};

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' => 'qui',
            'room_type_id' => 'vitae',
        ],
    ]
);
$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: qui

room_type_id   string     

uuid of Property Room Status Example: vitae

Create / Update Room

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"facere\",
    \"property_id\": \"et\",
    \"room_type_id\": \"accusamus\",
    \"room_bed_type_id\": \"nostrum\",
    \"name\": \"nihil\",
    \"description\": \"Eveniet occaecati eaque ipsa fugiat.\"
}"
const url = new URL(
    "http://localhost/api/v1/property/room"
);

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

let body = {
    "id": "facere",
    "property_id": "et",
    "room_type_id": "accusamus",
    "room_bed_type_id": "nostrum",
    "name": "nihil",
    "description": "Eveniet occaecati eaque ipsa fugiat."
};

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' => 'facere',
            'property_id' => 'et',
            'room_type_id' => 'accusamus',
            'room_bed_type_id' => 'nostrum',
            'name' => 'nihil',
            'description' => 'Eveniet occaecati eaque ipsa fugiat.',
        ],
    ]
);
$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: facere

property_id   string     

uuid of Property Example: et

room_type_id   string     

uuid of Room Type Example: accusamus

room_bed_type_id   string     

uuid of Room Bed Type Example: nostrum

name   string     

Name of Room Example: nihil

description   string     

Description of Room Example: Eveniet occaecati eaque ipsa fugiat.

Remove Room

Example request:
curl --request POST \
    "http://localhost/api/v1/property/room/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"hic\"
}"
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": "hic"
};

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' => 'hic',
        ],
    ]
);
$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: hic

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\": \"sapiente\",
    \"mode\": \"bed_type\",
    \"room_id\": \"incidunt\"
}"
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": "sapiente",
    "mode": "bed_type",
    "room_id": "incidunt"
};

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' => 'sapiente',
            'mode' => 'bed_type',
            'room_id' => 'incidunt',
        ],
    ]
);
$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: sapiente

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: incidunt

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\": \"necessitatibus\",
    \"room_id\": \"est\",
    \"room_status_id\": \"totam\"
}"
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": "necessitatibus",
    "room_id": "est",
    "room_status_id": "totam"
};

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' => 'necessitatibus',
            'room_id' => 'est',
            'room_status_id' => 'totam',
        ],
    ]
);
$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: necessitatibus

room_id   string     

uuid of Room Example: est

room_status_id   string     

uuid of Room Status list Example: totam

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\": \"labore\",
    \"room_bed_type_id\": \"placeat\"
}"
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": "labore",
    "room_bed_type_id": "placeat"
};

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' => 'labore',
            'room_bed_type_id' => 'placeat',
        ],
    ]
);
$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: labore

room_bed_type_id   string     

uuid of Property Room Status Example: placeat

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\": \"minima\",
    \"name\": \"et\"
}"
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": "minima",
    "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/room-bed-type';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'minima',
            'name' => 'et',
        ],
    ]
);
$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: minima

name   string     

Name of Room Type Example: et

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\": \"ipsam\"
}"
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": "ipsam"
};

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' => 'ipsam',
        ],
    ]
);
$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: ipsam

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\": \"eos\",
    \"id\": \"et\"
}"
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": "eos",
    "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-maintenance/detail';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'property_id' => 'eos',
            'id' => 'et',
        ],
    ]
);
$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: eos

id   string     

uuid of Room Maintenance. Example: et

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\": \"veniam\",
    \"is_remove\": false,
    \"property_id\": \"dolor\",
    \"room_type_id\": \"eum\",
    \"room_id\": \"dignissimos\",
    \"start_date\": \"2026-05-20\",
    \"end_date\": \"2026-05-22\",
    \"remark\": \"animi\"
}"
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": "veniam",
    "is_remove": false,
    "property_id": "dolor",
    "room_type_id": "eum",
    "room_id": "dignissimos",
    "start_date": "2026-05-20",
    "end_date": "2026-05-22",
    "remark": "animi"
};

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' => 'veniam',
            'is_remove' => false,
            'property_id' => 'dolor',
            'room_type_id' => 'eum',
            'room_id' => 'dignissimos',
            'start_date' => '2026-05-20',
            'end_date' => '2026-05-22',
            'remark' => 'animi',
        ],
    ]
);
$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: veniam

is_remove   boolean  optional    

set true together with id to remove existing maintenance. Example: false

property_id   string     

uuid of Property. Example: dolor

room_type_id   string     

uuid of Room Type. Required for save. Example: eum

room_id   string     

uuid of Room. Required for save. Example: dignissimos

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: animi

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\": \"quae\",
    \"room_type_id\": \"tenetur\",
    \"start_date\": \"2026-05-20\",
    \"end_date\": \"2026-05-22\",
    \"id\": \"earum\",
    \"query\": \"ut\"
}"
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": "quae",
    "room_type_id": "tenetur",
    "start_date": "2026-05-20",
    "end_date": "2026-05-22",
    "id": "earum",
    "query": "ut"
};

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' => 'quae',
            'room_type_id' => 'tenetur',
            'start_date' => '2026-05-20',
            'end_date' => '2026-05-22',
            'id' => 'earum',
            'query' => 'ut',
        ],
    ]
);
$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: quae

room_type_id   string     

when mode=roomlist, uuid of Room Type. Example: tenetur

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: earum

query   string  optional    

optional keyword filter. Example: ut

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\": \"quia\",
    \"status_id\": \"illum\"
}"
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": "quia",
    "status_id": "illum"
};

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' => 'quia',
            'status_id' => 'illum',
        ],
    ]
);
$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: quia

status_id   string     

uuid of Property Room Status Example: illum

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\": \"in\",
    \"property_id\": \"pariatur\",
    \"code\": \"consequuntur\",
    \"name\": \"perspiciatis\",
    \"remark\": \"et\",
    \"text_color\": \"est\",
    \"background\": \"omnis\"
}"
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": "in",
    "property_id": "pariatur",
    "code": "consequuntur",
    "name": "perspiciatis",
    "remark": "et",
    "text_color": "est",
    "background": "omnis"
};

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' => 'in',
            'property_id' => 'pariatur',
            'code' => 'consequuntur',
            'name' => 'perspiciatis',
            'remark' => 'et',
            'text_color' => 'est',
            'background' => 'omnis',
        ],
    ]
);
$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: in

property_id   string     

uuid of Property Example: pariatur

code   string     

Code of Room Status Example: consequuntur

name   string     

Name of Room Status Example: perspiciatis

remark   string     

Description of Room Status Example: et

text_color   string  optional    

position on hex color text of Room Status Example: est

background   string  optional    

position on hex color background of Room Status Example: omnis

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\": \"qui\"
}"
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": "qui"
};

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' => 'qui',
        ],
    ]
);
$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: qui

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\": \"sit\",
    \"room_type_id\": \"vitae\"
}"
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": "sit",
    "room_type_id": "vitae"
};

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' => 'sit',
            'room_type_id' => 'vitae',
        ],
    ]
);
$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: sit

room_type_id   string     

uuid of Property Room Status Example: vitae

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\": \"nam\",
    \"property_id\": \"dolores\",
    \"name\": \"eos\",
    \"description\": \"Porro ea voluptas qui et nam et quis.\",
    \"position_order\": 1,
    \"room_amenities\": [
        \"ex\"
    ],
    \"occ_adult\": 2,
    \"occ_child\": 7,
    \"occ_infant\": 10,
    \"occ_default\": 16
}"
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": "nam",
    "property_id": "dolores",
    "name": "eos",
    "description": "Porro ea voluptas qui et nam et quis.",
    "position_order": 1,
    "room_amenities": [
        "ex"
    ],
    "occ_adult": 2,
    "occ_child": 7,
    "occ_infant": 10,
    "occ_default": 16
};

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' => 'nam',
            'property_id' => 'dolores',
            'name' => 'eos',
            'description' => 'Porro ea voluptas qui et nam et quis.',
            'position_order' => 1,
            'room_amenities' => [
                'ex',
            ],
            'occ_adult' => 2,
            'occ_child' => 7,
            'occ_infant' => 10,
            'occ_default' => 16,
        ],
    ]
);
$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: nam

property_id   string     

uuid of Property Example: dolores

name   string     

Name of Room Type Example: eos

description   string     

Description of Room Type Example: Porro ea voluptas qui et nam et quis.

position_order   integer  optional    

position on order of room type Example: 1

room_amenities   string[]  optional    

uuid of room amenities

occ_adult   integer  optional    

this amount of max occupancy adult for this room type Example: 2

occ_child   integer  optional    

this amount of max occupancy child for this room type Example: 7

occ_infant   integer  optional    

this amount of max occupancy infant for this room type Example: 10

occ_default   integer  optional    

this amount of max occupancy default for this room type Example: 16

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\": \"corporis\"
}"
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": "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-type/remove';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'corporis',
        ],
    ]
);
$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: corporis

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\": \"ut\"
}"
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": "ut"
};

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' => 'ut',
        ],
    ]
);
$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: ut

Get Room type Images

Example request:
curl --request GET \
    --get "http://localhost/api/v1/property/room-type/image/de0da0cd-4686-34c1-8cd9-35152474bfdb" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/room-type/image/de0da0cd-4686-34c1-8cd9-35152474bfdb"
);

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/de0da0cd-4686-34c1-8cd9-35152474bfdb';
$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: de0da0cd-4686-34c1-8cd9-35152474bfdb

delete Room Type Images

Example request:
curl --request GET \
    --get "http://localhost/api/v1/property/room-type/image/408ecafd-20e7-3bd9-b505-dfd417939893/delete" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/property/room-type/image/408ecafd-20e7-3bd9-b505-dfd417939893/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/408ecafd-20e7-3bd9-b505-dfd417939893/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: 408ecafd-20e7-3bd9-b505-dfd417939893

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=exercitationem"\
    --form "image_path[]=@C:\Users\agusb\AppData\Local\Temp\php7877.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', 'exercitationem');
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' => 'exercitationem'
            ],
            [
                'name' => 'image_path[]',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php7877.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: exercitationem

image_path[]   file  optional    

Example: C:\Users\agusb\AppData\Local\Temp\php7877.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=dolor"\
    --form "property_group_id=perferendis"\
    --form "prefix_booking_code=est"\
    --form "name=dolorem"\
    --form "address=non"\
    --form "zip_code=veniam"\
    --form "phone=et"\
    --form "email_primary=ut"\
    --form "website=nesciunt"\
    --form "area_id=labore"\
    --form "longitude=amet"\
    --form "latitude=possimus"\
    --form "google_map_url=https://www.quitzon.com/eum-beatae-harum-facilis-et-repudiandae-sint-ipsam-eveniet"\
    --form "currency_id=nemo"\
    --form "timezone_id=ipsam"\
    --form "sosmed_facebook_url=https://www.wilderman.com/ipsam-quam-perferendis-repellendus-unde"\
    --form "sosmed_instagram_url=http://wilderman.biz/voluptas-praesentium-dicta-ut-est.html"\
    --form "sosmed_youtube_url=https://www.nader.com/ipsa-et-inventore-sit-fugit-illum"\
    --form "sosmed_twitter_url=https://www.krajcik.com/rerum-accusamus-dicta-nostrum-officiis-blanditiis"\
    --form "description=Atque ad sequi voluptatibus qui sit et."\
    --form "coa_default_template_id=ducimus"\
    --form "room_status_template=yes"\
    --form "logo_path=@C:\Users\agusb\AppData\Local\Temp\php77B9.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', 'dolor');
body.append('property_group_id', 'perferendis');
body.append('prefix_booking_code', 'est');
body.append('name', 'dolorem');
body.append('address', 'non');
body.append('zip_code', 'veniam');
body.append('phone', 'et');
body.append('email_primary', 'ut');
body.append('website', 'nesciunt');
body.append('area_id', 'labore');
body.append('longitude', 'amet');
body.append('latitude', 'possimus');
body.append('google_map_url', 'https://www.quitzon.com/eum-beatae-harum-facilis-et-repudiandae-sint-ipsam-eveniet');
body.append('currency_id', 'nemo');
body.append('timezone_id', 'ipsam');
body.append('sosmed_facebook_url', 'https://www.wilderman.com/ipsam-quam-perferendis-repellendus-unde');
body.append('sosmed_instagram_url', 'http://wilderman.biz/voluptas-praesentium-dicta-ut-est.html');
body.append('sosmed_youtube_url', 'https://www.nader.com/ipsa-et-inventore-sit-fugit-illum');
body.append('sosmed_twitter_url', 'https://www.krajcik.com/rerum-accusamus-dicta-nostrum-officiis-blanditiis');
body.append('description', 'Atque ad sequi voluptatibus qui sit et.');
body.append('coa_default_template_id', 'ducimus');
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' => 'dolor'
            ],
            [
                'name' => 'property_group_id',
                'contents' => 'perferendis'
            ],
            [
                'name' => 'prefix_booking_code',
                'contents' => 'est'
            ],
            [
                'name' => 'name',
                'contents' => 'dolorem'
            ],
            [
                'name' => 'address',
                'contents' => 'non'
            ],
            [
                'name' => 'zip_code',
                'contents' => 'veniam'
            ],
            [
                'name' => 'phone',
                'contents' => 'et'
            ],
            [
                'name' => 'email_primary',
                'contents' => 'ut'
            ],
            [
                'name' => 'website',
                'contents' => 'nesciunt'
            ],
            [
                'name' => 'area_id',
                'contents' => 'labore'
            ],
            [
                'name' => 'longitude',
                'contents' => 'amet'
            ],
            [
                'name' => 'latitude',
                'contents' => 'possimus'
            ],
            [
                'name' => 'google_map_url',
                'contents' => 'https://www.quitzon.com/eum-beatae-harum-facilis-et-repudiandae-sint-ipsam-eveniet'
            ],
            [
                'name' => 'currency_id',
                'contents' => 'nemo'
            ],
            [
                'name' => 'timezone_id',
                'contents' => 'ipsam'
            ],
            [
                'name' => 'sosmed_facebook_url',
                'contents' => 'https://www.wilderman.com/ipsam-quam-perferendis-repellendus-unde'
            ],
            [
                'name' => 'sosmed_instagram_url',
                'contents' => 'http://wilderman.biz/voluptas-praesentium-dicta-ut-est.html'
            ],
            [
                'name' => 'sosmed_youtube_url',
                'contents' => 'https://www.nader.com/ipsa-et-inventore-sit-fugit-illum'
            ],
            [
                'name' => 'sosmed_twitter_url',
                'contents' => 'https://www.krajcik.com/rerum-accusamus-dicta-nostrum-officiis-blanditiis'
            ],
            [
                'name' => 'description',
                'contents' => 'Atque ad sequi voluptatibus qui sit et.'
            ],
            [
                'name' => 'coa_default_template_id',
                'contents' => 'ducimus'
            ],
            [
                'name' => 'room_status_template',
                'contents' => 'yes'
            ],
            [
                'name' => 'logo_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php77B9.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: dolor

property_group_id   string     

id of Property Groups, if not set group please not set this parameter Example: perferendis

prefix_booking_code   string  optional    

set null if not use booking prefix, if not set booking prefix please not set this parameter Example: est

name   string     

Name of Property Example: dolorem

address   string     

Address of Property Example: non

zip_code   string  optional    

zip code of Property Example: veniam

phone   string  optional    

phone of Property Example: et

email_primary   string  optional    

email_primary of Property Example: ut

website   string  optional    

website of Property if not have website please not set parameter Example: nesciunt

area_id   string  optional    

area id of Property Example: labore

longitude   string  optional    

longitude of Property Example: amet

latitude   string  optional    

latitude of Property Example: possimus

google_map_url   string  optional    

google map url of Property Example: https://www.quitzon.com/eum-beatae-harum-facilis-et-repudiandae-sint-ipsam-eveniet

currency_id   string  optional    

currency uuid of Property Example: nemo

timezone_id   string  optional    

timezone id of Property Example: ipsam

sosmed_facebook_url   string  optional    

Example: https://www.wilderman.com/ipsam-quam-perferendis-repellendus-unde

sosmed_instagram_url   string  optional    

Example: http://wilderman.biz/voluptas-praesentium-dicta-ut-est.html

sosmed_youtube_url   string  optional    

Example: https://www.nader.com/ipsa-et-inventore-sit-fugit-illum

sosmed_twitter_url   string  optional    

Example: https://www.krajcik.com/rerum-accusamus-dicta-nostrum-officiis-blanditiis

description   string  optional    

Example: Atque ad sequi voluptatibus qui sit et.

logo_path   file  optional    

Example: C:\Users\agusb\AppData\Local\Temp\php77B9.tmp

coa_default_template_id   string  optional    

use uuid COA template ID, if update data property please not set this parameter. Example: ducimus

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\": \"et\"
}"
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": "et"
};

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' => 'et',
        ],
    ]
);
$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: et

Property Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/property/details/90a0e60f-9e53-3968-8201-65d6d6b589ea" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property/details/90a0e60f-9e53-3968-8201-65d6d6b589ea"
);

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/90a0e60f-9e53-3968-8201-65d6d6b589ea';
$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: 90a0e60f-9e53-3968-8201-65d6d6b589ea

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/c88d15d5-3a20-320b-b80a-395e5359dd4f" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property/image/c88d15d5-3a20-320b-b80a-395e5359dd4f"
);

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/c88d15d5-3a20-320b-b80a-395e5359dd4f';
$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: c88d15d5-3a20-320b-b80a-395e5359dd4f

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\": \"eum\"
}"
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": "eum"
};

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' => 'eum',
        ],
    ]
);
$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: eum

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=iusto"\
    --form "image_path[]=@C:\Users\agusb\AppData\Local\Temp\php77CA.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', 'iusto');
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' => 'iusto'
            ],
            [
                'name' => 'image_path[]',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php77CA.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: iusto

image_path[]   file  optional    

Example: C:\Users\agusb\AppData\Local\Temp\php77CA.tmp

Property Email List

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/property/email/844fd016-f39b-38d2-ab4a-47c111594aea" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/property/email/844fd016-f39b-38d2-ab4a-47c111594aea"
);

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/844fd016-f39b-38d2-ab4a-47c111594aea';
$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: 844fd016-f39b-38d2-ab4a-47c111594aea

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: 5abc03a8-9b84-37bc-8ad2-326008ad5e12

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\": \"iusto\",
    \"property_id\": \"cupiditate\",
    \"email\": \"[email protected]\",
    \"recepient_name\": \"laboriosam\"
}"
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": "iusto",
    "property_id": "cupiditate",
    "email": "[email protected]",
    "recepient_name": "laboriosam"
};

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' => 'iusto',
            'property_id' => 'cupiditate',
            'email' => '[email protected]',
            'recepient_name' => 'laboriosam',
        ],
    ]
);
$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: iusto

property_id   string     

uuid of Property Example: cupiditate

email   string  optional    

email of Property Example: [email protected]

recepient_name   string  optional    

recepient name of Property email Example: laboriosam

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=aliquam"\
    --form "property_id=quis"\
    --form "name=ratione"\
    --form "address=cupiditate"\
    --form "phone=architecto"\
    --form "[email protected]"\
    --form "website=architecto"\
    --form "bg_color=qui"\
    --form "fg_color=nesciunt"\
    --form "logo_path=@C:\Users\agusb\AppData\Local\Temp\php7B58.tmp" \
    --form "icon_path=@C:\Users\agusb\AppData\Local\Temp\php7B59.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', 'aliquam');
body.append('property_id', 'quis');
body.append('name', 'ratione');
body.append('address', 'cupiditate');
body.append('phone', 'architecto');
body.append('email', '[email protected]');
body.append('website', 'architecto');
body.append('bg_color', 'qui');
body.append('fg_color', 'nesciunt');
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' => 'aliquam'
            ],
            [
                'name' => 'property_id',
                'contents' => 'quis'
            ],
            [
                'name' => 'name',
                'contents' => 'ratione'
            ],
            [
                'name' => 'address',
                'contents' => 'cupiditate'
            ],
            [
                'name' => 'phone',
                'contents' => 'architecto'
            ],
            [
                'name' => 'email',
                'contents' => '[email protected]'
            ],
            [
                'name' => 'website',
                'contents' => 'architecto'
            ],
            [
                'name' => 'bg_color',
                'contents' => 'qui'
            ],
            [
                'name' => 'fg_color',
                'contents' => 'nesciunt'
            ],
            [
                'name' => 'logo_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php7B58.tmp', 'r')
            ],
            [
                'name' => 'icon_path',
                'contents' => fopen('C:\Users\agusb\AppData\Local\Temp\php7B59.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: aliquam

property_id   string     

uuid of Property Example: quis

name   string     

Name of Supplier Example: ratione

address   string  optional    

Address of Supplier Example: cupiditate

phone   string  optional    

Phone of Supplier Example: architecto

email   string  optional    

E-mail of Supplier Example: [email protected]

website   string  optional    

website of Supplier Example: architecto

logo_path   file  optional    

logo dimension must width 1350 x height 750 Example: C:\Users\agusb\AppData\Local\Temp\php7B58.tmp

icon_path   file  optional    

icon dimension ratio 1/1 Example: C:\Users\agusb\AppData\Local\Temp\php7B59.tmp

bg_color   string  optional    

position on hex color text of Supplier background Example: qui

fg_color   string  optional    

position on hex color text of Supplier Text Example: nesciunt

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\": \"similique\",
    \"supplier_id\": \"impedit\"
}"
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": "similique",
    "supplier_id": "impedit"
};

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' => 'similique',
            'supplier_id' => 'impedit',
        ],
    ]
);
$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: similique

supplier_id   string     

uuid of Property Agent Example: impedit

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\": \"et\"
}"
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": "et"
};

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' => 'et',
        ],
    ]
);
$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: et

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\": \"voluptatem\"
}"
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": "voluptatem"
};

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' => 'voluptatem',
        ],
    ]
);
$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: voluptatem

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\": \"quo\",
    \"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": "quo",
    "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' => 'quo',
            '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: quo

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/b3ce479e-0560-3ea2-916a-63d12620e209" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/room-status-default-list/details/b3ce479e-0560-3ea2-916a-63d12620e209"
);

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/b3ce479e-0560-3ea2-916a-63d12620e209';
$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: b3ce479e-0560-3ea2-916a-63d12620e209

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\": \"necessitatibus\",
    \"code\": \"inventore\",
    \"name\": \"eius\",
    \"remark\": \"fugit\",
    \"text_color\": \"consequuntur\",
    \"background\": \"nisi\",
    \"is_available\": false
}"
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": "necessitatibus",
    "code": "inventore",
    "name": "eius",
    "remark": "fugit",
    "text_color": "consequuntur",
    "background": "nisi",
    "is_available": false
};

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' => 'necessitatibus',
            'code' => 'inventore',
            'name' => 'eius',
            'remark' => 'fugit',
            'text_color' => 'consequuntur',
            'background' => 'nisi',
            'is_available' => false,
        ],
    ]
);
$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: necessitatibus

code   string     

Code of Room Status Example: inventore

name   string     

Name of Room Status Example: eius

remark   string     

Description of Room Status Example: fugit

text_color   string  optional    

position on hex color text of Room Status Example: consequuntur

background   string  optional    

position on hex color background of Room Status Example: nisi

is_available   boolean  optional    

position on is available of Room Status on allotment Example: false

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\": \"aliquam\"
}"
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": "aliquam"
};

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' => 'aliquam',
        ],
    ]
);
$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: aliquam

Setup Feature

Feature Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/feature/details/966cf037-f923-3bd6-b5db-3252a4b9384c" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/feature/details/966cf037-f923-3bd6-b5db-3252a4b9384c"
);

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/966cf037-f923-3bd6-b5db-3252a4b9384c';
$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: 966cf037-f923-3bd6-b5db-3252a4b9384c

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\": \"ut\",
    \"category_id\": 19,
    \"meta_access_content\": [
        []
    ],
    \"id\": \"nesciunt\"
}"
const url = new URL(
    "http://localhost/api/v1/master/feature"
);

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

let body = {
    "name": "ut",
    "category_id": 19,
    "meta_access_content": [
        []
    ],
    "id": "nesciunt"
};

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' => 'ut',
            'category_id' => 19,
            'meta_access_content' => [
                [],
            ],
            'id' => 'nesciunt',
        ],
    ]
);
$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: ut

category_id   integer     

valid of feature category id Example: 19

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: nesciunt

Remove Feature

Example request:
curl --request POST \
    "http://localhost/api/v1/master/feature/remove" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"perspiciatis\"
}"
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": "perspiciatis"
};

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' => 'perspiciatis',
        ],
    ]
);
$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: perspiciatis

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\": \"dolore\"
}"
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": "dolore"
};

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' => 'dolore',
        ],
    ]
);
$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: dolore

Setup Feature Category

Feature Category Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/feature-category/details/30356878-1155-3353-9e6c-bbebe12a5f0a" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/feature-category/details/30356878-1155-3353-9e6c-bbebe12a5f0a"
);

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/30356878-1155-3353-9e6c-bbebe12a5f0a';
$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: 30356878-1155-3353-9e6c-bbebe12a5f0a

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\": \"fugiat\",
    \"id\": \"fugit\"
}"
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": "fugiat",
    "id": "fugit"
};

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' => 'fugiat',
            'id' => 'fugit',
        ],
    ]
);
$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: fugiat

id   string  optional    

uuid if need update or remove name of feature category Example: fugit

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\": \"earum\"
}"
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": "earum"
};

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' => 'earum',
        ],
    ]
);
$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: earum

Setup User Category Feature Default

Category Feature Details

Example request:
curl --request GET \
    --get "http://localhost/api/v1/master/user-category-feature-default/details/fbe4abcc-d3d2-36e0-988c-77f8a637d1f7" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/master/user-category-feature-default/details/fbe4abcc-d3d2-36e0-988c-77f8a637d1f7"
);

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/fbe4abcc-d3d2-36e0-988c-77f8a637d1f7';
$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: fbe4abcc-d3d2-36e0-988c-77f8a637d1f7

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\": 18,
    \"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": 18,
    "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' => 18,
                '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: 18

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\": \"tenetur\"
}"
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": "tenetur"
};

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' => 'tenetur',
        ],
    ]
);
$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: tenetur

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\": \"aliquam\"
}"
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": "aliquam"
};

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' => 'aliquam',
        ],
    ]
);
$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: aliquam

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\": \"ratione\"
}"
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": "ratione"
};

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' => 'ratione',
        ],
    ]
);
$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: ratione

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\": \"fv!{lszT5&\"
}"
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": "fv!{lszT5&"
};

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' => 'fv!{lszT5&',
        ],
    ]
);
$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     

The password of the user. Example: fv!{lszT5&

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\": \"laborum\"
}"
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": "laborum"
};

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' => 'laborum',
        ],
    ]
);
$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: 4
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: laborum

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\": 3
}"
const url = new URL(
    "http://localhost/api/v1/auth/google2fa"
);

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

let body = {
    "status": 3
};

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' => 3,
        ],
    ]
);
$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: 3

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\": \"iure\"
}"
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": "iure"
};

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' => 'iure',
        ],
    ]
);
$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: iure

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\": \"tenetur\",
    \"user_search\": \"incidunt\",
    \"is_active\": \"false\",
    \"page_no\": 6
}"
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": "tenetur",
    "user_search": "incidunt",
    "is_active": "false",
    "page_no": 6
};

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' => 'tenetur',
            'user_search' => 'incidunt',
            'is_active' => 'false',
            'page_no' => 6,
        ],
    ]
);
$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: tenetur

user_search   string     

query of name or email. Example: incidunt

is_active   string  optional    

required. Example: false

Must be one of:
  • true
  • false
page_no   integer  optional    

number of pagination Example: 6

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/1908ecb4-31f2-3568-b54a-fc27204c4e97" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"laboriosam\"
}"
const url = new URL(
    "http://localhost/api/v1/user/detail/1908ecb4-31f2-3568-b54a-fc27204c4e97"
);

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

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

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost/api/v1/user/detail/1908ecb4-31f2-3568-b54a-fc27204c4e97';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer ***************************************',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'id' => 'laboriosam',
        ],
    ]
);
$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: 1908ecb4-31f2-3568-b54a-fc27204c4e97

Body Parameters

id   string     

UUID of User Example: laboriosam

Create / Update User

Example request:
curl --request POST \
    "http://localhost/api/v1/user/editor" \
    --header "Authorization: Bearer ***************************************" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"eum\",
    \"name\": \"voluptas\",
    \"email\": \"[email protected]\",
    \"password\": \"@G*a,[email protected]*2?@(\'w.\",
    \"user_category_id\": \"assumenda\",
    \"status\": false,
    \"phone\": \"autem\",
    \"timezone_id\": 15,
    \"language_id\": 19
}"
const url = new URL(
    "http://localhost/api/v1/user/editor"
);

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

let body = {
    "id": "eum",
    "name": "voluptas",
    "email": "[email protected]",
    "password": "@G*a,[email protected]*2?@('w.",
    "user_category_id": "assumenda",
    "status": false,
    "phone": "autem",
    "timezone_id": 15,
    "language_id": 19
};

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' => 'eum',
            'name' => 'voluptas',
            'email' => '[email protected]',
            'password' => '@G*a,[email protected]*2?@(\'w.',
            'user_category_id' => 'assumenda',
            'status' => false,
            'phone' => 'autem',
            'timezone_id' => 15,
            'language_id' => 19,
        ],
    ]
);
$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: eum

name   string     

name of User Example: voluptas

email   string     

email of User Example: [email protected]

password   string     

Password of User, set this parameter if want change the password Example: @G*a,[email protected]*2?@('w.

user_category_id   string     

uuid user categories of User Example: assumenda

status   boolean     

status of User if true is active and false deactive Example: false

phone   string     

phone number of User use format +620890090990 Example: autem

timezone_id   integer     

timezone uuid of User Example: 15

language_id   integer     

language uuid of User Example: 19

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\": \"animi\",
    \"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": "animi",
    "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' => 'animi',
                '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: animi

feature_list   object[]  optional    

list of feature

List User features

Example request:
curl --request GET \
    --get "http://localhost/api/v1/user/feature/detail/626b5d18-488a-3e20-ab4e-7a0a505cd350" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/feature/detail/626b5d18-488a-3e20-ab4e-7a0a505cd350"
);

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/626b5d18-488a-3e20-ab4e-7a0a505cd350';
$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: 626b5d18-488a-3e20-ab4e-7a0a505cd350

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\": \"quia\",
    \"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": "quia",
    "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' => 'quia',
            '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: quia

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/fcdf41bb-3598-3a0f-a630-61ea76bec897" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/property/lists/fcdf41bb-3598-3a0f-a630-61ea76bec897"
);

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/fcdf41bb-3598-3a0f-a630-61ea76bec897';
$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: fcdf41bb-3598-3a0f-a630-61ea76bec897

id   string     

uuid of User. Example: animi

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\": \"enim\",
    \"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": "enim",
    "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' => 'enim',
            '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: enim

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/0f724d3e-2752-315a-a13b-fea5c66f7266" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/propertygroups/lists/0f724d3e-2752-315a-a13b-fea5c66f7266"
);

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/0f724d3e-2752-315a-a13b-fea5c66f7266';
$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: 0f724d3e-2752-315a-a13b-fea5c66f7266

id   string     

uuid of User. Example: velit

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\": \"inventore\",
    \"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": "inventore",
    "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' => 'inventore',
            '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: inventore

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/2866076b-3808-3786-b4ca-bfbfd00de2e3" \
    --header "Authorization: Bearer ***************************************"
const url = new URL(
    "http://localhost/api/v1/user/ipwhitelist/lists/2866076b-3808-3786-b4ca-bfbfd00de2e3"
);

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/2866076b-3808-3786-b4ca-bfbfd00de2e3';
$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: 2866076b-3808-3786-b4ca-bfbfd00de2e3