MENU navbar-image

Introduction

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

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

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 visiting your dashboard and clicking Generate API token.

Approval

Display a listing of the resource.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/approvals

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Display a listing of the resource.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/approvals/riwayat

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Show Approval Detail

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/approvals/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the approval. Example: architecto

Approve

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/approvals/architecto/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"catatan\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/approvals/architecto/approve"
);

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

let body = {
    "catatan": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/approvals/{id}/approve

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the approval. Example: architecto

Body Parameters

catatan   string  optional    

Example: architecto

Reject

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/approvals/architecto/reject" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"catatan\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/approvals/architecto/reject"
);

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

let body = {
    "catatan": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/approvals/{id}/reject

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the approval. Example: architecto

Body Parameters

catatan   string  optional    

Example: architecto

Revisi

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/approvals/architecto/revisi" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/approvals/architecto/revisi"
);

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/approvals/{id}/revisi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the approval. Example: architecto

Authentication

Login User

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/login" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"login\": \"user@email.com\",
    \"password\": \"password123\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/login"
);

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

let body = {
    "login": "user@email.com",
    "password": "password123"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "access_token": "1|abcdefg1234567890",
    "token_type": "Bearer",
    "user": {
        "id": 1,
        "name": "Budi",
        "email": "user@email.com",
        "nik": "123456789",
        "role": {
            "id": 1,
            "name": "Admin"
        }
    }
}
 

Example response (401):


{
    "message": "Email/NIK atau password salah"
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "login": [
            "The login field is required."
        ],
        "password": [
            "The password field is required."
        ]
    }
}
 

Request      

POST api/login

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

login   string  optional    

Required. Email atau NIK user. Example: user@email.com

password   string  optional    

Required. Password user. Example: password123

Get Current User

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Success",
    "data": {
        "id": 1,
        "nik": "123456789",
        "email": "user@email.com",
        "nama": "Budi",
        "role": "Admin",
        "peran": {
            "id": 1,
            "nama_peran": "Admin"
        },
        "karyawan": {
            "id": 1,
            "nama_lengkap": "Budi Santoso",
            "email": "user@email.com",
            "nik": "123456789",
            "keluarga": [],
            "gaji": {},
            "riwayatPekerjaan": [],
            "riwayatPendidikan": [],
            "keahlian": [],
            "ahliwaris": [],
            "files": [],
            "pelatihanSertifikasi": [],
            "statusKaryawan": {},
            "kontrak": [],
            "riwayatOrganisasi": [],
            "strukturOrganisasi": {}
        }
    }
}
 

Example response (401):


{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/me

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

Logout User

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/logout" \
    --header "Authorization: string Required. Bearer token. Example: Bearer 1|abcdefg1234567890" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/logout"
);

const headers = {
    "Authorization": "string Required. Bearer token. Example: Bearer 1|abcdefg1234567890",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Logged out"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/logout

Headers

Authorization        

Example: string Required. Bearer token. Example: Bearer 1|abcdefg1234567890

Content-Type        

Example: application/json

Accept        

Example: application/json

Category Product Management

Get Product Categories

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/product-category" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        {
            \"field\": \"title\",
            \"operator\": \"contains\",
            \"value\": \"Laptop\"
        }
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"2026-04-04T17:00:00.000Z\",
    \"dateEnd\": \"2026-04-05T17:00:00.000Z\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/product-category"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        {
            "field": "title",
            "operator": "contains",
            "value": "Laptop"
        }
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "2026-04-04T17:00:00.000Z",
    "dateEnd": "2026-04-05T17:00:00.000Z"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 100,
        "lastPage": 10
    },
    "data": [
        {
            "id": 1,
            "name": "Electronics",
            "desc": "All kinds of electronic devices."
        },
        {
            "id": 2,
            "name": "Furniture",
            "desc": "Home and office furniture."
        }
    ]
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Error message details"
}
 

Request      

GET api/product-category

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

Example: 1

pageSize   integer  optional    

Example: 10

filters   string[]  optional    

of object

field   string  optional    

Required. Field to filter (id, name, desc). Example: name

operator   string  optional    

Required. (contains, eq, neq, gt, lt). Example: contains

value   mixed  optional    

Required. Value to filter. Example: Elektronik

sorts   string[]  optional    

List of sorts.

field   string  optional    

Required. Field to sort. Example: name

direction   string  optional    

Required. (asc, desc). Example: desc

dateStart   string  optional    

Optional. Start date for filtering (ISO 8601 format, UTC). Example: 2026-04-04T17:00:00.000Z

dateEnd   string  optional    

Optional. End date for filtering (ISO 8601 format, UTC). Example: 2026-04-05T17:00:00.000Z

Create a new product category.

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/product-category" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Electronics\",
    \"desc\": \"All kinds of electronic devices.\\nStore a newly created resource in storage.\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/product-category"
);

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

let body = {
    "name": "Electronics",
    "desc": "All kinds of electronic devices.\nStore a newly created resource in storage."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/product-category

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The name of the product category. Example: Electronics

desc   string  optional    

The description of the product category. Example: All kinds of electronic devices. Store a newly created resource in storage.

Get the specified Product Category.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "data": {
        "id": 1,
        "name": "Electronics",
        "desc": "All kinds of electronic devices."
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Product category not found"
}
 

Request      

GET api/product-category/{id}

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the product category. Example: 1

Update the specified Product Category in storage.

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/product-category/1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Electronics Updated\",
    \"desc\": \"Updated description here.\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/product-category/1"
);

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

let body = {
    "name": "Electronics Updated",
    "desc": "Updated description here."
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully updated"
}
 

Example response (404):


{
    "status": false,
    "message": "Product category not found"
}
 

Request      

PUT api/product-category/{id}

PATCH api/product-category/{id}

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

ID of the product category. Example: 1

Body Parameters

name   string  optional    

Name of the category. Example: Electronics Updated

desc   string  optional    

Description of the category. Example: Updated description here.

Remove the specified Product Category from storage.

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/product-category/1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/product-category/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully deleted"
}
 

Example response (404):


{
    "status": false,
    "message": "Product category not found"
}
 

Request      

DELETE api/product-category/{id}

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

ID of the product category. Example: 1

Email Management

Send test email

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/send-test/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/send-test/architecto"
);

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/send-test/{batchId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

batchId   string     

Example: architecto

Send interview email

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/send-interview/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"datetime\": \"2026-06-06T10:08:28\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/send-interview/architecto"
);

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

let body = {
    "datetime": "2026-06-06T10:08:28"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/send-interview/{employeeId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

employeeId   string     

Example: architecto

Body Parameters

datetime   string     

Must be a valid date. Example: 2026-06-06T10:08:28

Send reject email

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/send-reject/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/send-reject/architecto"
);

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/send-reject/{jobPostingId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobPostingId   string     

Example: architecto

Send accepted email

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/send-accept/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"datetime\": \"2026-06-06T10:08:28\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/send-accept/architecto"
);

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

let body = {
    "datetime": "2026-06-06T10:08:28"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/send-accept/{employeeId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

employeeId   string     

Example: architecto

Body Parameters

datetime   string     

Must be a valid date. Example: 2026-06-06T10:08:28

Employee Interview Management

GET api/interviews

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "data": [
        {
            "id": 3,
            "interviewer": [
                "019df0bc-1c98-703e-9d78-233ccb6c530e",
                "019df0bc-1b76-713b-935f-2981396898f5"
            ],
            "scheduled_at": "2026-05-21 09:30:00",
            "location": "Zoom Meeting",
            "notes": "Candidate rescheduled",
            "status": "done",
            "is_pic": 0,
            "interviewer_detail": [
                {
                    "id": "019df0bc-1c98-703e-9d78-233ccb6c530e",
                    "nama_jabatan": "HRD STAFF",
                    "is_pic": 1
                },
                {
                    "id": "019df0bc-1b76-713b-935f-2981396898f5",
                    "nama_jabatan": "SUPERVISOR IT",
                    "is_pic": 0
                }
            ],
            "applicant": {
                "id": 23,
                "user_id": 13,
                "job_posting_id": "019dc249-fc21-70c1-81d6-241ab8aaf5bc",
                "no_ktp": "1234567891234567",
                "tempat_lahir": "Sukamakmur",
                "tanggal_lahir": "2026-05-06",
                "jenis_kelamin": "laki-laki",
                "agama": "Kristen Protestan",
                "alamat_ktp": "Alamat KTP",
                "alamat": "Alamat KTP",
                "telepon_rumah": "085668733336",
                "no_hp": "085668733336",
                "tahapan": "interview",
                "is_use_trial": 0,
                "status_perkembangan": "in_progress",
                "status_revisi_hr": "",
                "status_revisi": 0,
                "catatan_revisi": null,
                "deleted_at": null,
                "created_at": "2026-05-07T08:18:54.000000Z",
                "updated_at": "2026-05-07T08:18:54.000000Z",
                "nama_jabatan": "STAF PROGRAMMER",
                "user": {
                    "id": 13,
                    "name": "Ekin Adhi Guna",
                    "email": "ekinadhiguna@gmail.com",
                    "avatar": null,
                    "phone_number": "085668733336",
                    "created_at": "2026-04-25T09:15:20.000000Z",
                    "updated_at": "2026-04-25T09:15:20.000000Z"
                }
            }
        }
    ]
}
 

Example response (404):


{
    "status": false,
    "message": "Struktur organisasi tidak ditemukan"
}
 

Example response (500):


{
    "status": false,
    "message": "Gagal mengambil data interview"
}
 

Request      

GET api/interviews

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Employee Request Management

GET api/employee-requests

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/employee-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"level\": \"staff\",
    \"filters\": [
        \"architecto\"
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"2026-04-01T00:00:00.000Z\",
    \"dateEnd\": \"2026-04-10T23:59:59.000Z\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/employee-requests"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "level": "staff",
    "filters": [
        "architecto"
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "2026-04-01T00:00:00.000Z",
    "dateEnd": "2026-04-10T23:59:59.000Z"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 100,
        "lastPage": 10
    },
    "data": [
        {
            "id": 1,
            "nomor_pengajuan": "REQ-20260410120000",
            "pengaju": "Budi",
            "request_level": "staff",
            "departemen": "IT",
            "posisi": "Programmer",
            "jumlah_karyawan": 2,
            "lokasi": "Jakarta",
            "tanggal_dibutuhkan": "2026-04-15",
            "status": "pending",
            "status_lowongan": "closed",
            "thumbnail": "http://example.com/storage/employee_requests/file.jpg",
            "created_at": "2026-04-10 12:00:00"
        }
    ]
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Error message details"
}
 

Request      

GET api/employee-requests

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

Optional. Page number. Example: 1

pageSize   integer  optional    

Optional. Number of data per page. Example: 10

level   string  optional    

Optional. Filter by request level (staff, kasi, kadept, kadiv). Example: staff

filters   string[]  optional    

Optional. List of filters.

field   string  optional    

Required. Field to filter (id, request_level, status, pengaju, created_at). Example: status

operator   string  optional    

Required. Operator (contains, eq, neq, gt, lt). Example: eq

value   mixed  optional    

Required. Value to filter. Example: pending

sorts   string[]  optional    

Optional. List of sorting.

field   string  optional    

Required. Field to sort. Example: created_at

direction   string  optional    

Required. Direction (asc, desc). Example: desc

dateStart   string  optional    

Optional. Start date filter (ISO 8601 format). Example: 2026-04-01T00:00:00.000Z

dateEnd   string  optional    

Optional. End date filter (ISO 8601 format). Example: 2026-04-10T23:59:59.000Z

GET api/employee-requests/{id}

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "nomor_pengajuan": "REQ-20260410120000",
        "pengaju": "Budi",
        "status": "pending",
        "thumbnail": "http://example.com/storage/employee_requests/file.jpg"
    }
}
 

Example response (404):


{
    "message": "No query results for model."
}
 

Request      

GET api/employee-requests/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer  optional    

Required. ID data. Example: 1

POST api/employee-requests

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/employee-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_jabatan\": \"2c1d3e4f-5678-4abc-9999-abcdef123456\",
    \"id_klasifikasi\": \"7a8b9c0d-1111-4abc-8888-abcdef123456\",
    \"jumlah_karyawan\": 2,
    \"request_level\": \"Jakarta\",
    \"tanggal_dibutuhkan\": \"Untuk mendukung proyek baru\",
    \"lokasi\": \"architecto\",
    \"catatan_tambahan\": \"Diutamakan yang bisa join secepatnya.\\n* @bodyParam employment_type string Optional. Jenis pekerjaan (full_time, part_time, contract, internship, freelance). Default: full_time\",
    \"employment_type\": \"contract\",
    \"experience_level\": \"architecto\",
    \"tanggal_mulai\": \"2026-06-06T10:08:28\",
    \"tanggal_berakhir\": \"2026-06-06T10:08:28\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/employee-requests"
);

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

let body = {
    "id_jabatan": "2c1d3e4f-5678-4abc-9999-abcdef123456",
    "id_klasifikasi": "7a8b9c0d-1111-4abc-8888-abcdef123456",
    "jumlah_karyawan": 2,
    "request_level": "Jakarta",
    "tanggal_dibutuhkan": "Untuk mendukung proyek baru",
    "lokasi": "architecto",
    "catatan_tambahan": "Diutamakan yang bisa join secepatnya.\n* @bodyParam employment_type string Optional. Jenis pekerjaan (full_time, part_time, contract, internship, freelance). Default: full_time",
    "employment_type": "contract",
    "experience_level": "architecto",
    "tanggal_mulai": "2026-06-06T10:08:28",
    "tanggal_berakhir": "2026-06-06T10:08:28"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/employee-requests

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pengaju_id   string  optional    

The id of an existing record in the users table.

id_jabatan   uuid  optional    

Required. ID jabatan (relasi ke master_jabatan). Example: 2c1d3e4f-5678-4abc-9999-abcdef123456

id_klasifikasi   uuid  optional    

Required. ID klasifikasi jabatan (relasi ke klasifikasi_perjabatan). Example: 7a8b9c0d-1111-4abc-8888-abcdef123456

jumlah_karyawan   integer  optional    

Required. Jumlah kebutuhan karyawan. Example: 2

request_level   string  optional    

Required. Level request (staff, kasi, kadept, kadiv). Example: staff

  • @bodyParam lokasi string Required. Lokasi kerja. Example: Jakarta
tanggal_dibutuhkan   date  optional    

Required. Format: YYYY-MM-DD. Example: 2026-04-15

  • @bodyParam alasan string Optional. Alasan kebutuhan karyawan. Example: Untuk mendukung proyek baru
lokasi   string     

Example: architecto

alasan   string  optional    
catatan_tambahan   string  optional    

Optional. Catatan tambahan. Example: `Diutamakan yang bisa join secepatnya.

  • @bodyParam employment_type string Optional. Jenis pekerjaan (full_time, part_time, contract, internship, freelance). Default: full_time`
employment_type   string  optional    

Example: contract

Must be one of:
  • full_time
  • part_time
  • contract
  • internship
  • freelance
experience_level   string  optional    

Optional. Level pengalaman (entry, mid, senior, manager). Default: entry

  • @response 201 { "status": true, "message": "Pengajuan berhasil dibuat dan poster otomatis di-generate", "data": { "id": "uuid", "nomor_pengajuan": "REQ-20260423153000", "pengaju_id": "uuid", "id_jabatan": "uuid", "id_klasifikasi": "uuid", "jumlah_karyawan": 2, "lokasi": "Jakarta", "tanggal_dibutuhkan": "2026-04-15", "alasan": "Untuk mendukung proyek baru", "catatan_tambahan": "Diutamakan yang bisa join secepatnya.", "employment_type": "full_time", "experience_level": "entry", "request_level": "staff", "status": "pending", "status_lowongan": "closed", "approved_by": "019daddc-78c0-714a-b550-8738bdfb05c3", "thumbnail": "employee_requests/posters/poster_6627685412345.jpg", "tanggal_mulai": "2026-04-15", "tanggal_berakhir": "2026-04-15", "created_at": "2026-04-23T08:27:07.000000Z", "updated_at": "2026-04-23T08:27:07.000000Z" } }
  • @response 422 { "message": "The given data was invalid.", "errors": { "pengaju_id": ["The pengaju id field is required."], "id_jabatan": ["The id jabatan field is required."], "jumlah_karyawan": ["The jumlah karyawan field is required."] } } Example: architecto
tanggal_mulai   string  optional    

Must be a valid date. Example: 2026-06-06T10:08:28

tanggal_berakhir   string  optional    

Must be a valid date. Example: 2026-06-06T10:08:28

PUT api/employee-requests/{id}/update

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/employee-requests/1/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "pengaju_id=5"\
    --form "id_jabatan=2"\
    --form "id_klasifikasi=3"\
    --form "jumlah_karyawan=2"\
    --form "request_level=staff"\
    --form "tanggal_dibutuhkan=2026-04-15"\
    --form "lokasi=Jakarta"\
    --form "alasan=Penambahan tim untuk proyek baru"\
    --form "catatan_tambahan=Dibutuhkan segera"\
    --form "employment_type=architecto"\
    --form "experience_level=architecto"\
    --form "tanggal_mulai=2026-05-01"\
    --form "tanggal_berakhir=2026-12-31"\
    --form "thumbnail=@C:\Users\DC03\AppData\Local\Temp\phpF4C5.tmp" 
const url = new URL(
    "http://10.10.1.109:8000/api/employee-requests/1/update"
);

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

const body = new FormData();
body.append('pengaju_id', '5');
body.append('id_jabatan', '2');
body.append('id_klasifikasi', '3');
body.append('jumlah_karyawan', '2');
body.append('request_level', 'staff');
body.append('tanggal_dibutuhkan', '2026-04-15');
body.append('lokasi', 'Jakarta');
body.append('alasan', 'Penambahan tim untuk proyek baru');
body.append('catatan_tambahan', 'Dibutuhkan segera');
body.append('employment_type', 'architecto');
body.append('experience_level', 'architecto');
body.append('tanggal_mulai', '2026-05-01');
body.append('tanggal_berakhir', '2026-12-31');
body.append('thumbnail', document.querySelector('input[name="thumbnail"]').files[0]);

fetch(url, {
    method: "PUT",
    headers,
    body,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Pengajuan berhasil diupdate",
    "data": {
        "id": 1,
        "pengaju_id": 5,
        "id_jabatan": 2,
        "id_klasifikasi": 3,
        "jumlah_karyawan": 2,
        "lokasi": "Jakarta",
        "tanggal_dibutuhkan": "2026-04-15",
        "tanggal_mulai": "2026-05-01",
        "tanggal_berakhir": "2026-12-31",
        "employment_type": "full_time",
        "experience_level": "entry",
        "request_level": "staff",
        "thumbnail": "thumbnails/abc123.jpg"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Example response (409):


{
    "status": false,
    "message": "Data sudah diproses, tidak bisa diupdate"
}
 

Example response (422):


{
    "status": false,
    "message": "Validation error",
    "errors": {
        "id_jabatan": [
            "The id jabatan field is required."
        ]
    }
}
 

Request      

PUT api/employee-requests/{id}/update

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

id   integer  optional    

Required. ID dari employee request. Example: 1

Body Parameters

pengaju_id   integer  optional    

Optional. ID user pengaju. Example: 5

id_jabatan   integer  optional    

Required. ID jabatan. Example: 2

id_klasifikasi   integer  optional    

Optional. ID klasifikasi jabatan. Example: 3

jumlah_karyawan   integer  optional    

Required. Jumlah karyawan yang dibutuhkan. Example: 2

request_level   string  optional    

Optional. Level request (staff, kasi, kadept, kadiv). Example: staff

tanggal_dibutuhkan   date  optional    

Required. Tanggal kebutuhan karyawan. Format: YYYY-MM-DD. Example: 2026-04-15

lokasi   string  optional    

Required. Lokasi penempatan kerja. Example: Jakarta

alasan   string  optional    

Optional. Alasan pengajuan. Example: Penambahan tim untuk proyek baru

catatan_tambahan   string  optional    

Optional. Catatan tambahan. Example: Dibutuhkan segera

employment_type   string  optional    

Optional. Jenis pekerjaan (full_time, part_time, contract, internship, freelance). Default: full_time Example: architecto

experience_level   string  optional    

Optional. Level pengalaman (entry, mid, senior, manager). Default: entry Example: architecto

tanggal_mulai   date  optional    

Required. Tanggal mulai kerja. Format: YYYY-MM-DD. Example: 2026-05-01

tanggal_berakhir   date  optional    

Required. Tanggal berakhir kontrak. Format: YYYY-MM-DD. Example: 2026-12-31

thumbnail   file  optional    

Optional. File gambar thumbnail Example: C:\Users\DC03\AppData\Local\Temp\phpF4C5.tmp

POST api/employee-requests/{id}/approve

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/employee-requests/1/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"approved\",
    \"catatan_approval\": \"Disetujui\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/employee-requests/1/approve"
);

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

let body = {
    "status": "approved",
    "catatan_approval": "Disetujui"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Pengajuan disetujui"
}
 

Request      

POST api/employee-requests/{id}/approve

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer  optional    

Required. ID data. Example: 1

Body Parameters

status   string  optional    

Required. (approved, rejected, revision). Example: approved

catatan_approval   string  optional    

Optional. Catatan approval. Example: Disetujui

Reject Employee Request

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/employee-requests/architecto/reject" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"catatan_approval\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/employee-requests/architecto/reject"
);

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

let body = {
    "catatan_approval": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/employee-requests/{id}/reject

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the employee request. Example: architecto

Body Parameters

catatan_approval   string  optional    

Example: architecto

Delete Employee Request

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/employee-requests/architecto/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/employee-requests/architecto/delete"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/employee-requests/{id}/delete

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the employee request. Example: architecto

POST api/employee-requests/{id}/publish

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/employee-requests/1/publish" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status_lowongan\": \"open\",
    \"tanggal_mulai\": \"2026-04-10\",
    \"tanggal_berakhir\": \"2026-05-10\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/employee-requests/1/publish"
);

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

let body = {
    "status_lowongan": "open",
    "tanggal_mulai": "2026-04-10",
    "tanggal_berakhir": "2026-05-10"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Lowongan berhasil dipublish"
}
 

Example response (409):


{
    "status": false,
    "message": "Data belum disetujui, tidak bisa dipublish"
}
 

Request      

POST api/employee-requests/{id}/publish

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer  optional    

Required. ID data. Example: 1

Body Parameters

status_lowongan   string  optional    

Required. (open, closed). Example: open

tanggal_mulai   date  optional    

Optional. Example: 2026-04-10

tanggal_berakhir   date  optional    

Optional. Example: 2026-05-10

Endpoints

GET api/test

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "API is working",
    "timestamp": "2026-06-06T03:08:27.172523Z",
    "data": {
        "id": "019df0ba-66e1-7109-9943-7cc3235a91cf",
        "nama_jabatan": "ADMIN & LOGISTIK WORKSHOP",
        "deleted_at": null,
        "created_at": "2026-05-04T09:04:01.000000Z",
        "updated_at": "2026-05-04T09:04:01.000000Z",
        "struktur_organisasi": [
            {
                "id": "019df0bc-1d92-7072-a07b-e09d63a1c85f",
                "id_karyawan": "8201f226-710c-488f-ae49-466b49135897",
                "id_perusahaan_lokasi": "50679c16-96de-4434-af51-8f7aa88d73a1",
                "id_struktur_org_atasan": "019df0bc-1bdf-719e-8362-e66668c7f079",
                "level_posisi": 8,
                "level_manajerial": "S",
                "id_jabatan": "019df0ba-66e1-7109-9943-7cc3235a91cf",
                "id_struktur_org_penilai_1": "019df0bc-1bdf-719e-8362-e66668c7f079",
                "id_struktur_org_penilai_2": null,
                "id_struktur_org_penilai_3": null,
                "deleted_at": null,
                "created_at": "2026-05-04T09:05:53.000000Z",
                "updated_at": "2026-05-04T09:05:53.000000Z"
            },
            {
                "id": "019df0bc-1d97-73d0-a49d-6159a906cce3",
                "id_karyawan": "7dcffa88-9bcb-4f55-8ce6-afbe11229870",
                "id_perusahaan_lokasi": "91544d1e-7e9b-4ec9-ab41-92f025707f76",
                "id_struktur_org_atasan": "019df0bc-1b98-72b1-8a57-f482dc76812b",
                "level_posisi": 8,
                "level_manajerial": "S",
                "id_jabatan": "019df0ba-66e1-7109-9943-7cc3235a91cf",
                "id_struktur_org_penilai_1": "019df0bc-1b98-72b1-8a57-f482dc76812b",
                "id_struktur_org_penilai_2": null,
                "id_struktur_org_penilai_3": null,
                "deleted_at": null,
                "created_at": "2026-05-04T09:05:53.000000Z",
                "updated_at": "2026-05-04T09:05:53.000000Z"
            },
            {
                "id": "019df0bc-1d9d-701b-901f-70e233b55c60",
                "id_karyawan": "3420ed41-09dd-4f13-ab3f-0ef96091046a",
                "id_perusahaan_lokasi": "f235f2ae-00b0-4c4d-97d1-2da48dc290a6",
                "id_struktur_org_atasan": "019df0bc-1bda-7189-a8f4-9ae95aeda217",
                "level_posisi": 8,
                "level_manajerial": "S",
                "id_jabatan": "019df0ba-66e1-7109-9943-7cc3235a91cf",
                "id_struktur_org_penilai_1": "019df0bc-1bda-7189-a8f4-9ae95aeda217",
                "id_struktur_org_penilai_2": null,
                "id_struktur_org_penilai_3": null,
                "deleted_at": null,
                "created_at": "2026-05-04T09:05:53.000000Z",
                "updated_at": "2026-05-04T09:05:53.000000Z"
            },
            {
                "id": "019e865a-476e-70be-9a11-1c72fced3f98",
                "id_karyawan": null,
                "id_perusahaan_lokasi": "91544d1e-7e9b-4ec9-ab41-92f025707f76",
                "id_struktur_org_atasan": "019df0bc-1b26-731f-9a26-e97968c77826",
                "level_posisi": 1,
                "level_manajerial": "M2",
                "id_jabatan": "019df0ba-66e1-7109-9943-7cc3235a91cf",
                "id_struktur_org_penilai_1": "019df0bc-1b20-72b3-981c-72127d10d3bf",
                "id_struktur_org_penilai_2": null,
                "id_struktur_org_penilai_3": null,
                "deleted_at": null,
                "created_at": "2026-06-02T03:22:04.000000Z",
                "updated_at": "2026-06-02T03:22:04.000000Z"
            }
        ]
    }
}
 

Request      

GET api/test

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/me/hakAkses

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/me/hakAkses

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/user

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/user

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/work_load_analysis/realization/revision/{id}

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/work_load_analysis/realization/revision/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/realization/revision/architecto"
);

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/work_load_analysis/realization/revision/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the revision. Example: architecto

FORM PENGAJUAN

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/work_load_analysis/change-request" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_master_wla\": \"6ff8f7f6-1eb3-3525-be4a-3932c805afed\",
    \"nilai_target_baru\": \"g\",
    \"alasan_perubahan\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/change-request"
);

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

let body = {
    "id_master_wla": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
    "nilai_target_baru": "g",
    "alasan_perubahan": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/work_load_analysis/change-request

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_master_wla   string     

Must be a valid UUID. The id of an existing record in the master_wla table. Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

nilai_target_baru   string     

'jenis_target_baru' => 'required|in:Waktu,Tanggal,Hari,Hari Deadline,Durasi,Jumlah,Tanggal Lengkap',. Must not be greater than 25 characters. Example: g

alasan_perubahan   string  optional    

Example: architecto

Approval

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/work_load_analysis/change-request/architecto/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/change-request/architecto/approve"
);

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


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/work_load_analysis/change-request/{id}/approve

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the change request. Example: architecto

Reject

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/work_load_analysis/change-request/architecto/reject" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/change-request/architecto/reject"
);

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


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/work_load_analysis/change-request/{id}/reject

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the change request. Example: architecto

GET api/approvals/pending

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/approvals/pending

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/approvals/history

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/approvals/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Show the form for creating a new resource.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/workload-realizations/create

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Show the form for editing the specified resource.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/workload-realizations/{workload_realization}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workload_realization   string     

Example: architecto

Show the form for creating a new resource.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/approval-headers/create

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Show the form for editing the specified resource.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/approval-headers/{approval_header}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

approval_header   string     

Example: architecto

POST api/employee-requests/pengajuan/import

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/employee-requests/pengajuan/import" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"file_lowongan\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/employee-requests/pengajuan/import"
);

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

let body = {
    "file_lowongan": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/employee-requests/pengajuan/import

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

file_lowongan   string     

Example: architecto

file_kualifikasi   string  optional    

GET api/competences/{id}/jabatan

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competences/{id}/jabatan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competence. Example: architecto

GET api/organisasi/tree

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/organisasi/tree

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/send-email

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/send-email" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"subject\": \"m\",
    \"title\": \"i\",
    \"message\": \"architecto\",
    \"type\": \"n\",
    \"schedule\": \"g\",
    \"location\": \"z\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/send-email"
);

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

let body = {
    "email": "gbailey@example.net",
    "subject": "m",
    "title": "i",
    "message": "architecto",
    "type": "n",
    "schedule": "g",
    "location": "z"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/send-email

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

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

subject   string     

Must not be greater than 255 characters. Example: m

title   string     

Must not be greater than 255 characters. Example: i

message   string     

Example: architecto

type   string  optional    

Must not be greater than 100 characters. Example: n

schedule   string  optional    

Must not be greater than 100 characters. Example: g

location   string  optional    

Must not be greater than 255 characters. Example: z

POST api/users/change-password

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/users/change-password" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"old_password\": \"architecto\",
    \"new_password\": \"ngzmiyvdljnikhwaykcmyuwpwl\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users/change-password"
);

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

let body = {
    "old_password": "architecto",
    "new_password": "ngzmiyvdljnikhwaykcmyuwpwl"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/users/change-password

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

old_password   string     

Example: architecto

new_password   string     

Must be at least 8 characters. Example: ngzmiyvdljnikhwaykcmyuwpwl

POST api/users/fiturWeb

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/users/fiturWeb" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"modul\": \"b\",
    \"sub_modul\": \"n\",
    \"fitur\": \"g\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users/fiturWeb"
);

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

let body = {
    "modul": "b",
    "sub_modul": "n",
    "fitur": "g"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/users/fiturWeb

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

modul   string     

Must not be greater than 100 characters. Example: b

sub_modul   string  optional    

Must not be greater than 100 characters. Example: n

fitur   string     

Must not be greater than 100 characters. Example: g

PUT api/users/fiturWeb/{id}

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/users/fiturWeb/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"modul\": \"b\",
    \"sub_modul\": \"n\",
    \"fitur\": \"g\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users/fiturWeb/architecto"
);

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

let body = {
    "modul": "b",
    "sub_modul": "n",
    "fitur": "g"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/users/fiturWeb/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the fiturWeb. Example: architecto

Body Parameters

modul   string  optional    

Must not be greater than 100 characters. Example: b

sub_modul   string  optional    

Must not be greater than 100 characters. Example: n

fitur   string  optional    

Must not be greater than 100 characters. Example: g

DELETE api/users/fiturWeb/{id}

requires authentication

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/users/fiturWeb/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the fiturWeb. Example: architecto

POST api/users/hakAkses/list

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/users/hakAkses/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/users/hakAkses/list"
);

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/users/hakAkses/list

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/list-jurusan

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/list-jurusan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

SHOW: Mendapatkan detail 1 meeting

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/meetings/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the meeting. Example: architecto

GET api/meetings/{id}/peserta

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/meetings/{id}/peserta

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the meeting. Example: architecto

POST api/meetings/{id}/read

requires authentication

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/meetings/{id}/read

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the meeting. Example: architecto

GET api/peforma-karyawan/me

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/peforma-karyawan/me" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/peforma-karyawan/me"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/peforma-karyawan/me

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

HRD Assignment Config

Display a listing of HRD Assignment Config.

requires authentication

Endpoint ini digunakan untuk mengambil seluruh data HRD Assignment Config beserta relasi Struktur Organisasi dan data Karyawan terkait.

Ketentuan:

Relasi:

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/hrd-assignment-config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/hrd-assignment-config"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "message": "HRD Assignment Configs retrieved successfully",
    "timestamp": "2026-05-09T10:00:00.000000Z",
    "data": [
        {
            "id": "uuid",
            "level_manajerial": "General",
            "tahapan": "applied",
            "id_struktur_organisasi": "uuid",
            "created_at": "2026-05-09T10:00:00.000000Z",
            "updated_at": "2026-05-09T10:00:00.000000Z",
            "struktur_organisasi": {
                "id": "uuid",
                "id_karyawan": "uuid",
                "karyawan": {
                    "id": "uuid",
                    "nama_lengkap": "John Doe"
                }
            }
        }
    ]
}
 

Request      

GET api/hrd-assignment-config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

List Tahapan Recruitment.

requires authentication

Endpoint ini digunakan untuk mengambil daftar tahapan recruitment berdasarkan data HRD Assignment Config beserta PIC HRD yang bertanggung jawab.

Ketentuan:

Pengelompokan Action:

Relasi Data:

Data yang ditampilkan:

Khusus:

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/hrd-assignment-config/list-tahapan/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/hrd-assignment-config/list-tahapan/architecto"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "message": "Tahapan retrieved successfully",
    "timestamp": "2026-05-12T10:00:00.000000Z",
    "data": [
        {
            "name": "Finalisasi",
            "action": "finalisasi",
            "tahapan": "finalisasi",
            "details": [
                {
                    "id_struktur_organisasi": "019df0bc-1bc6-7045-878e-726ac0288f27",
                    "nama_lengkap": "NADYA INGRIDA BRAHMANA",
                    "nik": "FRP - 4291",
                    "level_manajerial": "Semua"
                }
            ]
        },
        {
            "name": "Test",
            "action": "test",
            "tahapan": "test",
            "details": [
                {
                    "id": "0654372b-feb4-47a4-935a-909248b529ed",
                    "level_manajerial": "D",
                    "id_struktur_organisasi": "019df0bc-1af2-73bf-a1dd-fd0cd702ec91",
                    "nama_lengkap": "Nama HRD",
                    "nik": "FRP - 0001",
                    "updated_at": "2026-05-12T02:22:01.000000Z"
                }
            ]
        },
        {
            "name": "Wawancara",
            "action": "interview",
            "tahapan": "interview",
            "details": [
                {
                    "id": "1a77bffe-63da-4764-8dd4-53b094e55c34",
                    "level_manajerial": "M3",
                    "id_struktur_organisasi": "019df0bc-1b89-73f5-9a51-31099cf39c2f",
                    "nama_lengkap": "Nama HRD",
                    "nik": "FRP - 1294",
                    "updated_at": "2026-05-12T02:22:01.000000Z"
                }
            ]
        },
        {
            "name": "Screening CV",
            "action": "applied",
            "tahapan": "applied",
            "details": [
                {
                    "id_struktur_organisasi": "019df0bc-1bc6-7045-878e-726ac0288f27",
                    "nama_lengkap": "NADYA INGRIDA BRAHMANA",
                    "nik": "FRP - 4291",
                    "level_manajerial": "Semua"
                }
            ]
        }
    ]
}
 

Request      

GET api/hrd-assignment-config/list-tahapan/{tahapan?}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tahapan   string  optional    

Example: architecto

List Level General berdasarkan Tahapan.

requires authentication

Endpoint ini digunakan untuk mengambil data HRD Assignment Config berdasarkan tahapan tertentu dengan level_manajerial = General.

Ketentuan:

Parameter:

Contoh:

Mapping Finalisasi:

Relasi:

Field Karyawan:

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/hrd-assignment-config/finalisasi" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/hrd-assignment-config/finalisasi"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "message": "HRD Assignment Configs retrieved successfully",
    "timestamp": "2026-05-12T10:00:00.000000Z",
    "data": [
        {
            "id": "uuid",
            "level_manajerial": "General",
            "tahapan": "finalisasi",
            "id_struktur_organisasi": "uuid",
            "created_at": "2026-05-12T10:00:00.000000Z",
            "updated_at": "2026-05-12T10:00:00.000000Z",
            "struktur_organisasi": {
                "id": "uuid",
                "id_karyawan": "uuid",
                "karyawan": {
                    "id": "uuid",
                    "nama_lengkap": "John Doe"
                }
            }
        }
    ]
}
 

Request      

GET api/hrd-assignment-config/{tahapan}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tahapan   string     

Tahapan HRD Assignment Config. Example: finalisasi

Display a listing from filtered resource.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/hrd-assignment-config/{tahapan?}/{level_manajerial?}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tahapan   string  optional    

Example: architecto

level_manajerial   string  optional    

Example: architecto

Display the specified resource.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/hrd-assignment-config/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the hrd assignment config. Example: architecto

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/hrd-assignment-config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_struktur_organisasi\": \"6ff8f7f6-1eb3-3525-be4a-3932c805afed\",
    \"level_manajerial\": \"architecto\",
    \"tahapan\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/hrd-assignment-config"
);

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

let body = {
    "id_struktur_organisasi": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
    "level_manajerial": "architecto",
    "tahapan": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/hrd-assignment-config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_struktur_organisasi   string     

Must be a valid UUID. The id of an existing record in the struktur_organisasi table. Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

level_manajerial   string     

Example: architecto

tahapan   string     

Example: architecto

Update the specified resource in storage.

requires authentication

Mengupdate HRD Assignment Config berdasarkan:

Sekaligus menyimpan histori perubahan ke tabel log.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/hrd-assignment-config/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"level_manajerial\": \"M2\",
    \"tahapan\": \"test\",
    \"id_struktur_organisasi\": \"550e8400-e29b-41d4-a716-446655440000\",
    \"new_id_struktur_organisasi\": \"550e8400-e29b-41d4-a716-446655440001\",
    \"keterangan\": \"Perubahan PIC approval\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/hrd-assignment-config/update"
);

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

let body = {
    "level_manajerial": "M2",
    "tahapan": "test",
    "id_struktur_organisasi": "550e8400-e29b-41d4-a716-446655440000",
    "new_id_struktur_organisasi": "550e8400-e29b-41d4-a716-446655440001",
    "keterangan": "Perubahan PIC approval"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "message": "HRD Assignment Config updated successfully",
    "timestamp": "2026-05-13T10:00:00",
    "data": {
        "id": "550e8400-e29b-41d4-a716-446655440010",
        "id_struktur_organisasi": "550e8400-e29b-41d4-a716-446655440001",
        "level_manajerial": "M2",
        "tahapan": "test"
    }
}
 

Example response (404):


{
    "message": "Data not found",
    "timestamp": "2026-05-13T10:00:00",
    "data": null
}
 

Example response (409):


{
    "message": "Update failed: Another config with the same criteria already exists",
    "timestamp": "2026-05-13T10:00:00",
    "data": null
}
 

Example response (500):


{
    "message": "Failed to update data",
    "error": "error message",
    "timestamp": "2026-05-13T10:00:00",
    "data": null
}
 

Request      

PUT api/hrd-assignment-config/update

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

level_manajerial   string     

Level manajerial. Example: M2

tahapan   string     

Tahapan proses. Example: test

id_struktur_organisasi   uuid     

ID struktur organisasi lama. Example: 550e8400-e29b-41d4-a716-446655440000

new_id_struktur_organisasi   uuid     

ID struktur organisasi baru. Example: 550e8400-e29b-41d4-a716-446655440001

keterangan   string  optional    

nullable Catatan perubahan. Example: Perubahan PIC approval

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/hrd-assignment-config/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/hrd-assignment-config/architecto"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/hrd-assignment-config/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the hrd assignment config. Example: architecto

Karyawan

Menyimpan data pelamar yang lolos seleksi menjadi data karyawan, termasuk seluruh relasi seperti keluarga, pendidikan, pekerjaan, organisasi, keahlian, pelatihan, dan dokumen.

Data diambil dari External API berdasarkan employee_applicant_id, kemudian diproses dan disimpan ke dalam database internal.

Sistem juga akan:

Store Pelamar Lolos Menjadi Karyawan

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/employee" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "employee_applicant_id=1"\
    --form "jenis_karyawan=staff"\
    --form "tanggal_mulai=2026-06-06T10:08:28"\
    --form "tanggal_akhir=2052-06-29"\
    --form "lama_kontrak=16"\
    --form "status=n"\
    --form "penjamin=g"\
    --form "pakta_integritas_pegawai="\
    --form "peraturan_ketentuan_perusahaan="\
    --form "surat_perjanjian_kerja=1"\
    --form "foto_profil=@C:\Users\DC03\AppData\Local\Temp\phpF4E5.tmp" 
const url = new URL(
    "http://10.10.1.109:8000/api/employee"
);

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

const body = new FormData();
body.append('employee_applicant_id', '1');
body.append('jenis_karyawan', 'staff');
body.append('tanggal_mulai', '2026-06-06T10:08:28');
body.append('tanggal_akhir', '2052-06-29');
body.append('lama_kontrak', '16');
body.append('status', 'n');
body.append('penjamin', 'g');
body.append('pakta_integritas_pegawai', '');
body.append('peraturan_ketentuan_perusahaan', '');
body.append('surat_perjanjian_kerja', '1');
body.append('foto_profil', document.querySelector('input[name="foto_profil"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Example response (201):


{
    "success": true,
    "message": "Data berhasil disimpan"
}
 

Example response (404):


{
    "success": false,
    "message": "Data tidak ditemukan"
}
 

Example response (404):


{
    "success": false,
    "message": "Applicant tidak ditemukan"
}
 

Example response (422):


{
    "success": false,
    "errors": {
        "employee_applicant_id": [
            "The employee applicant id field is required."
        ],
        "jenis_karyawan": [
            "The jenis karyawan field is required."
        ]
    }
}
 

Example response (500):


{
    "success": false,
    "message": "Response API tidak valid"
}
 

Example response (500):


{
    "success": false,
    "message": "Internal Server Error",
    "error": "Error message detail"
}
 

Request      

POST api/employee

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

employee_applicant_id   string     

ID pelamar dari sistem eksternal. Example: 1

jenis_karyawan   string     

Jenis karyawan (enum: staff / non staff / ojt). Example: staff

tanggal_mulai   string  optional    

Must be a valid date. Example: 2026-06-06T10:08:28

tanggal_akhir   string  optional    

Must be a valid date. Must be a date after or equal to tanggal_mulai. Example: 2052-06-29

lama_kontrak   integer  optional    

Example: 16

status   string  optional    

Must not be greater than 50 characters. Example: n

penjamin   string  optional    

Must not be greater than 150 characters. Example: g

pakta_integritas_pegawai   boolean  optional    

Example: false

peraturan_ketentuan_perusahaan   boolean  optional    

Example: false

surat_perjanjian_kerja   boolean  optional    

Example: true

foto_profil   file  optional    

Must be a file. Must not be greater than 2048 kilobytes. Example: C:\Users\DC03\AppData\Local\Temp\phpF4E5.tmp

Karyawan Management

Create New Karyawan

requires authentication

API untuk membuat data karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data karyawan:

Jika request dikirim dalam format array data, maka seluruh item akan divalidasi dan disimpan sekaligus.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nik\": \"3171010101010001\",
    \"nama_lengkap\": \"Budi Santoso\",
    \"nama_inisial\": \"Budi\",
    \"jenis_karyawan\": \"staff\",
    \"tempat_lahir\": \"Jakarta\",
    \"tanggal_lahir\": \"1995-01-15\",
    \"no_ktp\": \"3171010101010001\",
    \"no_sim\": \"SIM123456\",
    \"exp_sim\": \"2027-01-15\",
    \"no_sio\": \"SIO123456\",
    \"exp_sio\": \"2027-01-15\",
    \"no_bpjs\": \"BPJS0001\",
    \"no_jamsostek\": \"JSTK0001\",
    \"no_npwp\": \"NPWP0001\",
    \"nama_faskes\": \"RS Sejahtera\",
    \"jenis_kelamin\": \"laki-laki\",
    \"agama\": \"Islam\",
    \"status_pernikahan\": \"Menikah\",
    \"kebangsaan\": \"Indonesia\",
    \"suku\": \"Jawa\",
    \"alamat_ktp\": \"Jl. Melati No. 10, Jakarta\",
    \"alamat\": \"Jl. Melati No. 10, Jakarta\",
    \"telepon_rumah\": \"021555111\",
    \"no_hp\": \"081234567890\",
    \"email\": \"budi.santoso@mail.com\",
    \"golongan\": \"G1\",
    \"nama_bank\": \"BCA\",
    \"no_rek\": \"1234567890\",
    \"an_bank\": \"Budi Santoso\",
    \"cita_cita\": \"Manager\",
    \"hobi\": \"Membaca\",
    \"no_kk\": \"1234567890123456\",
    \"gaji_jamsostek\": \"5000000\",
    \"nilai_jamsostek\": \"200000\",
    \"iuran_jaminan_kematian\": \"50000\",
    \"iuran_jaminan_keselamatan_kerja\": \"75000\",
    \"iuran_jaminan_kesejahteraan_sosial\": \"100000\",
    \"asuransi\": \"Asuransi XYZ\",
    \"data\": [
        {
            \"nik\": \"3171010101010001\",
            \"id_user\": 1,
            \"nama_lengkap\": \"Budi Santoso\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan"
);

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

let body = {
    "nik": "3171010101010001",
    "nama_lengkap": "Budi Santoso",
    "nama_inisial": "Budi",
    "jenis_karyawan": "staff",
    "tempat_lahir": "Jakarta",
    "tanggal_lahir": "1995-01-15",
    "no_ktp": "3171010101010001",
    "no_sim": "SIM123456",
    "exp_sim": "2027-01-15",
    "no_sio": "SIO123456",
    "exp_sio": "2027-01-15",
    "no_bpjs": "BPJS0001",
    "no_jamsostek": "JSTK0001",
    "no_npwp": "NPWP0001",
    "nama_faskes": "RS Sejahtera",
    "jenis_kelamin": "laki-laki",
    "agama": "Islam",
    "status_pernikahan": "Menikah",
    "kebangsaan": "Indonesia",
    "suku": "Jawa",
    "alamat_ktp": "Jl. Melati No. 10, Jakarta",
    "alamat": "Jl. Melati No. 10, Jakarta",
    "telepon_rumah": "021555111",
    "no_hp": "081234567890",
    "email": "budi.santoso@mail.com",
    "golongan": "G1",
    "nama_bank": "BCA",
    "no_rek": "1234567890",
    "an_bank": "Budi Santoso",
    "cita_cita": "Manager",
    "hobi": "Membaca",
    "no_kk": "1234567890123456",
    "gaji_jamsostek": "5000000",
    "nilai_jamsostek": "200000",
    "iuran_jaminan_kematian": "50000",
    "iuran_jaminan_keselamatan_kerja": "75000",
    "iuran_jaminan_kesejahteraan_sosial": "100000",
    "asuransi": "Asuransi XYZ",
    "data": [
        {
            "nik": "3171010101010001",
            "id_user": 1,
            "nama_lengkap": "Budi Santoso"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan",
    "data": {
        "id": 1,
        "nik": "3171010101010001",
        "nama_lengkap": "Budi Santoso",
        "created_at": "2026-04-09T10:00:00.000000Z",
        "updated_at": "2026-04-09T10:00:00.000000Z"
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan data",
    "data": [
        {
            "id": 1,
            "nik": "3171010101010001",
            "nama_lengkap": "Budi Santoso"
        },
        {
            "id": 2,
            "nik": "3171010101010002",
            "nama_lengkap": "Siti Aisyah"
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "nik": [
            "The nik field is required."
        ]
    }
}
 

Request      

POST api/karyawan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

nik   string     
  • Nomor induk karyawan. Example: 3171010101010001
nama_lengkap   string     
  • Nama lengkap karyawan. Example: Budi Santoso
nama_inisial   string     
  • Nama inisial karyawan. Example: Budi
jenis_karyawan   string     
  • Jenis karyawan: staff, non staff, atau ojt. Example: staff
tempat_lahir   string     
  • Tempat lahir karyawan. Example: Jakarta
tanggal_lahir   date     
  • Tanggal lahir karyawan. Example: 1995-01-15
no_ktp   string     
  • Nomor KTP. Example: 3171010101010001
no_sim   string  optional    

nullable - Nomor SIM. Example: SIM123456

exp_sim   date  optional    

nullable - Tanggal expired SIM. Example: 2027-01-15

no_sio   string  optional    

nullable - Nomor SIO. Example: SIO123456

exp_sio   date  optional    

nullable - Tanggal expired SIO. Example: 2027-01-15

no_bpjs   string  optional    

nullable - Nomor BPJS. Example: BPJS0001

no_jamsostek   string  optional    

nullable - Nomor Jamsostek. Example: JSTK0001

no_npwp   string  optional    

nullable - Nomor NPWP. Example: NPWP0001

nama_faskes   string  optional    

nullable - Nama faskes. Example: RS Sejahtera

jenis_kelamin   string     
  • Jenis kelamin: laki-laki atau perempuan. Example: laki-laki
agama   string     
  • Agama karyawan. Example: Islam
status_pernikahan   string     
  • Status pernikahan. Example: Menikah
kebangsaan   string     
  • Kebangsaan karyawan. Example: Indonesia
suku   string  optional    

nullable - Suku karyawan. Example: Jawa

alamat_ktp   string     
  • Alamat sesuai KTP. Example: Jl. Melati No. 10, Jakarta
alamat   string     
  • Alamat domisili. Example: Jl. Melati No. 10, Jakarta
telepon_rumah   string  optional    

nullable - Nomor telepon rumah. Example: 021555111

no_hp   string     
  • Nomor HP karyawan. Example: 081234567890
email   string     
  • Email karyawan. Example: budi.santoso@mail.com
golongan   string     
  • Golongan karyawan. Example: G1
nama_bank   string     
  • Nama bank. Example: BCA
no_rek   string     
  • Nomor rekening. Example: 1234567890
an_bank   string     
  • Nama pemilik rekening. Example: Budi Santoso
cita_cita   string  optional    

nullable - Cita-cita karyawan. Example: Manager

hobi   string  optional    

nullable - Hobi karyawan. Example: Membaca

no_kk   string     
  • Nomor kartu keluarga. Example: 1234567890123456
gaji_jamsostek   numeric  optional    

nullable - Gaji untuk perhitungan Jamsostek. Example: 5000000

nilai_jamsostek   numeric  optional    

nullable - Nilai Jamsostek. Example: 200000

iuran_jaminan_kematian   numeric  optional    

nullable - Iuran jaminan kematian. Example: 50000

iuran_jaminan_keselamatan_kerja   numeric  optional    

nullable - Iuran jaminan keselamatan kerja. Example: 75000

iuran_jaminan_kesejahteraan_sosial   numeric  optional    

nullable - Iuran jaminan kesejahteraan sosial. Example: 100000

asuransi   string  optional    

nullable - Informasi asuransi karyawan. Example: Asuransi XYZ

data   string[]  optional    

optional - Digunakan untuk bulk insert.

List Karyawan (Enhanced)

requires authentication

API untuk menampilkan daftar data karyawan dengan pagination, filtering, sorting, dan date range.

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/karyawan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        \"architecto\"
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"2026-04-01T00:00:00.000Z\",
    \"dateEnd\": \"2026-04-10T23:59:59.000Z\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        "architecto"
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "2026-04-01T00:00:00.000Z",
    "dateEnd": "2026-04-10T23:59:59.000Z"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 100,
        "lastPage": 10
    },
    "data": [
        {
            "id": 1,
            "nik": "3171010101010001",
            "namaLengkap": "Budi Santoso",
            "namaInisial": "Budi",
            "jenisKaryawan": "staff",
            "tempatLahir": "Jakarta",
            "tanggalLahir": "1995-01-15",
            "noKtp": "3171010101010001",
            "noSim": "SIM123456",
            "expSim": "2027-01-15",
            "noSio": "SIO123456",
            "expSio": "2027-01-15",
            "noBpjs": "BPJS0001",
            "noJamsostek": "JSTK0001",
            "noNpwp": "NPWP0001",
            "namaFaskes": "RS Sejahtera",
            "jenisKelamin": "laki-laki",
            "agama": "Islam",
            "statusPernikahan": "Menikah",
            "kebangsaan": "Indonesia",
            "suku": "Jawa",
            "alamatKtp": "Jl. Melati No. 10, Jakarta",
            "alamat": "Jl. Melati No. 10, Jakarta",
            "teleponRumah": "021555111",
            "noHp": "081234567890",
            "email": "budi.santoso@mail.com",
            "noOdner": "ODN001",
            "golongan": "G1",
            "kelompok": "Karyawan Tetap",
            "bagian": "Operasional",
            "namaBank": "BCA",
            "noRek": "1234567890",
            "anBank": "Budi Santoso",
            "citaCita": "Manager",
            "hobi": "Membaca",
            "noKk": "1234567890123456",
            "nikP1": "3171010101010002",
            "nikP2": "3171010101010003",
            "nikP3": "3171010101010004",
            "createdAt": "2026-04-10 12:00:00",
            "updatedAt": "2026-04-10 12:00:00"
        }
    ]
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Error message details"
}
 

Request      

GET api/karyawan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

Optional. Nomor halaman (>= 1). Example: 1

pageSize   integer  optional    

Optional. Jumlah data per halaman (1-100). Example: 10

filters   string[]  optional    

Optional. Daftar filter (AND secara default).

field   string  optional    

Required. Field untuk filter. Allowed: id, nik, nama_lengkap, nama_inisial, jenis_karyawan, tempat_lahir, tanggal_lahir, no_ktp, no_sim, exp_sim, no_sio, exp_sio, no_bpjs, no_jamsostek, no_npwp, nama_faskes, jenis_kelamin, agama, status_pernikahan, kebangsaan, suku, alamat_ktp, alamat, telepon_rumah, no_hp, email, no_odner, golongan, kelompok, bagian, nama_bank, no_rek, an_bank, cita_cita, hobi, no_kk, nik_p1, nik_p2, nik_p3, created_at, updated_at. Example: jenis_karyawan

operator   string  optional    

Required. Operator filter. Allowed: contains, eq, neq, gt, lt, gte, lte, in. Example: eq

value   string|number|boolean|array  optional    

Required. Nilai untuk filter. Example: staff

logic   string  optional    

Optional. Penggabungan filter: and/or. Default: and. Example: and

sorts   string[]  optional    

Optional. Daftar sorting (diapply berurutan).

field   string  optional    

Required. Field untuk sorting (harus termasuk allowed fields di atas). Example: created_at

direction   string  optional    

Required. Direction sorting. Allowed: asc, desc. Example: desc

dateStart   string  optional    

Optional. Filter start date untuk created_at. Format: YYYY-MM-DD atau ISO 8601. Example: 2026-04-01T00:00:00.000Z

dateEnd   string  optional    

Optional. Filter end date untuk created_at. Format: YYYY-MM-DD atau ISO 8601. Example: 2026-04-10T23:59:59.000Z

requires authentication

API untuk menampilkan daftar data karyawan dengan pagination, filtering, sorting, dan date range.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        \"architecto\"
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"2026-04-01T00:00:00.000Z\",
    \"dateEnd\": \"2026-04-10T23:59:59.000Z\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/search"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        "architecto"
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "2026-04-01T00:00:00.000Z",
    "dateEnd": "2026-04-10T23:59:59.000Z"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 100,
        "lastPage": 10
    },
    "data": [
        {
            "id": 1,
            "nik": "3171010101010001",
            "namaLengkap": "Budi Santoso",
            "namaInisial": "Budi",
            "jenisKaryawan": "staff",
            "tempatLahir": "Jakarta",
            "tanggalLahir": "1995-01-15",
            "noKtp": "3171010101010001",
            "noSim": "SIM123456",
            "expSim": "2027-01-15",
            "noSio": "SIO123456",
            "expSio": "2027-01-15",
            "noBpjs": "BPJS0001",
            "noJamsostek": "JSTK0001",
            "noNpwp": "NPWP0001",
            "namaFaskes": "RS Sejahtera",
            "jenisKelamin": "laki-laki",
            "agama": "Islam",
            "statusPernikahan": "Menikah",
            "kebangsaan": "Indonesia",
            "suku": "Jawa",
            "alamatKtp": "Jl. Melati No. 10, Jakarta",
            "alamat": "Jl. Melati No. 10, Jakarta",
            "teleponRumah": "021555111",
            "noHp": "081234567890",
            "email": "budi.santoso@mail.com",
            "noOdner": "ODN001",
            "golongan": "G1",
            "kelompok": "Karyawan Tetap",
            "bagian": "Operasional",
            "namaBank": "BCA",
            "noRek": "1234567890",
            "anBank": "Budi Santoso",
            "citaCita": "Manager",
            "hobi": "Membaca",
            "noKk": "1234567890123456",
            "nikP1": "3171010101010002",
            "nikP2": "3171010101010003",
            "nikP3": "3171010101010004",
            "createdAt": "2026-04-10 12:00:00",
            "updatedAt": "2026-04-10 12:00:00"
        }
    ]
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Error message details"
}
 

Get Karyawan By ID

requires authentication

API untuk menampilkan detail data karyawan berdasarkan ID.

Endpoint ini mengembalikan data lengkap karyawan beserta seluruh relasi yang terkait.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "nik": "3171010101010001",
        "namaLengkap": "Budi Santoso",
        "namaInisial": "Budi",
        "jenisKaryawan": "staff",
        "tempatLahir": "Jakarta",
        "tanggalLahir": "1995-01-15",
        "noKtp": "3171010101010001",
        "noSim": "SIM123456",
        "expSim": "2027-01-15",
        "noSio": "SIO123456",
        "expSio": "2027-01-15",
        "noBpjs": "BPJS0001",
        "noJamsostek": "JSTK0001",
        "noNpwp": "NPWP0001",
        "namaFaskes": "RS Sejahtera",
        "jenisKelamin": "laki-laki",
        "agama": "Islam",
        "status_pernikahan": "Menikah",
        "kebangsaan": "Indonesia",
        "suku": "Jawa",
        "alamatKtp": "Jl. Melati No. 10, Jakarta",
        "alamat": "Jl. Melati No. 10, Jakarta",
        "teleponRumah": "021555111",
        "noHp": "081234567890",
        "email": "budi.santoso@mail.com",
        "noOdner": "ODN001",
        "golongan": "G1",
        "kelompok": "Karyawan Tetap",
        "bagian": "Operasional",
        "namaBank": "BCA",
        "noRek": "1234567890",
        "anBank": "Budi Santoso",
        "citaCita": "Manager",
        "hobi": "Membaca",
        "noKk": "1234567890123456",
        "nikP1": "3171010101010002",
        "nikP2": "3171010101010003",
        "nikP3": "3171010101010004",
        "ahliwaris": [
            {
                "id": 1,
                "id_karyawan": 1,
                "id_karyawan_keluarga": 2,
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "files": [
            {
                "id": 1,
                "id_karyawan": 1,
                "jenis": "ktp",
                "file": "uploads/karyawan/ktp.pdf",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "gaji": [
            {
                "id": 1,
                "id_karyawan": 1,
                "gaji_bulanan": "5000000.00",
                "gaji_harian": "200000.00",
                "gaji_pokok_harian": "180000.00",
                "tj_jabatan": "500000.00",
                "tj_keahlian": "300000.00",
                "tj_transport": "150000.00",
                "tj_natura_harian": "25000.00",
                "tj_pengganti_lembur": "100000.00",
                "insentif_harian": "50000.00",
                "bonus_produksi": "250000.00",
                "uang_makan": "30000.00",
                "status_pph": "PPh 21",
                "tanggal_berlaku": "2026-01-01",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "keahlian": [
            {
                "id": 1,
                "id_karyawan": 1,
                "keahlian": "Microsoft Excel",
                "keterangan": "Advanced",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "keluarga": [
            {
                "id": 1,
                "id_karyawan": 1,
                "hubungan": "Istri",
                "nama_lengkap": "Siti Aminah",
                "tempat_lahir": "Bandung",
                "tanggal_lahir": "1992-05-10",
                "jenis_kelamin": "Perempuan",
                "pendidikan_terakhir": "S1",
                "pekerjaan": "Ibu Rumah Tangga",
                "penghasilan": "0.00",
                "no_hp": "081111111111",
                "alamat": "Jl. Melati No. 10",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "kontrak": [
            {
                "id": 1,
                "id_karyawan": 1,
                "nomor_kontrak": "KTR-001",
                "tanggal_mulai": "2026-01-01",
                "tanggal_akhir": "2026-12-31",
                "lama_kontrak": 12,
                "status": "Aktif",
                "penjamin": "PT Sejahtera",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "riwayatOrganisasi": [
            {
                "id": 1,
                "id_karyawan": 1,
                "nama_organisasi": "Karang Taruna",
                "jabatan": "Ketua",
                "tahun_mulai": 2015,
                "tahun_akhir": 2018,
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "riwayatPekerjaan": [
            {
                "id": 1,
                "id_karyawan": 1,
                "nama_perusahaan": "PT Maju Jaya",
                "posisi": "Operator",
                "deskripsi_pekerjaan": "Mengoperasikan mesin produksi",
                "tanggal_mulai": "2018-01-01",
                "tanggal_selesai": "2020-12-31",
                "lokasi": "Jakarta",
                "alasan_berhenti": "Kontrak selesai",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "riwayatPelatihanSertifikasi": [
            {
                "id": 1,
                "id_karyawan": 1,
                "lembaga": "BNSP",
                "nama_kegiatan": "Pelatihan K3",
                "kategori": "Sertifikasi",
                "tahun": 2024,
                "file": "uploads/sertifikat/k3.pdf",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "riwayatPendidikan": [
            {
                "id": 1,
                "id_karyawan": 1,
                "nama_sekolah": "SMA Negeri 1 Jakarta",
                "lokasi": "Jakarta",
                "tahun_lulus": 2013,
                "tingkat": "SMA",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "status": [
            {
                "id": 1,
                "id_karyawan": 1,
                "tanggal": "2026-04-11",
                "keterangan": "Masuk kerja",
                "status": "Aktif",
                "created_at": "2026-04-11T10:00:00.000000Z",
                "updated_at": "2026-04-11T10:00:00.000000Z",
                "deleted_at": null
            }
        ],
        "strukturOrganisasi": {
            "id": 1,
            "id_karyawan": 1,
            "id_struktur_org_atasan": null,
            "level_posisi": "Staff",
            "level_manajerial": "Non Manager",
            "id_jabatan": 2,
            "id_struktur_org_penilai_1": null,
            "id_struktur_org_penilai_2": null,
            "id_struktur_org_penilai_3": null,
            "jabatan": {
                "id": 2,
                "nama_jabatan": "Staff Produksi"
            },
            "atasan": null,
            "penilai1": null,
            "penilai2": null,
            "penilai3": null
        }
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan not found"
}
 

Request      

GET api/karyawan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID karyawan. Example: 1

Update Karyawan

requires authentication

API untuk memperbarui data karyawan berdasarkan ID.

Semua field bersifat required kecuali no_odner.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nik\": \"3171010101010001\",
    \"nama_lengkap\": \"Budi Santoso\",
    \"nama_inisial\": \"Budi\",
    \"jenis_karyawan\": \"staff\",
    \"tempat_lahir\": \"Jakarta\",
    \"tanggal_lahir\": \"1995-01-15\",
    \"no_ktp\": \"3171010101010001\",
    \"no_sim\": \"SIM123456\",
    \"exp_sim\": \"2027-01-15\",
    \"no_sio\": \"SIO123456\",
    \"exp_sio\": \"2027-01-15\",
    \"no_bpjs\": \"BPJS0001\",
    \"no_jamsostek\": \"JSTK0001\",
    \"no_npwp\": \"NPWP0001\",
    \"nama_faskes\": \"RS Sejahtera\",
    \"jenis_kelamin\": \"laki-laki\",
    \"agama\": \"Islam\",
    \"status_pernikahan\": \"Menikah\",
    \"kebangsaan\": \"Indonesia\",
    \"suku\": \"Jawa\",
    \"alamat_ktp\": \"Jl. Melati No. 10, Jakarta\",
    \"alamat\": \"Jl. Melati No. 10, Jakarta\",
    \"telepon_rumah\": \"021555111\",
    \"no_hp\": \"081234567890\",
    \"email\": \"budi.santoso@mail.com\",
    \"golongan\": \"G1\",
    \"nama_bank\": \"BCA\",
    \"no_rek\": \"1234567890\",
    \"an_bank\": \"Budi Santoso\",
    \"cita_cita\": \"Manager\",
    \"hobi\": \"Membaca\",
    \"no_kk\": \"1234567890123456\",
    \"gaji_jamsostek\": \"5000000.00\",
    \"nilai_jamsostek\": \"5000000.00\",
    \"iuran_jaminan_kematian\": \"50000.00\",
    \"iuran_jaminan_keselamatan_kerja\": \"50000.00\",
    \"iuran_jaminan_kesejahteraan_sosial\": \"50000.00\",
    \"asuransi\": \"AXA\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/1"
);

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

let body = {
    "nik": "3171010101010001",
    "nama_lengkap": "Budi Santoso",
    "nama_inisial": "Budi",
    "jenis_karyawan": "staff",
    "tempat_lahir": "Jakarta",
    "tanggal_lahir": "1995-01-15",
    "no_ktp": "3171010101010001",
    "no_sim": "SIM123456",
    "exp_sim": "2027-01-15",
    "no_sio": "SIO123456",
    "exp_sio": "2027-01-15",
    "no_bpjs": "BPJS0001",
    "no_jamsostek": "JSTK0001",
    "no_npwp": "NPWP0001",
    "nama_faskes": "RS Sejahtera",
    "jenis_kelamin": "laki-laki",
    "agama": "Islam",
    "status_pernikahan": "Menikah",
    "kebangsaan": "Indonesia",
    "suku": "Jawa",
    "alamat_ktp": "Jl. Melati No. 10, Jakarta",
    "alamat": "Jl. Melati No. 10, Jakarta",
    "telepon_rumah": "021555111",
    "no_hp": "081234567890",
    "email": "budi.santoso@mail.com",
    "golongan": "G1",
    "nama_bank": "BCA",
    "no_rek": "1234567890",
    "an_bank": "Budi Santoso",
    "cita_cita": "Manager",
    "hobi": "Membaca",
    "no_kk": "1234567890123456",
    "gaji_jamsostek": "5000000.00",
    "nilai_jamsostek": "5000000.00",
    "iuran_jaminan_kematian": "50000.00",
    "iuran_jaminan_keselamatan_kerja": "50000.00",
    "iuran_jaminan_kesejahteraan_sosial": "50000.00",
    "asuransi": "AXA"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan updated successfully",
    "data": {
        "id": 1,
        "nik": "3171010101010001"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "nik": [
            "The nik field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID karyawan yang akan diupdate. Example: 1

Body Parameters

nik   string     
  • Nomor induk karyawan. Example: 3171010101010001
nama_lengkap   string     
  • Nama lengkap karyawan. Example: Budi Santoso
nama_inisial   string     
  • Nama inisial karyawan. Example: Budi
jenis_karyawan   string     
  • Jenis karyawan. Example: staff
tempat_lahir   string     
  • Tempat lahir. Example: Jakarta
tanggal_lahir   date     
  • Tanggal lahir. Example: 1995-01-15
no_ktp   string     
  • Nomor KTP. Example: 3171010101010001
no_sim   string  optional    

nullable - Nomor SIM. Example: SIM123456

exp_sim   date  optional    

nullable - Masa berlaku SIM. Example: 2027-01-15

no_sio   string  optional    

nullable - Nomor SIO. Example: SIO123456

exp_sio   date  optional    

nullable - Masa berlaku SIO. Example: 2027-01-15

no_bpjs   string  optional    

nullable - Nomor BPJS. Example: BPJS0001

no_jamsostek   string  optional    

nullable - Nomor Jamsostek. Example: JSTK0001

no_npwp   string  optional    

nullable - Nomor NPWP. Example: NPWP0001

nama_faskes   string  optional    

nullable - Nama faskes. Example: RS Sejahtera

jenis_kelamin   string     
  • Jenis kelamin. Example: laki-laki
agama   string     
  • Agama. Example: Islam
status_pernikahan   string     
  • Status pernikahan. Example: Menikah
kebangsaan   string     
  • Kebangsaan. Example: Indonesia
suku   string  optional    

nullable - Suku. Example: Jawa

alamat_ktp   string     
  • Alamat sesuai KTP. Example: Jl. Melati No. 10, Jakarta
alamat   string     
  • Alamat domisili. Example: Jl. Melati No. 10, Jakarta
telepon_rumah   string  optional    

nullable - Nomor telepon rumah. Example: 021555111

no_hp   string     
  • Nomor HP. Example: 081234567890
email   string     
  • Email. Example: budi.santoso@mail.com
golongan   string     
  • Golongan. Example: G1
nama_bank   string     
  • Nama bank. Example: BCA
no_rek   string     
  • Nomor rekening. Example: 1234567890
an_bank   string     
  • Nama pemilik rekening. Example: Budi Santoso
cita_cita   string  optional    

nullable - Cita-cita. Example: Manager

hobi   string  optional    

nullable - Hobi. Example: Membaca

no_kk   string     
  • Nomor KK. Example: 1234567890123456
gaji_jamsostek   numeric  optional    

nullable - Gaji Jamsostek. Example: 5000000.00

nilai_jamsostek   numeric  optional    

nullable - Nilai Jamsostek. Example: 5000000.00

iuran_jaminan_kematian   numeric  optional    

nullable - Iuran jaminan kematian. Example: 50000.00

iuran_jaminan_keselamatan_kerja   numeric  optional    

nullable - Iuran jaminan keselamatan kerja. Example: 50000.00

iuran_jaminan_kesejahteraan_sosial   numeric  optional    

nullable - Iuran jaminan kesejahteraan sosial. Example: 50000.00

asuransi   string  optional    

nullable - Asuransi. Example: AXA

Delete Karyawan

requires authentication

API untuk menghapus data karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan not found"
}
 

Request      

DELETE api/karyawan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID karyawan yang akan dihapus. Example: 1

Store Karyawan Keluarga

requires authentication

API untuk membuat data keluarga karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data keluarga karyawan:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/keluarga" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"hubungan\": \"ayah\",
    \"nama_lengkap\": \"Budi Santoso\",
    \"tempat_lahir\": \"Jakarta\",
    \"tanggal_lahir\": \"1970-01-01\",
    \"jenis_kelamin\": \"laki-laki\",
    \"pendidikan_terakhir\": \"SMA\",
    \"pekerjaan\": \"Wiraswasta\",
    \"penghasilan\": \"5000000\",
    \"no_hp\": \"081234567890\",
    \"alamat\": \"Jl. Melati No. 10, Jakarta\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"hubungan\": \"ayah\",
            \"nama_lengkap\": \"Budi Santoso\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/keluarga"
);

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

let body = {
    "id_karyawan": 1,
    "hubungan": "ayah",
    "nama_lengkap": "Budi Santoso",
    "tempat_lahir": "Jakarta",
    "tanggal_lahir": "1970-01-01",
    "jenis_kelamin": "laki-laki",
    "pendidikan_terakhir": "SMA",
    "pekerjaan": "Wiraswasta",
    "penghasilan": "5000000",
    "no_hp": "081234567890",
    "alamat": "Jl. Melati No. 10, Jakarta",
    "data": [
        {
            "id_karyawan": 1,
            "hubungan": "ayah",
            "nama_lengkap": "Budi Santoso"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan keluarga data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "hubungan": "ayah",
        "nama_lengkap": "Budi Santoso"
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan keluarga data",
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "hubungan": "ayah",
            "nama_lengkap": "Budi Santoso"
        },
        {
            "id": 2,
            "id_karyawan": 1,
            "hubungan": "ibu",
            "nama_lengkap": "Siti Aminah"
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/keluarga

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan yang memiliki data keluarga. Example: 1
hubungan   string     
  • Hubungan keluarga: ayah, ibu, anak, istri, atau suami. Example: ayah
nama_lengkap   string     
  • Nama lengkap anggota keluarga. Example: Budi Santoso
tempat_lahir   string     
  • Tempat lahir anggota keluarga. Example: Jakarta
tanggal_lahir   date     
  • Tanggal lahir anggota keluarga. Example: 1970-01-01
jenis_kelamin   string     
  • Jenis kelamin: laki-laki atau perempuan. Example: laki-laki
pendidikan_terakhir   string     
  • Pendidikan terakhir. Example: SMA
pekerjaan   string  optional    

nullable - Pekerjaan anggota keluarga. Example: Wiraswasta

penghasilan   numeric  optional    

nullable - Penghasilan anggota keluarga. Example: 5000000

no_hp   string  optional    

nullable - Nomor HP anggota keluarga. Example: 081234567890

alamat   string     
  • Alamat anggota keluarga. Example: Jl. Melati No. 10, Jakarta
data   string[]  optional    

optional - Digunakan untuk bulk insert.

requires authentication

API untuk menampilkan daftar data keluarga karyawan dengan pagination, filtering, sorting, dan date range.

Endpoint ini mendukung filter dinamis via filters dan sorting via sorts.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/keluarga/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        \"architecto\"
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"2026-04-01T00:00:00.000Z\",
    \"dateEnd\": \"2026-04-10T23:59:59.000Z\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/keluarga/search"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        "architecto"
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "2026-04-01T00:00:00.000Z",
    "dateEnd": "2026-04-10T23:59:59.000Z"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 50,
        "lastPage": 5
    },
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "hubungan": "ayah",
            "nama_lengkap": "Budi Santoso",
            "tempat_lahir": "Jakarta",
            "tanggal_lahir": "1970-01-01",
            "jenis_kelamin": "laki-laki",
            "pendidikan_terakhir": "SMA",
            "pekerjaan": "Wiraswasta",
            "penghasilan": 5000000,
            "no_hp": "081234567890",
            "alamat": "Jl. Melati No. 10, Jakarta",
            "nama_karyawan": "Budi Santoso"
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "filters.0.field": [
            "The selected field is invalid."
        ]
    }
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Error message details"
}
 

Get Karyawan Keluarga By ID

requires authentication

API untuk menampilkan detail data keluarga karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "hubungan": "ayah",
        "nama_lengkap": "Budi Santoso",
        "tempat_lahir": "Jakarta",
        "tanggal_lahir": "1970-01-01",
        "jenis_kelamin": "laki-laki",
        "pendidikan_terakhir": "SMA",
        "pekerjaan": "Wiraswasta",
        "penghasilan": 5000000,
        "no_hp": "081234567890",
        "alamat": "Jl. Melati No. 10, Jakarta",
        "nama_karyawan": "Budi Santoso"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan keluarga not found"
}
 

Request      

GET api/karyawan/keluarga/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data keluarga karyawan. Example: 1

Update Karyawan Keluarga

requires authentication

API untuk memperbarui data keluarga karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/keluarga/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"hubungan\": \"ayah\",
    \"nama_lengkap\": \"Budi Santoso\",
    \"tempat_lahir\": \"Jakarta\",
    \"tanggal_lahir\": \"1970-01-01\",
    \"jenis_kelamin\": \"laki-laki\",
    \"pendidikan_terakhir\": \"SMA\",
    \"pekerjaan\": \"Wiraswasta\",
    \"penghasilan\": \"5000000\",
    \"no_hp\": \"081234567890\",
    \"alamat\": \"Jl. Melati No. 10, Jakarta\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/keluarga/1"
);

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

let body = {
    "id_karyawan": 1,
    "hubungan": "ayah",
    "nama_lengkap": "Budi Santoso",
    "tempat_lahir": "Jakarta",
    "tanggal_lahir": "1970-01-01",
    "jenis_kelamin": "laki-laki",
    "pendidikan_terakhir": "SMA",
    "pekerjaan": "Wiraswasta",
    "penghasilan": "5000000",
    "no_hp": "081234567890",
    "alamat": "Jl. Melati No. 10, Jakarta"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan keluarga updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan keluarga not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/keluarga/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data keluarga karyawan yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan pemilik data keluarga. Example: 1
hubungan   string     
  • Hubungan keluarga: ayah, ibu, anak, istri, atau suami. Example: ayah
nama_lengkap   string     
  • Nama lengkap anggota keluarga. Example: Budi Santoso
tempat_lahir   string     
  • Tempat lahir. Example: Jakarta
tanggal_lahir   date     
  • Tanggal lahir. Example: 1970-01-01
jenis_kelamin   string     
  • Jenis kelamin. Example: laki-laki
pendidikan_terakhir   string     
  • Pendidikan terakhir. Example: SMA
pekerjaan   string  optional    

nullable - Pekerjaan. Example: Wiraswasta

penghasilan   numeric  optional    

nullable - Penghasilan. Example: 5000000

no_hp   string  optional    

nullable - Nomor HP. Example: 081234567890

alamat   string     
  • Alamat. Example: Jl. Melati No. 10, Jakarta

Delete Karyawan Keluarga

requires authentication

API untuk menghapus data keluarga karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/keluarga/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/keluarga/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Keluarga deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Keluarga not found"
}
 

Request      

DELETE api/karyawan/keluarga/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data keluarga karyawan yang akan dihapus. Example: 1

Store Karyawan Gaji

requires authentication

API untuk membuat data gaji karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data gaji karyawan:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/gaji" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"gaji_bulanan\": \"5000000\",
    \"gaji_harian\": \"200000\",
    \"gaji_pokok_harian\": \"150000\",
    \"tj_jabatan\": \"500000\",
    \"tj_keahlian\": \"250000\",
    \"tj_transport\": \"100000\",
    \"tj_natura_harian\": \"50000\",
    \"tj_pengganti_lembur\": \"75000\",
    \"insentif_harian\": \"60000\",
    \"bonus_produksi\": \"300000\",
    \"uang_makan\": \"40000\",
    \"status_pph\": \"pph21\",
    \"tanggal_berlaku\": \"2026-04-01\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"gaji_bulanan\": 5000000
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/gaji"
);

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

let body = {
    "id_karyawan": 1,
    "gaji_bulanan": "5000000",
    "gaji_harian": "200000",
    "gaji_pokok_harian": "150000",
    "tj_jabatan": "500000",
    "tj_keahlian": "250000",
    "tj_transport": "100000",
    "tj_natura_harian": "50000",
    "tj_pengganti_lembur": "75000",
    "insentif_harian": "60000",
    "bonus_produksi": "300000",
    "uang_makan": "40000",
    "status_pph": "pph21",
    "tanggal_berlaku": "2026-04-01",
    "data": [
        {
            "id_karyawan": 1,
            "gaji_bulanan": 5000000
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Gaji data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "gaji_bulanan": 5000000,
        "status_pph": "pph21"
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Gaji data",
    "data": [
        {
            "id": 1,
            "id_karyawan": 1
        },
        {
            "id": 2,
            "id_karyawan": 2
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/gaji

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
gaji_bulanan   numeric     
  • Gaji bulanan. Example: 5000000
gaji_harian   numeric     
  • Gaji harian. Example: 200000
gaji_pokok_harian   numeric     
  • Gaji pokok harian. Example: 150000
tj_jabatan   numeric     
  • Tunjangan jabatan. Example: 500000
tj_keahlian   numeric     
  • Tunjangan keahlian. Example: 250000
tj_transport   numeric     
  • Tunjangan transport. Example: 100000
tj_natura_harian   numeric     
  • Tunjangan natura harian. Example: 50000
tj_pengganti_lembur   numeric     
  • Tunjangan pengganti lembur. Example: 75000
insentif_harian   numeric     
  • Insentif harian. Example: 60000
bonus_produksi   numeric     
  • Bonus produksi. Example: 300000
uang_makan   numeric     
  • Uang makan. Example: 40000
status_pph   string     
  • Status PPh: pph21, non_pph, atau npwp. Example: pph21
tanggal_berlaku   date     
  • Tanggal berlaku gaji. Example: 2026-04-01
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Gaji By ID

requires authentication

API untuk menampilkan detail data gaji karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "gaji_bulanan": 5000000,
        "gaji_harian": 200000,
        "gaji_pokok_harian": 150000,
        "tj_jabatan": 500000,
        "tj_keahlian": 250000,
        "tj_transport": 100000,
        "tj_natura_harian": 50000,
        "tj_pengganti_lembur": 75000,
        "insentif_harian": 60000,
        "bonus_produksi": 300000,
        "uang_makan": 40000,
        "status_pph": "pph21",
        "tanggal_berlaku": "2026-04-01"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Gaji not found"
}
 

Request      

GET api/karyawan/gaji/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data gaji karyawan. Example: 1

requires authentication

API untuk menampilkan daftar data gaji karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/gaji/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/gaji/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "gaji_bulanan": 5000000,
            "gaji_harian": 200000,
            "gaji_pokok_harian": 150000,
            "tj_jabatan": 500000,
            "tj_keahlian": 250000,
            "tj_transport": 100000,
            "tj_natura_harian": 50000,
            "tj_pengganti_lembur": 75000,
            "insentif_harian": 60000,
            "bonus_produksi": 300000,
            "uang_makan": 40000,
            "status_pph": "pph21",
            "tanggal_berlaku": "2026-04-01"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Gaji

requires authentication

API untuk memperbarui data gaji karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/gaji/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"gaji_bulanan\": \"5000000\",
    \"gaji_harian\": \"200000\",
    \"gaji_pokok_harian\": \"150000\",
    \"tj_jabatan\": \"500000\",
    \"tj_keahlian\": \"250000\",
    \"tj_transport\": \"100000\",
    \"tj_natura_harian\": \"50000\",
    \"tj_pengganti_lembur\": \"75000\",
    \"insentif_harian\": \"60000\",
    \"bonus_produksi\": \"300000\",
    \"uang_makan\": \"40000\",
    \"status_pph\": \"ya\",
    \"tanggal_berlaku\": \"2026-04-01\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/gaji/1"
);

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

let body = {
    "id_karyawan": 1,
    "gaji_bulanan": "5000000",
    "gaji_harian": "200000",
    "gaji_pokok_harian": "150000",
    "tj_jabatan": "500000",
    "tj_keahlian": "250000",
    "tj_transport": "100000",
    "tj_natura_harian": "50000",
    "tj_pengganti_lembur": "75000",
    "insentif_harian": "60000",
    "bonus_produksi": "300000",
    "uang_makan": "40000",
    "status_pph": "ya",
    "tanggal_berlaku": "2026-04-01"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan gaji updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Gaji not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/gaji/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data gaji karyawan yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
gaji_bulanan   numeric     
  • Gaji bulanan. Example: 5000000
gaji_harian   numeric     
  • Gaji harian. Example: 200000
gaji_pokok_harian   numeric     
  • Gaji pokok harian. Example: 150000
tj_jabatan   numeric     
  • Tunjangan jabatan. Example: 500000
tj_keahlian   numeric     
  • Tunjangan keahlian. Example: 250000
tj_transport   numeric     
  • Tunjangan transport. Example: 100000
tj_natura_harian   numeric     
  • Tunjangan natura harian. Example: 50000
tj_pengganti_lembur   numeric     
  • Tunjangan pengganti lembur. Example: 75000
insentif_harian   numeric     
  • Insentif harian. Example: 60000
bonus_produksi   numeric     
  • Bonus produksi. Example: 300000
uang_makan   numeric     
  • Uang makan. Example: 40000
status_pph   string     
  • Status PPh: ya atau tidak. Example: ya
tanggal_berlaku   date     
  • Tanggal berlaku. Example: 2026-04-01

Delete Karyawan Gaji

requires authentication

API untuk menghapus data gaji karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/gaji/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/gaji/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Gaji deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Gaji not found"
}
 

Request      

DELETE api/karyawan/gaji/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data gaji karyawan yang akan dihapus. Example: 1

Store Karyawan Riwayat Pekerjaan

requires authentication

API untuk membuat data riwayat pekerjaan karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data riwayat pekerjaan:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/riwayatpekerjaan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"nama_perusahaan\": \"PT Maju Jaya\",
    \"posisi\": \"Staff Administrasi\",
    \"deskripsi_pekerjaan\": \"Mengelola administrasi harian\",
    \"tanggal_mulai\": \"2020-01-01\",
    \"tanggal_selesai\": \"2023-12-31\",
    \"lokasi\": \"Jakarta\",
    \"alasan_berhenti\": \"Kontrak selesai\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"nama_perusahaan\": \"PT Maju Jaya\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpekerjaan"
);

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

let body = {
    "id_karyawan": 1,
    "nama_perusahaan": "PT Maju Jaya",
    "posisi": "Staff Administrasi",
    "deskripsi_pekerjaan": "Mengelola administrasi harian",
    "tanggal_mulai": "2020-01-01",
    "tanggal_selesai": "2023-12-31",
    "lokasi": "Jakarta",
    "alasan_berhenti": "Kontrak selesai",
    "data": [
        {
            "id_karyawan": 1,
            "nama_perusahaan": "PT Maju Jaya"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Riwayat Pekerjaan data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nama_perusahaan": "PT Maju Jaya",
        "posisi": "Staff Administrasi"
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Riwayat Pekerjaan data",
    "data": [
        {
            "id": 1,
            "id_karyawan": 1
        },
        {
            "id": 2,
            "id_karyawan": 1
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/riwayatpekerjaan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
nama_perusahaan   string     
  • Nama perusahaan tempat bekerja sebelumnya. Example: PT Maju Jaya
posisi   string     
  • Posisi/jabatan di perusahaan sebelumnya. Example: Staff Administrasi
deskripsi_pekerjaan   string     
  • Deskripsi pekerjaan. Example: Mengelola administrasi harian
tanggal_mulai   date     
  • Tanggal mulai bekerja. Example: 2020-01-01
tanggal_selesai   date     
  • Tanggal selesai bekerja. Example: 2023-12-31
lokasi   string     
  • Lokasi perusahaan. Example: Jakarta
alasan_berhenti   string     
  • Alasan berhenti bekerja. Example: Kontrak selesai
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Riwayat Pekerjaan By ID

requires authentication

API untuk menampilkan detail riwayat pekerjaan karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nama_perusahaan": "PT Maju Jaya",
        "posisi": "Staff Administrasi",
        "deskripsi_pekerjaan": "Mengelola administrasi harian",
        "tanggal_mulai": "2020-01-01",
        "tanggal_selesai": "2023-12-31",
        "lokasi": "Jakarta",
        "alasan_berhenti": "Kontrak selesai"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pekerjaan not found"
}
 

Request      

GET api/karyawan/riwayatpekerjaan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat pekerjaan. Example: 1

requires authentication

API untuk menampilkan daftar riwayat pekerjaan karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/riwayatpekerjaan/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpekerjaan/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "nama_perusahaan": "PT Maju Jaya",
            "posisi": "Staff Administrasi",
            "deskripsi_pekerjaan": "Mengelola administrasi harian",
            "tanggal_mulai": "2020-01-01",
            "tanggal_selesai": "2023-12-31",
            "lokasi": "Jakarta",
            "alasan_berhenti": "Kontrak selesai"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Riwayat Pekerjaan

requires authentication

API untuk memperbarui data riwayat pekerjaan karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/riwayatpekerjaan/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"nama_perusahaan\": \"PT Maju Jaya\",
    \"posisi\": \"Staff Administrasi\",
    \"deskripsi_pekerjaan\": \"Mengelola administrasi harian\",
    \"tanggal_mulai\": \"2020-01-01\",
    \"tanggal_selesai\": \"2023-12-31\",
    \"lokasi\": \"Jakarta\",
    \"alasan_berhenti\": \"Kontrak selesai\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpekerjaan/1"
);

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

let body = {
    "id_karyawan": 1,
    "nama_perusahaan": "PT Maju Jaya",
    "posisi": "Staff Administrasi",
    "deskripsi_pekerjaan": "Mengelola administrasi harian",
    "tanggal_mulai": "2020-01-01",
    "tanggal_selesai": "2023-12-31",
    "lokasi": "Jakarta",
    "alasan_berhenti": "Kontrak selesai"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan riwayat pekerjaan updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pekerjaan not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/riwayatpekerjaan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat pekerjaan yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
nama_perusahaan   string     
  • Nama perusahaan sebelumnya. Example: PT Maju Jaya
posisi   string     
  • Posisi/jabatan. Example: Staff Administrasi
deskripsi_pekerjaan   string     
  • Deskripsi pekerjaan. Example: Mengelola administrasi harian
tanggal_mulai   date     
  • Tanggal mulai bekerja. Example: 2020-01-01
tanggal_selesai   date     
  • Tanggal selesai bekerja. Example: 2023-12-31
lokasi   string     
  • Lokasi perusahaan. Example: Jakarta
alasan_berhenti   string     
  • Alasan berhenti bekerja. Example: Kontrak selesai

Delete Karyawan Riwayat Pekerjaan

requires authentication

API untuk menghapus data riwayat pekerjaan karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/riwayatpekerjaan/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpekerjaan/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Riwayat Pekerjaan deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pekerjaan not found"
}
 

Request      

DELETE api/karyawan/riwayatpekerjaan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat pekerjaan yang akan dihapus. Example: 1

Store Karyawan Riwayat Pendidikan

requires authentication

API untuk membuat data riwayat pendidikan karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data riwayat pendidikan:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/riwayatpendidikan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"nama_sekolah\": \"SMA Negeri 1 Jakarta\",
    \"lokasi\": \"Jakarta\",
    \"tahun_lulus\": \"2012\",
    \"tingkat\": \"SMA\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"nama_sekolah\": \"SMA Negeri 1 Jakarta\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpendidikan"
);

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

let body = {
    "id_karyawan": 1,
    "nama_sekolah": "SMA Negeri 1 Jakarta",
    "lokasi": "Jakarta",
    "tahun_lulus": "2012",
    "tingkat": "SMA",
    "data": [
        {
            "id_karyawan": 1,
            "nama_sekolah": "SMA Negeri 1 Jakarta"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Riwayat Pendidikan data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nama_sekolah": "SMA Negeri 1 Jakarta",
        "lokasi": "Jakarta",
        "tahun_lulus": "2012",
        "tingkat": "SMA"
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Riwayat Pendidikan data",
    "data": [
        {
            "id": 1,
            "id_karyawan": 1
        },
        {
            "id": 2,
            "id_karyawan": 1
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/riwayatpendidikan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
nama_sekolah   string     
  • Nama sekolah. Example: SMA Negeri 1 Jakarta
lokasi   string     
  • Lokasi sekolah. Example: Jakarta
tahun_lulus   string     
  • Tahun lulus dalam format tahun saja. Example: 2012
tingkat   string     
  • Tingkat pendidikan. Example: SMA
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Riwayat Pendidikan By ID

requires authentication

API untuk menampilkan detail riwayat pendidikan karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nama_sekolah": "SMA Negeri 1 Jakarta",
        "lokasi": "Jakarta",
        "tahun_lulus": "2012",
        "tingkat": "SMA"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pendidikan not found"
}
 

Request      

GET api/karyawan/riwayatpendidikan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat pendidikan. Example: 1

requires authentication

API untuk menampilkan daftar riwayat pendidikan karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/riwayatpendidikan/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpendidikan/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "nama_sekolah": "SMA Negeri 1 Jakarta",
            "lokasi": "Jakarta",
            "tahun_lulus": "2012",
            "tingkat": "SMA"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Riwayat Pendidikan

requires authentication

API untuk memperbarui data riwayat pendidikan karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/riwayatpendidikan/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"nama_sekolah\": \"SMA Negeri 1 Jakarta\",
    \"lokasi\": \"Jakarta\",
    \"tahun_lulus\": 2012,
    \"tingkat\": \"SMA\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpendidikan/1"
);

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

let body = {
    "id_karyawan": 1,
    "nama_sekolah": "SMA Negeri 1 Jakarta",
    "lokasi": "Jakarta",
    "tahun_lulus": 2012,
    "tingkat": "SMA"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan riwayat pendidikan updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pendidikan not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/riwayatpendidikan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat pendidikan yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
nama_sekolah   string     
  • Nama sekolah. Example: SMA Negeri 1 Jakarta
lokasi   string     
  • Lokasi sekolah. Example: Jakarta
tahun_lulus   integer     
  • Tahun lulus. Example: 2012
tingkat   string     
  • Tingkat pendidikan. Example: SMA

Delete Karyawan Riwayat Pendidikan

requires authentication

API untuk menghapus data riwayat pendidikan karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/riwayatpendidikan/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpendidikan/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Riwayat Pendidikan deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pendidikan not found"
}
 

Request      

DELETE api/karyawan/riwayatpendidikan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat pendidikan yang akan dihapus. Example: 1

Store Karyawan Keahlian

requires authentication

API untuk membuat data keahlian karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data keahlian:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/keahlian" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"keahlian\": \"Microsoft Excel\",
    \"keterangan\": \"Mahir menggunakan pivot table\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"keahlian\": \"Microsoft Excel\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/keahlian"
);

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

let body = {
    "id_karyawan": 1,
    "keahlian": "Microsoft Excel",
    "keterangan": "Mahir menggunakan pivot table",
    "data": [
        {
            "id_karyawan": 1,
            "keahlian": "Microsoft Excel"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Keahlian data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "keahlian": "Microsoft Excel",
        "keterangan": "Mahir menggunakan pivot table"
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Keahlian data",
    "data": [
        {
            "id": 1,
            "id_karyawan": 1
        },
        {
            "id": 2,
            "id_karyawan": 1
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/keahlian

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
keahlian   string     
  • Nama keahlian. Example: Microsoft Excel
keterangan   string     
  • Keterangan keahlian. Example: Mahir menggunakan pivot table
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Keahlian By ID

requires authentication

API untuk menampilkan detail data keahlian karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "keahlian": "Microsoft Excel",
        "keterangan": "Mahir menggunakan pivot table"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Keahlian not found"
}
 

Request      

GET api/karyawan/keahlian/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data keahlian. Example: 1

requires authentication

API untuk menampilkan daftar data keahlian karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/keahlian/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/keahlian/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "keahlian": "Microsoft Excel",
            "keterangan": "Mahir menggunakan pivot table"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Keahlian

requires authentication

API untuk memperbarui data keahlian karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/keahlian/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"keahlian\": \"Microsoft Excel\",
    \"keterangan\": \"Mahir menggunakan pivot table\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/keahlian/1"
);

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

let body = {
    "id_karyawan": 1,
    "keahlian": "Microsoft Excel",
    "keterangan": "Mahir menggunakan pivot table"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan keahlian updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Keahlian not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/keahlian/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data keahlian yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
keahlian   string     
  • Nama keahlian. Example: Microsoft Excel
keterangan   string  optional    

nullable - Keterangan keahlian. Example: Mahir menggunakan pivot table

Delete Karyawan Keahlian

requires authentication

API untuk menghapus data keahlian karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/keahlian/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/keahlian/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Keahlian deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Keahlian not found"
}
 

Request      

DELETE api/karyawan/keahlian/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data keahlian yang akan dihapus. Example: 1

Store Karyawan Ahliwaris

requires authentication

API untuk membuat data ahli waris karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data ahli waris:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/ahliwaris" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"id_karyawan_keluarga\": 1,
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"id_karyawan_keluarga\": 1
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/ahliwaris"
);

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

let body = {
    "id_karyawan": 1,
    "id_karyawan_keluarga": 1,
    "data": [
        {
            "id_karyawan": 1,
            "id_karyawan_keluarga": 1
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Ahliwaris data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "id_karyawan_keluarga": 1
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Ahliwaris data",
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "id_karyawan_keluarga": 1
        },
        {
            "id": 2,
            "id_karyawan": 1,
            "id_karyawan_keluarga": 2
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/ahliwaris

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
id_karyawan_keluarga   integer     
  • ID data keluarga karyawan. Example: 1
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Ahliwaris By ID

requires authentication

API untuk menampilkan detail data ahli waris karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nama_karyawan": "Budi Santoso",
        "id_karyawan_keluarga": 2,
        "hubungan": "anak",
        "nama_keluarga": "Andi Santoso"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Ahliwaris not found"
}
 

Request      

GET api/karyawan/ahliwaris/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data ahli waris. Example: 1

requires authentication

API untuk menampilkan daftar ahli waris karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/ahliwaris/search?id_karyawan=1&id_karyawan_keluarga=2" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/ahliwaris/search"
);

const params = {
    "id_karyawan": "1",
    "id_karyawan_keluarga": "2",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "nama_karyawan": "Budi Santoso",
            "id_karyawan_keluarga": 2,
            "hubungan": "anak",
            "nama_keluarga": "Andi Santoso"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Ahliwaris

requires authentication

API untuk memperbarui data ahli waris karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/ahliwaris/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"id_karyawan_keluarga\": 2
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/ahliwaris/1"
);

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

let body = {
    "id_karyawan": 1,
    "id_karyawan_keluarga": 2
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan ahliwaris updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "id_karyawan_keluarga": 2
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Ahliwaris not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/ahliwaris/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data ahli waris yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
id_karyawan_keluarga   integer     
  • ID data keluarga karyawan. Example: 2

Delete Karyawan Ahliwaris

requires authentication

API untuk menghapus data ahli waris karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/ahliwaris/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/ahliwaris/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Ahliwaris deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Ahliwaris not found"
}
 

Request      

DELETE api/karyawan/ahliwaris/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data ahli waris yang akan dihapus. Example: 1

Store Karyawan File

requires authentication

API untuk membuat data file karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data file karyawan:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/file" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"jenis\": \"ktp\",
    \"file\": \"ktp_budi.pdf\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"jenis\": \"ktp\",
            \"file\": \"ktp_budi.pdf\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/file"
);

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

let body = {
    "id_karyawan": 1,
    "jenis": "ktp",
    "file": "ktp_budi.pdf",
    "data": [
        {
            "id_karyawan": 1,
            "jenis": "ktp",
            "file": "ktp_budi.pdf"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan File data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "jenis": "ktp",
        "file": "ktp_budi.pdf"
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan File data",
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "jenis": "ktp",
            "file": "ktp_budi.pdf"
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/file

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
jenis   string     
  • Jenis file. Contoh nilai: ktp, foto, skck, ijazah, transkrip nilai, cv, surat lamaran, npwp, kk, id card, jamsostek, sim, bpjs, surat sehat, vaksin 1, vaksin 2, vaksin 3, SKBN. Example: ktp
file   string     
  • Nama file atau path file. Example: ktp_budi.pdf
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan File By ID

requires authentication

API untuk menampilkan detail file karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "jenis": "ktp",
        "file": "ktp_budi.pdf"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan File not found"
}
 

Request      

GET api/karyawan/file/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID file karyawan. Example: 1

requires authentication

API untuk menampilkan daftar file karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/file/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/file/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "jenis": "ktp",
            "file": "ktp_budi.pdf"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan File

requires authentication

API untuk memperbarui data file karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/file/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"jenis\": \"ktp\",
    \"file\": \"ktp_budi.pdf\",
    \"id_karyawan\": 1
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/file/1"
);

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

let body = {
    "jenis": "ktp",
    "file": "ktp_budi.pdf",
    "id_karyawan": 1
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan file updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan File not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/file/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID file karyawan yang akan diupdate. Example: 1

Body Parameters

jenis   string     
  • Jenis file. Example: ktp
file   string     
  • Nama file atau path file. Example: ktp_budi.pdf
id_karyawan   integer     
  • ID karyawan. Example: 1

Delete Karyawan File

requires authentication

API untuk menghapus data file karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/file/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/file/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan File deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan File not found"
}
 

Request      

DELETE api/karyawan/file/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID file karyawan yang akan dihapus. Example: 1

Store Karyawan Riwayat Pelatihan Sertifikasi

requires authentication

API untuk membuat data riwayat pelatihan atau sertifikasi karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data riwayat pelatihan/sertifikasi:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/riwayatpelatihansertifikasi" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"lembaga\": \"BNSP\",
    \"nama_kegiatan\": \"Sertifikasi Operator\",
    \"kategori\": \"pelatihan\",
    \"tahun\": \"2026\",
    \"file\": \"sertifikat_budi.pdf\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"lembaga\": \"BNSP\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpelatihansertifikasi"
);

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

let body = {
    "id_karyawan": 1,
    "lembaga": "BNSP",
    "nama_kegiatan": "Sertifikasi Operator",
    "kategori": "pelatihan",
    "tahun": "2026",
    "file": "sertifikat_budi.pdf",
    "data": [
        {
            "id_karyawan": 1,
            "lembaga": "BNSP"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Riwayat Pelatihan Sertifikasi data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "lembaga": "BNSP",
        "nama_kegiatan": "Sertifikasi Operator",
        "kategori": "sertifikasi",
        "tahun": "2026",
        "file": "sertifikat_budi.pdf"
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/riwayatpelatihansertifikasi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
lembaga   string     
  • Nama lembaga penyelenggara. Example: BNSP
nama_kegiatan   string     
  • Nama kegiatan. Example: Sertifikasi Operator
kategori   string     
  • Kategori kegiatan: pelatihan, sertifikasi, atau workshop. Example: pelatihan
tahun   string     
  • Tahun kegiatan dalam format tahun. Example: 2026
file   string     
  • Nama file atau path file. Example: sertifikat_budi.pdf
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Riwayat Pelatihan Sertifikasi By ID

requires authentication

API untuk menampilkan detail riwayat pelatihan/sertifikasi karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "lembaga": "BNSP",
        "nama_kegiatan": "Sertifikasi Operator",
        "kategori": "sertifikasi",
        "tahun": "2026",
        "file": "sertifikat_budi.pdf"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pelatihan Sertifikasi not found"
}
 

Request      

GET api/karyawan/riwayatpelatihansertifikasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data riwayat pelatihan/sertifikasi. Example: 1

requires authentication

API untuk menampilkan daftar riwayat pelatihan/sertifikasi karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/riwayatpelatihansertifikasi/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpelatihansertifikasi/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "lembaga": "BNSP",
            "nama_kegiatan": "Sertifikasi Operator",
            "kategori": "sertifikasi",
            "tahun": "2026",
            "file": "sertifikat_budi.pdf"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Riwayat Pelatihan Sertifikasi

requires authentication

API untuk memperbarui data riwayat pelatihan/sertifikasi karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/riwayatpelatihansertifikasi/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"lembaga\": \"BNSP\",
    \"nama_kegiatan\": \"Sertifikasi Operator\",
    \"kategori\": \"sertifikasi\",
    \"tahun\": \"2026\",
    \"file\": \"sertifikat_budi.pdf\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpelatihansertifikasi/1"
);

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

let body = {
    "id_karyawan": 1,
    "lembaga": "BNSP",
    "nama_kegiatan": "Sertifikasi Operator",
    "kategori": "sertifikasi",
    "tahun": "2026",
    "file": "sertifikat_budi.pdf"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan riwayat pelatihan sertifikasi updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pelatihan Sertifikasi not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/riwayatpelatihansertifikasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data riwayat pelatihan/sertifikasi yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
lembaga   string     
  • Nama lembaga penyelenggara. Example: BNSP
nama_kegiatan   string     
  • Nama kegiatan. Example: Sertifikasi Operator
kategori   string     
  • Kategori: pelatihan, sertifikasi, atau workshop. Example: sertifikasi
tahun   string     
  • Tahun kegiatan. Example: 2026
file   string     
  • Nama file atau path file. Example: sertifikat_budi.pdf

Delete Karyawan Riwayat Pelatihan Sertifikasi

requires authentication

API untuk menghapus data riwayat pelatihan/sertifikasi karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/riwayatpelatihansertifikasi/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatpelatihansertifikasi/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Riwayat Pelatihan Sertifikasi deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Pelatihan Sertifikasi not found"
}
 

Request      

DELETE api/karyawan/riwayatpelatihansertifikasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data riwayat pelatihan/sertifikasi yang akan dihapus. Example: 1

Store Karyawan Status

requires authentication

API untuk membuat data status karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data status karyawan:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"tanggal\": \"2026-04-09\",
    \"keterangan\": \"Promosi jabatan\",
    \"status\": \"Aktif\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"tanggal\": \"2026-04-09\",
            \"status\": \"Aktif\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/status"
);

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

let body = {
    "id_karyawan": 1,
    "tanggal": "2026-04-09",
    "keterangan": "Promosi jabatan",
    "status": "Aktif",
    "data": [
        {
            "id_karyawan": 1,
            "tanggal": "2026-04-09",
            "status": "Aktif"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Status data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "tanggal": "2026-04-09",
        "keterangan": "Promosi jabatan",
        "status": "Aktif"
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
tanggal   date     
  • Tanggal status. Example: 2026-04-09
keterangan   string     
  • Keterangan status. Example: Promosi jabatan
status   string     
  • Nama status. Example: Aktif
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Status By ID

requires authentication

API untuk menampilkan detail status karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "tanggal": "2026-04-09",
        "keterangan": "Promosi jabatan",
        "status": "Aktif"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Status not found"
}
 

Request      

GET api/karyawan/status/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data status karyawan. Example: 1

requires authentication

API untuk menampilkan daftar status karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/status/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/status/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "tanggal": "2026-04-09",
            "keterangan": "Promosi jabatan",
            "status": "Aktif"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Status

requires authentication

API untuk memperbarui data status karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/status/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"tanggal\": \"2026-04-09\",
    \"keterangan\": \"Promosi jabatan\",
    \"status\": \"Aktif\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/status/1"
);

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

let body = {
    "id_karyawan": 1,
    "tanggal": "2026-04-09",
    "keterangan": "Promosi jabatan",
    "status": "Aktif"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan status updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Status not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/status/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data status karyawan yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
tanggal   date     
  • Tanggal status. Example: 2026-04-09
keterangan   string     
  • Keterangan status. Example: Promosi jabatan
status   string     
  • Nama status. Example: Aktif

Delete Karyawan Status

requires authentication

API untuk menghapus data status karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/status/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/status/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Status deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Status not found"
}
 

Request      

DELETE api/karyawan/status/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data status karyawan yang akan dihapus. Example: 1

Store Karyawan Kontrak

requires authentication

API untuk membuat data kontrak karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data kontrak karyawan:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/kontrak" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"nomor_kontrak\": \"KON\\/001\\/2026\",
    \"tanggal_mulai\": \"2026-04-01\",
    \"tanggal_akhir\": \"2027-04-01\",
    \"lama_kontrak\": 12,
    \"status\": \"aktif\",
    \"penjamin\": \"Budi Santoso\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"nomor_kontrak\": \"KON\\/001\\/2026\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/kontrak"
);

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

let body = {
    "id_karyawan": 1,
    "nomor_kontrak": "KON\/001\/2026",
    "tanggal_mulai": "2026-04-01",
    "tanggal_akhir": "2027-04-01",
    "lama_kontrak": 12,
    "status": "aktif",
    "penjamin": "Budi Santoso",
    "data": [
        {
            "id_karyawan": 1,
            "nomor_kontrak": "KON\/001\/2026"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Kontrak data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nomor_kontrak": "KON/001/2026",
        "status": "aktif"
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/kontrak

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
nomor_kontrak   string     
  • Nomor kontrak. Example: KON/001/2026
tanggal_mulai   date     
  • Tanggal mulai kontrak. Example: 2026-04-01
tanggal_akhir   date  optional    

nullable - Tanggal akhir kontrak. Example: 2027-04-01

lama_kontrak   integer  optional    

nullable - Lama kontrak dalam bulan atau tahun sesuai implementasi. Example: 12

status   string     
  • Status kontrak. Example: aktif
penjamin   string  optional    

nullable - Nama penjamin. Example: Budi Santoso

data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Kontrak By ID

requires authentication

API untuk menampilkan detail kontrak karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nomor_kontrak": "KON/001/2026",
        "tanggal_mulai": "2026-04-01",
        "tanggal_akhir": "2027-04-01",
        "lama_kontrak": 12,
        "status": "aktif",
        "penjamin": "Budi Santoso"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Kontrak not found"
}
 

Request      

GET api/karyawan/kontrak/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID kontrak karyawan. Example: 1

requires authentication

API untuk menampilkan daftar kontrak karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/kontrak/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/kontrak/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "nomor_kontrak": "KON/001/2026",
            "tanggal_mulai": "2026-04-01",
            "tanggal_akhir": "2027-04-01",
            "lama_kontrak": 12,
            "status": "aktif",
            "penjamin": "Budi Santoso"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Kontrak

requires authentication

API untuk memperbarui data kontrak karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/kontrak/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"tanggal_mulai\": \"2026-04-01\",
    \"tanggal_akhir\": \"2027-04-01\",
    \"lama_kontrak\": 12,
    \"status\": \"aktif\",
    \"penjamin\": \"Budi Santoso\",
    \"pakta_integritas_pegawai\": false,
    \"peraturan_ketentuan_perusahaan\": false,
    \"surat_perjanjian_kerja\": true,
    \"nomor_kontrak\": \"KON\\/001\\/2026\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/kontrak/1"
);

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

let body = {
    "id_karyawan": 1,
    "tanggal_mulai": "2026-04-01",
    "tanggal_akhir": "2027-04-01",
    "lama_kontrak": 12,
    "status": "aktif",
    "penjamin": "Budi Santoso",
    "pakta_integritas_pegawai": false,
    "peraturan_ketentuan_perusahaan": false,
    "surat_perjanjian_kerja": true,
    "nomor_kontrak": "KON\/001\/2026"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan kontrak updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Kontrak not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/kontrak/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID kontrak karyawan yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
tanggal_mulai   date     
  • Tanggal mulai kontrak. Example: 2026-04-01
tanggal_akhir   date  optional    

nullable - Tanggal akhir kontrak. Example: 2027-04-01

lama_kontrak   integer  optional    

nullable - Lama kontrak. Example: 12

status   string     
  • Status kontrak. Example: aktif
penjamin   string  optional    

nullable - Nama penjamin. Example: Budi Santoso

pakta_integritas_pegawai   boolean  optional    

Example: false

peraturan_ketentuan_perusahaan   boolean  optional    

Example: false

surat_perjanjian_kerja   boolean  optional    

Example: true

nomor_kontrak   string     
  • Nomor kontrak. Example: KON/001/2026

Delete Karyawan Kontrak

requires authentication

API untuk menghapus data kontrak karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/kontrak/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/kontrak/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Kontrak deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Kontrak not found"
}
 

Request      

DELETE api/karyawan/kontrak/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID kontrak karyawan yang akan dihapus. Example: 1

Store Karyawan Riwayat Organisasi

requires authentication

API untuk membuat data riwayat organisasi karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data riwayat organisasi:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/riwayatorganisasi" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"nama_organisasi\": \"Karang Taruna\",
    \"jabatan\": \"Ketua\",
    \"tahun_mulai\": \"2020\",
    \"tahun_akhir\": \"2023\",
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"nama_organisasi\": \"Karang Taruna\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatorganisasi"
);

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

let body = {
    "id_karyawan": 1,
    "nama_organisasi": "Karang Taruna",
    "jabatan": "Ketua",
    "tahun_mulai": "2020",
    "tahun_akhir": "2023",
    "data": [
        {
            "id_karyawan": 1,
            "nama_organisasi": "Karang Taruna"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Karyawan Riwayat Organisasi data",
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nama_organisasi": "Karang Taruna",
        "jabatan": "Ketua"
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/karyawan/riwayatorganisasi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
nama_organisasi   string     
  • Nama organisasi. Example: Karang Taruna
jabatan   string     
  • Jabatan di organisasi. Example: Ketua
tahun_mulai   date     
  • Tanggal mulai menjabat/bergabung. Example: 2020
tahun_akhir   date     
  • Tanggal akhir menjabat/bergabung. Example: 2023
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Get Karyawan Riwayat Organisasi By ID

requires authentication

API untuk menampilkan detail riwayat organisasi karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "id_karyawan": 1,
        "nama_organisasi": "Karang Taruna",
        "jabatan": "Ketua",
        "tahun_mulai": "2020-01-01",
        "tahun_akhir": "2023-12-31"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Organisasi not found"
}
 

Request      

GET api/karyawan/riwayatorganisasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat organisasi. Example: 1

requires authentication

API untuk menampilkan daftar riwayat organisasi karyawan dengan pagination.

Endpoint ini mendukung filter berdasarkan id_karyawan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/karyawan/riwayatorganisasi/search?id_karyawan=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatorganisasi/search"
);

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "id_karyawan": 1,
            "nama_organisasi": "Karang Taruna",
            "jabatan": "Ketua",
            "tahun_mulai": "2020-01-01",
            "tahun_akhir": "2023-12-31"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Update Karyawan Riwayat Organisasi

requires authentication

API untuk memperbarui data riwayat organisasi karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/karyawan/riwayatorganisasi/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"nama_organisasi\": \"Karang Taruna\",
    \"jabatan\": \"Ketua\",
    \"tahun_mulai\": \"2020-01-01\",
    \"tahun_akhir\": \"2023-12-31\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatorganisasi/1"
);

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

let body = {
    "id_karyawan": 1,
    "nama_organisasi": "Karang Taruna",
    "jabatan": "Ketua",
    "tahun_mulai": "2020-01-01",
    "tahun_akhir": "2023-12-31"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan riwayat organisasi updated successfully",
    "data": {
        "id": 1,
        "id_karyawan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Organisasi not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/karyawan/riwayatorganisasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat organisasi yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
nama_organisasi   string     
  • Nama organisasi. Example: Karang Taruna
jabatan   string     
  • Jabatan di organisasi. Example: Ketua
tahun_mulai   date     
  • Tanggal mulai. Example: 2020-01-01
tahun_akhir   date     
  • Tanggal akhir. Example: 2023-12-31

Delete Karyawan Riwayat Organisasi

requires authentication

API untuk menghapus data riwayat organisasi karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/karyawan/riwayatorganisasi/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/karyawan/riwayatorganisasi/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Karyawan Riwayat Organisasi deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Karyawan Riwayat Organisasi not found"
}
 

Request      

DELETE api/karyawan/riwayatorganisasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID riwayat organisasi yang akan dihapus. Example: 1

Klasifikasi Jabatan

Get List Klasifikasi Jabatan

requires authentication

Mengambil daftar data klasifikasi per jabatan dengan fitur filter, sorting, dan pagination.

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/list-klasifikasi-pelamar" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        {
            \"field\": \"jabatan_id\",
            \"operator\": \"eq\",
            \"value\": 1
        }
    ],
    \"sorts\": [
        {
            \"field\": \"id\",
            \"direction\": \"desc\"
        }
    ],
    \"dateStart\": \"2026-04-01\",
    \"dateEnd\": \"2026-04-30\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/list-klasifikasi-pelamar"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        {
            "field": "jabatan_id",
            "operator": "eq",
            "value": 1
        }
    ],
    "sorts": [
        {
            "field": "id",
            "direction": "desc"
        }
    ],
    "dateStart": "2026-04-01",
    "dateEnd": "2026-04-30"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 50,
        "lastPage": 5
    },
    "data": [
        {
            "id": 1,
            "jabatan_id": 1,
            "usia": 30,
            "min_pendidikan": "S1",
            "jurusan": "Teknik Informatika",
            "pengalaman": "2 tahun",
            "min_wpt": 80,
            "hitungan": 90,
            "hitungan_supir": null,
            "disc": "D",
            "papikostik": "Baik",
            "kraepelin": "Cukup",
            "wartegg": "Baik",
            "dam": "Stabil"
        }
    ]
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error"
}
 

Request      

GET api/list-klasifikasi-pelamar

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

optional Nomor halaman. Default: 1. Example: 1

pageSize   integer  optional    

optional Jumlah data per halaman. Default: 10. Example: 10

filters   string[]  optional    

optional Filter data.

field   string  optional    

Field yang dapat difilter: (id, jabatan_id, usia, min_pendidikan, jurusan, pengalaman, min_wpt) Example: architecto

operator   string  optional    

Operator filter: (contains, eq, neq, gt, lt) Example: architecto

value   mixed  optional    

Nilai filter Example: architecto

sorts   string[]  optional    

optional Sorting data.

field   string  optional    

Field untuk sorting: (id, jabatan_id, usia, min_wpt) Example: architecto

direction   string  optional    

Arah sorting: (asc, desc) Example: architecto

dateStart   string  optional    

optional Filter tanggal mulai (created_at, format: YYYY-MM-DD). Example: 2026-04-01

dateEnd   string  optional    

optional Filter tanggal akhir (created_at, format: YYYY-MM-DD). Example: 2026-04-30

Get Klasifikasi Jabatan by Jabatan ID

requires authentication

Mengambil data klasifikasi jabatan berdasarkan jabatan_id

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "data": [
        {
            "id": 1,
            "jabatan_id": 1,
            "usia": 30,
            "min_pendidikan": "S1",
            "jurusan": "Teknik Informatika",
            "pengalaman": "2 tahun",
            "min_wpt": 80,
            "hitungan": 90,
            "hitungan_supir": null,
            "disc": "D",
            "papikostik": "Baik",
            "kraepelin": "Cukup",
            "wartegg": "Baik",
            "dam": "Stabil"
        }
    ]
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

GET api/klasifikasi-jabatan/{jabatan_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jabatan_id   integer     

ID Jabatan. Example: 1

Create Klasifikasi Jabatan

requires authentication

Menambahkan data klasifikasi per jabatan baru.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/klasifikasi-jabatan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"jabatan_id\": 1,
    \"usia\": 30,
    \"min_pendidikan\": \"S1\",
    \"jurusan\": \"Teknik Informatika\",
    \"pengalaman\": \"2 tahun\",
    \"min_wpt\": 80,
    \"hitungan\": 90,
    \"hitungan_supir\": 85,
    \"disc\": \"D\",
    \"papikostik\": \"Baik\",
    \"kraepelin\": \"Cukup\",
    \"wartegg\": \"Baik\",
    \"dam\": \"Stabil\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/klasifikasi-jabatan"
);

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

let body = {
    "jabatan_id": 1,
    "usia": 30,
    "min_pendidikan": "S1",
    "jurusan": "Teknik Informatika",
    "pengalaman": "2 tahun",
    "min_wpt": 80,
    "hitungan": 90,
    "hitungan_supir": 85,
    "disc": "D",
    "papikostik": "Baik",
    "kraepelin": "Cukup",
    "wartegg": "Baik",
    "dam": "Stabil"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Data berhasil disimpan",
    "data": {
        "id": 1,
        "jabatan_id": 1,
        "usia": 30,
        "min_pendidikan": "S1",
        "jurusan": "Teknik Informatika",
        "pengalaman": "2 tahun",
        "min_wpt": 80,
        "hitungan": 90,
        "hitungan_supir": 85,
        "disc": "D",
        "papikostik": "Baik",
        "kraepelin": "Cukup",
        "wartegg": "Baik",
        "dam": "Stabil",
        "created_at": "2026-04-17 10:00:00"
    }
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {}
}
 

Request      

POST api/klasifikasi-jabatan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

jabatan_id   integer     

ID Jabatan. Example: 1

usia   integer     

Usia maksimal/minimal. Example: 30

min_pendidikan   string     

Pendidikan minimal. Example: S1

jurusan   string     

Jurusan. Example: Teknik Informatika

pengalaman   string     

Pengalaman kerja. Example: 2 tahun

min_wpt   integer     

Nilai minimum WPT. Example: 80

hitungan   integer  optional    

optional Nilai hitungan. Example: 90

hitungan_supir   integer  optional    

optional Nilai hitungan supir. Example: 85

disc   string  optional    

optional DISC. Example: D

papikostik   string  optional    

optional Papikostik. Example: Baik

kraepelin   string  optional    

optional Kraepelin. Example: Cukup

wartegg   string  optional    

optional Wartegg. Example: Baik

dam   string  optional    

optional DAM. Example: Stabil

Letter Management

Create New Letter

requires authentication

API untuk membuat surat baru berdasarkan type surat.

Type yang didukung:

Base input untuk semua type:

Input tambahan per type:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/letters/SPK" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sender_id\": 1,
    \"recipient_id\": 2,
    \"approver_id\": 3,
    \"subject\": \"Surat Peringatan Pertama\",
    \"description\": \"Pelanggaran disiplin kerja\",
    \"level\": \"SP1\",
    \"penalty_amount\": \"100000\",
    \"reason\": \"Pelanggaran disiplin kerja\",
    \"start_date\": \"2026-04-01\",
    \"end_date\": \"2026-04-30\",
    \"job_title\": \"Staff Lapangan\",
    \"job_description\": \"Melaksanakan inspeksi lapangan\",
    \"work_location\": \"Jakarta\",
    \"effective_date\": \"2026-04-15\",
    \"new_position\": \"Supervisor Operasional\",
    \"new_department\": \"Operasional\",
    \"salary_change\": 500000
}"
const url = new URL(
    "http://10.10.1.109:8000/api/letters/SPK"
);

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

let body = {
    "sender_id": 1,
    "recipient_id": 2,
    "approver_id": 3,
    "subject": "Surat Peringatan Pertama",
    "description": "Pelanggaran disiplin kerja",
    "level": "SP1",
    "penalty_amount": "100000",
    "reason": "Pelanggaran disiplin kerja",
    "start_date": "2026-04-01",
    "end_date": "2026-04-30",
    "job_title": "Staff Lapangan",
    "job_description": "Melaksanakan inspeksi lapangan",
    "work_location": "Jakarta",
    "effective_date": "2026-04-15",
    "new_position": "Supervisor Operasional",
    "new_department": "Operasional",
    "salary_change": 500000
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Letter",
    "data": {
        "id": 1,
        "number": "0001/SP/HRD/IV/2026",
        "type": "SP",
        "subject": "Surat Peringatan Pertama",
        "description": "Pelanggaran disiplin kerja",
        "status": "draft",
        "created_at": "2026-04-01T10:00:00.000000Z",
        "updated_at": "2026-04-01T10:00:00.000000Z"
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "sender_id": [
            "The sender id field is required."
        ]
    }
}
 

Request      

POST api/letters/{type}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

type   string     
  • Tipe surat dapat diisi dengan SPK, SP, SP, SPT, Mutasi, Promosi, Demosi. Example: SPK

Body Parameters

sender_id   integer     
  • ID pengirim surat. Example: 1
recipient_id   integer     
  • ID penerima surat. Example: 2
approver_id   integer     
  • ID menyetujui surat. Example: 3
subject   string  optional    
  • nullable Subjek surat. Example: Surat Peringatan Pertama
description   string  optional    
  • nullable Deskripsi surat. Example: Pelanggaran disiplin kerja
level   string  optional    
  • optional Level surat dapat diisi dengan SP1, SP2, atau SP3. Example: SP1
penalty_amount   numeric  optional    
  • optional Besaran penalti untuk SP dan ST. Example: 100000
reason   string  optional    
  • optional Alasan surat untuk SP, ST, dan Mutasi/Promosi/Demosi. Example: Pelanggaran disiplin kerja
start_date   date  optional    
  • optional Tanggal mulai untuk SPK. Example: 2026-04-01
end_date   date  optional    
  • optional Tanggal selesai untuk SPK. Example: 2026-04-30
job_title   string  optional    
  • optional Jabatan untuk SPK. Example: Staff Lapangan
job_description   string  optional    
  • optional Deskripsi pekerjaan untuk SPK. Example: Melaksanakan inspeksi lapangan
work_location   string  optional    
  • optional Lokasi kerja untuk SPK. Example: Jakarta
effective_date   date  optional    
  • optional Tanggal efektif untuk Mutasi/Promosi/Demosi. Example: 2026-04-15
new_position   string  optional    
  • optional Jabatan baru untuk Mutasi/Promosi/Demosi. Example: Supervisor Operasional
new_department   string  optional    
  • optional Departemen baru untuk Mutasi/Promosi/Demosi. Example: Operasional
salary_change   number  optional    
  • optional Perubahan gaji untuk Mutasi/Promosi/Demosi. Example: 500000

List Letters

requires authentication

API untuk mengambil daftar surat berdasarkan type.

Type yang didukung:

Response akan menyesuaikan field masing-masing type.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "type": "SP",
    "data": [
        {
            "id": 1,
            "number": "0001/SP/HRD/IV/2026",
            "type": "SP",
            "subject": "Surat Peringatan Pertama",
            "status": "draft",
            "level": "SP1",
            "penaltyAmount": 100000,
            "reason": "Terlambat masuk kerja",
            "senderName": "Andi",
            "recipientName": "Budi",
            "approverName": "Siti"
        }
    ]
}
 

Example response (404):


{
    "status": false,
    "message": "Letter type not found."
}
 

Request      

GET api/letters/{type}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

type   string     
  • Tipe surat dapat diisi dengan SPK, SP, SP, SPT, Mutasi, Promosi, Demosi. Example: SPK

Show Letter by ID

requires authentication

API untuk mengambil detail surat berdasarkan type dan id.

Type yang didukung:

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/letters/SPK/32" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/letters/SPK/32"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "number": "0001/SPK/HRD/IV/2026",
        "type": "SPK",
        "subject": "Surat Perintah Kerja",
        "description": "Penugasan kerja lapangan",
        "status": "draft",
        "startDate": "2026-04-01",
        "endDate": "2026-04-30",
        "senderId": 1,
        "senderName": "Andi",
        "recipientId": 2,
        "recipientName": "Budi",
        "approverId": 3,
        "approverName": "Siti"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Letter not found"
}
 

Request      

GET api/letters/{type}/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

type   string     
  • Tipe surat dapat diisi dengan SPK, SP, SP, SPT, Mutasi, Promosi, Demosi. Example: SPK
id   integer     
  • ID surat. Example: 32

Update Letter

requires authentication

API untuk memperbarui data surat berdasarkan type dan id.

Type yang didukung:

Base input untuk update:

Input tambahan per type mengikuti aturan create letter.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/letters/SPK/32" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sender_id\": 3,
    \"recipient_id\": 4,
    \"approver_id\": 5,
    \"subject\": \"Surat Perintah Kerja Revisi\",
    \"description\": \"Revisi penugasan kerja lapangan\",
    \"level\": \"SP1\",
    \"penalty_amount\": \"150000\",
    \"reason\": \"Pelanggaran ulang\",
    \"start_date\": \"2026-04-01\",
    \"end_date\": \"2026-04-30\",
    \"job_title\": \"Supervisor Lapangan\",
    \"job_description\": \"Mengawasi pekerjaan lapangan\",
    \"work_location\": \"Jakarta\",
    \"effective_date\": \"2026-04-15\",
    \"new_position\": \"Manager Operasional\",
    \"new_department\": \"Operasional\",
    \"salary_change\": 500000
}"
const url = new URL(
    "http://10.10.1.109:8000/api/letters/SPK/32"
);

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

let body = {
    "sender_id": 3,
    "recipient_id": 4,
    "approver_id": 5,
    "subject": "Surat Perintah Kerja Revisi",
    "description": "Revisi penugasan kerja lapangan",
    "level": "SP1",
    "penalty_amount": "150000",
    "reason": "Pelanggaran ulang",
    "start_date": "2026-04-01",
    "end_date": "2026-04-30",
    "job_title": "Supervisor Lapangan",
    "job_description": "Mengawasi pekerjaan lapangan",
    "work_location": "Jakarta",
    "effective_date": "2026-04-15",
    "new_position": "Manager Operasional",
    "new_department": "Operasional",
    "salary_change": 500000
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Letter updated successfully",
    "data": {
        "id": 1,
        "number": "0001/SPK/HRD/IV/2026",
        "type": "SPK",
        "subject": "Surat Perintah Kerja Revisi",
        "status": "draft"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Letter not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "start_date": [
            "The start date field is required."
        ]
    }
}
 

Request      

PUT api/letters/{type}/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

type   string     
  • Tipe surat dapat diisi dengan SPK, SP, SP, SPT, Mutasi, Promosi, Demosi. Example: SPK
id   integer     
  • ID surat. Example: 32

Body Parameters

sender_id   integer     
  • ID pengirim surat. Example: 3
recipient_id   integer     
  • ID penerima surat. Example: 4
approver_id   integer     
  • ID menyetujui surat. Example: 5
subject   string  optional    
  • nullable Subjek surat. Example: Surat Perintah Kerja Revisi
description   string  optional    
  • nullable Deskripsi surat. Example: Revisi penugasan kerja lapangan
level   string  optional    
  • optional Level surat untuk SP dan ST dapat diisi dengan SP1, SP2, atau SP3. Example: SP1
penalty_amount   numeric  optional    
  • optional Besaran penalti untuk SP dan ST. Example: 150000
reason   string  optional    
  • optional Alasan surat untuk SP, ST, dan Mutasi/Promosi/Demosi. Example: Pelanggaran ulang
start_date   date  optional    
  • optional Tanggal mulai untuk SPK. Example: 2026-04-01
end_date   date  optional    
  • optional Tanggal selesai untuk SPK. Example: 2026-04-30
job_title   string  optional    
  • optional Jabatan untuk SPK. Example: Supervisor Lapangan
job_description   string  optional    
  • optional Deskripsi pekerjaan untuk SPK. Example: Mengawasi pekerjaan lapangan
work_location   string  optional    
  • optional Lokasi kerja untuk SPK. Example: Jakarta
effective_date   date  optional    
  • optional Tanggal efektif untuk Mutasi/Promosi/Demosi. Example: 2026-04-15
new_position   string  optional    
  • optional Jabatan baru untuk Mutasi/Promosi/Demosi. Example: Manager Operasional
new_department   string  optional    
  • optional Departemen baru untuk Mutasi/Promosi/Demosi. Example: Operasional
salary_change   number  optional    
  • optional Perubahan gaji untuk Mutasi/Promosi/Demosi. Example: 500000

Update Letter

requires authentication

API untuk memperbarui data surat berdasarkan type dan id.

Type yang didukung:

Base input untuk update:

Input tambahan per type mengikuti aturan create letter.

Example request:
curl --request PATCH \
    "http://10.10.1.109:8000/api/letters/SPK/32" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sender_id\": 3,
    \"recipient_id\": 4,
    \"approver_id\": 5,
    \"subject\": \"Surat Perintah Kerja Revisi\",
    \"description\": \"Revisi penugasan kerja lapangan\",
    \"level\": \"SP1\",
    \"penalty_amount\": \"150000\",
    \"reason\": \"Pelanggaran ulang\",
    \"start_date\": \"2026-04-01\",
    \"end_date\": \"2026-04-30\",
    \"job_title\": \"Supervisor Lapangan\",
    \"job_description\": \"Mengawasi pekerjaan lapangan\",
    \"work_location\": \"Jakarta\",
    \"effective_date\": \"2026-04-15\",
    \"new_position\": \"Manager Operasional\",
    \"new_department\": \"Operasional\",
    \"salary_change\": 500000
}"
const url = new URL(
    "http://10.10.1.109:8000/api/letters/SPK/32"
);

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

let body = {
    "sender_id": 3,
    "recipient_id": 4,
    "approver_id": 5,
    "subject": "Surat Perintah Kerja Revisi",
    "description": "Revisi penugasan kerja lapangan",
    "level": "SP1",
    "penalty_amount": "150000",
    "reason": "Pelanggaran ulang",
    "start_date": "2026-04-01",
    "end_date": "2026-04-30",
    "job_title": "Supervisor Lapangan",
    "job_description": "Mengawasi pekerjaan lapangan",
    "work_location": "Jakarta",
    "effective_date": "2026-04-15",
    "new_position": "Manager Operasional",
    "new_department": "Operasional",
    "salary_change": 500000
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Letter updated successfully",
    "data": {
        "id": 1,
        "number": "0001/SPK/HRD/IV/2026",
        "type": "SPK",
        "subject": "Surat Perintah Kerja Revisi",
        "status": "draft"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Letter not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "start_date": [
            "The start date field is required."
        ]
    }
}
 

Request      

PATCH api/letters/{type}/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

type   string     
  • Tipe surat dapat diisi dengan SPK, SP, SP, SPT, Mutasi, Promosi, Demosi. Example: SPK
id   integer     
  • ID surat. Example: 32

Body Parameters

sender_id   integer     
  • ID pengirim surat. Example: 3
recipient_id   integer     
  • ID penerima surat. Example: 4
approver_id   integer     
  • ID menyetujui surat. Example: 5
subject   string  optional    
  • nullable Subjek surat. Example: Surat Perintah Kerja Revisi
description   string  optional    
  • nullable Deskripsi surat. Example: Revisi penugasan kerja lapangan
level   string  optional    
  • optional Level surat untuk SP dan ST dapat diisi dengan SP1, SP2, atau SP3. Example: SP1
penalty_amount   numeric  optional    
  • optional Besaran penalti untuk SP dan ST. Example: 150000
reason   string  optional    
  • optional Alasan surat untuk SP, ST, dan Mutasi/Promosi/Demosi. Example: Pelanggaran ulang
start_date   date  optional    
  • optional Tanggal mulai untuk SPK. Example: 2026-04-01
end_date   date  optional    
  • optional Tanggal selesai untuk SPK. Example: 2026-04-30
job_title   string  optional    
  • optional Jabatan untuk SPK. Example: Supervisor Lapangan
job_description   string  optional    
  • optional Deskripsi pekerjaan untuk SPK. Example: Mengawasi pekerjaan lapangan
work_location   string  optional    
  • optional Lokasi kerja untuk SPK. Example: Jakarta
effective_date   date  optional    
  • optional Tanggal efektif untuk Mutasi/Promosi/Demosi. Example: 2026-04-15
new_position   string  optional    
  • optional Jabatan baru untuk Mutasi/Promosi/Demosi. Example: Manager Operasional
new_department   string  optional    
  • optional Departemen baru untuk Mutasi/Promosi/Demosi. Example: Operasional
salary_change   number  optional    
  • optional Perubahan gaji untuk Mutasi/Promosi/Demosi. Example: 500000

Delete Letter

requires authentication

API untuk menghapus surat berdasarkan type dan id.

Type yang didukung:

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/letters/SPK/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/letters/SPK/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Letter deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Letter not found"
}
 

Request      

DELETE api/letters/{type}/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

type   string     
  • Tipe surat dapat diisi dengan SPK, SP, SP, SPT, Mutasi, Promosi, Demosi. Example: SPK
id   integer     
  • ID surat. Example: 1

Approval Letter

requires authentication

API untuk mengubah status approval surat menjadi pending, approved, atau rejected.

Status yang didukung:

Jika status approved, maka:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/letters/SPK/1/approval" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"action\": \"approved\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/letters/SPK/1/approval"
);

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

let body = {
    "action": "approved"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "SPK letter is accepted",
    "data": {
        "id": 1,
        "type": "SPK",
        "status": "approved",
        "approvedAt": "2026-04-01T10:00:00.000000Z"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Letter not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "action": [
            "The action field is required."
        ]
    }
}
 

Request      

POST api/letters/{type}/{id}/approval

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

type   string     
  • Tipe surat dapat diisi dengan SPK, SP, SP, SPT, Mutasi, Promosi, Demosi. Example: SPK
id   integer     
  • ID surat. Example: 1

Body Parameters

action   string     
  • Status dapat diisi dengan approved, rejected, atau pending. Example: approved

Lokasi Management

Store Lokasi Absensi

requires authentication

API untuk membuat data lokasi absensi baru.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/absensi" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_perusahaan\": 1,
    \"nama_lokasi\": \"Kantor Pusat\",
    \"alamat\": \"Jl. Merdeka No. 10\",
    \"latitude\": \"-6.200000\",
    \"longitude\": \"106.816666\",
    \"kode_lokasi\": \"LOC001\",
    \"akun_lkpm\": \"LKPM001\",
    \"kota\": \"Jakarta\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/absensi"
);

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

let body = {
    "id_perusahaan": 1,
    "nama_lokasi": "Kantor Pusat",
    "alamat": "Jl. Merdeka No. 10",
    "latitude": "-6.200000",
    "longitude": "106.816666",
    "kode_lokasi": "LOC001",
    "akun_lkpm": "LKPM001",
    "kota": "Jakarta"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "data": {
        "id": 1,
        "id_perusahaan": 1,
        "nama_lokasi": "Kantor Pusat",
        "alamat": "Jl. Merdeka No. 10",
        "latitude": "-6.200000",
        "longitude": "106.816666",
        "kode_lokasi": "LOC001",
        "akun_lkpm": "LKPM001",
        "kota": "Jakarta"
    }
}
 

Example response (422):


{
    "status": false,
    "message": {
        "id_perusahaan": [
            "The id perusahaan field is required."
        ]
    }
}
 

Request      

POST api/absensi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_perusahaan   integer     
  • ID perusahaan. Example: 1
nama_lokasi   string     
  • Nama lokasi absensi. Example: Kantor Pusat
alamat   string     
  • Alamat lokasi absensi. Example: Jl. Merdeka No. 10
latitude   string     
  • Latitude lokasi. Example: -6.200000
longitude   string     
  • Longitude lokasi. Example: 106.816666
kode_lokasi   string     
  • Kode lokasi absensi. Example: LOC001
akun_lkpm   string     
  • Akun LKPM. Example: LKPM001
kota   string     
  • Nama kota. Example: Jakarta

List Lokasi Absensi

requires authentication

API untuk menampilkan daftar lokasi absensi dengan pagination.

Endpoint ini menampilkan data lokasi absensi beserta relasi perusahaan.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "nama_lokasi": "Kantor Pusat",
            "alamat": "Jl. Merdeka No. 10",
            "latitude": "-6.200000",
            "longitude": "106.816666",
            "kode_lokasi": "LOC001",
            "akun_lkpm": "LKPM001",
            "kota": "Jakarta"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1
    }
}
 

Request      

GET api/absensi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get Lokasi Absensi By ID

requires authentication

API untuk menampilkan detail lokasi absensi berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "nama_lokasi": "Kantor Pusat",
        "alamat": "Jl. Merdeka No. 10",
        "latitude": "-6.200000",
        "longitude": "106.816666",
        "kode_lokasi": "LOC001",
        "akun_lkpm": "LKPM001",
        "kota": "Jakarta"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Lokasi absensi not found"
}
 

Request      

GET api/absensi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID lokasi absensi. Example: 1

Update Lokasi Absensi

requires authentication

API untuk memperbarui data lokasi absensi berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/absensi/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_perusahaan\": 1,
    \"nama_lokasi\": \"Kantor Pusat\",
    \"alamat\": \"Jl. Merdeka No. 10\",
    \"latitude\": \"-6.200000\",
    \"longitude\": \"106.816666\",
    \"kode_lokasi\": \"LOC001\",
    \"akun_lkpm\": \"LKPM001\",
    \"kota\": \"Jakarta\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/absensi/1"
);

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

let body = {
    "id_perusahaan": 1,
    "nama_lokasi": "Kantor Pusat",
    "alamat": "Jl. Merdeka No. 10",
    "latitude": "-6.200000",
    "longitude": "106.816666",
    "kode_lokasi": "LOC001",
    "akun_lkpm": "LKPM001",
    "kota": "Jakarta"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Lokasi absensi updated successfully",
    "data": {
        "id": 1,
        "id_perusahaan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Lokasi absensi not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_perusahaan": [
            "The id perusahaan field is required."
        ]
    }
}
 

Request      

PUT api/absensi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID lokasi absensi yang akan diupdate. Example: 1

Body Parameters

id_perusahaan   integer     
  • ID perusahaan. Example: 1
nama_lokasi   string     
  • Nama lokasi absensi. Example: Kantor Pusat
alamat   string     
  • Alamat lokasi absensi. Example: Jl. Merdeka No. 10
latitude   string     
  • Latitude lokasi. Example: -6.200000
longitude   string     
  • Longitude lokasi. Example: 106.816666
kode_lokasi   string     
  • Kode lokasi absensi. Example: LOC001
akun_lkpm   string     
  • Akun LKPM. Example: LKPM001
kota   string     
  • Kota. Example: Jakarta

Delete Lokasi Absensi

requires authentication

API untuk menghapus data lokasi absensi berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Lokasi absensi deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Lokasi absensi not found"
}
 

Request      

DELETE api/absensi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID lokasi absensi yang akan dihapus. Example: 1

Manage Jabatan

List Master Jabatan

requires authentication

API untuk menampilkan daftar master jabatan dengan pagination.

Endpoint ini menampilkan data master jabatan.

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/jabatan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"sorts\": [
        {
            \"field\": \"id\",
            \"direction\": \"asc\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/jabatan"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "sorts": [
        {
            "field": "id",
            "direction": "asc"
        }
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "nama_jabatan": "Staff Operasional"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "sortField": "id",
        "sortDir": "asc",
        "paginationOrder": "asc"
    }
}
 

Request      

GET api/jabatan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

optional - Nomor halaman. Default: 1. Example: 1

pageSize   integer  optional    

optional - Jumlah data per halaman. Default: 10. Example: 10

sorts   string[]  optional    

optional - Parameter sorting.

requires authentication

API untuk menampilkan daftar master jabatan dengan pagination.

Endpoint ini menampilkan data master jabatan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/jabatan/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"sorts\": [
        {
            \"field\": \"id\",
            \"direction\": \"asc\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/jabatan/search"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "sorts": [
        {
            "field": "id",
            "direction": "asc"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "nama_jabatan": "Staff Operasional"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "sortField": "id",
        "sortDir": "asc",
        "paginationOrder": "asc"
    }
}
 

Get Master Jabatan By ID

requires authentication

API untuk menampilkan detail master jabatan berdasarkan ID.

Endpoint ini menampilkan data master jabatan.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "nama_jabatan": "Staff Operasional",
        "nama_perusahaan": "PT Maju Jaya",
        "nama_lokasi": "Kantor Pusat",
        "kota": "Jakarta"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Perusahaan Lokasi not found"
}
 

Request      

GET api/jabatan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID master jabatan. Example: 1

Create New Master Jabatan

requires authentication

API untuk membuat data master jabatan baru.

Endpoint ini mendukung:

Base input untuk setiap data master jabatan:

Jika request dikirim dalam format array data, maka seluruh item akan divalidasi dan disimpan sekaligus.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/jabatan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nama_jabatan\": \"Staff Operasional\",
    \"data\": [
        {
            \"nama_jabatan\": \"Staff Operasional\"
        },
        {
            \"nama_jabatan\": \"Supervisor Produksi\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/jabatan"
);

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

let body = {
    "nama_jabatan": "Staff Operasional",
    "data": [
        {
            "nama_jabatan": "Staff Operasional"
        },
        {
            "nama_jabatan": "Supervisor Produksi"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Master Jabatan",
    "data": {
        "id": 1,
        "nama_jabatan": "Staff Operasional",
        "created_at": "2026-04-09T10:00:00.000000Z",
        "updated_at": "2026-04-09T10:00:00.000000Z"
    }
}
 

Example response (201):


{
    "status": true,
    "message": "Successfully created new Master Jabatan data",
    "data": [
        {
            "id": 1,
            "nama_jabatan": "Staff Operasional"
        },
        {
            "id": 2,
            "nama_jabatan": "Supervisor Produksi"
        }
    ]
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "nama_jabatan": [
            "The nama jabatan field is required."
        ]
    }
}
 

Request      

POST api/jabatan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

nama_jabatan   string     
  • Nama jabatan. Example: Staff Operasional
data   string[]  optional    

optional - Digunakan untuk bulk insert.

Update Master Jabatan

requires authentication

API untuk memperbarui data master jabatan berdasarkan ID.

Endpoint ini hanya memperbarui field:

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/jabatan/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nama_jabatan\": \"Supervisor Produksi\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/jabatan/1"
);

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

let body = {
    "nama_jabatan": "Supervisor Produksi"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Master Jabatan updated successfully",
    "data": {
        "id": 1,
        "nama_jabatan": "Supervisor Produksi",
        "created_at": "2026-04-09T10:00:00.000000Z",
        "updated_at": "2026-04-09T10:05:00.000000Z"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "No query results for model [App\\Models\\MasterJabatan] 1"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "nama_jabatan": [
            "The nama jabatan field is required."
        ]
    }
}
 

Request      

PUT api/jabatan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID master jabatan. Example: 1

Body Parameters

nama_jabatan   string     
  • Nama jabatan. Example: Supervisor Produksi

Delete Master Jabatan

requires authentication

API untuk menghapus data master jabatan berdasarkan ID.

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Master Jabatan deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "No query results for model [App\\Models\\MasterJabatan] 1"
}
 

Request      

DELETE api/jabatan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID master jabatan. Example: 1

Master Approval

Endpoint untuk mengambil data Master Approval Header dengan fitur filter, sorting, dan pagination.

Get list Master Approval Header

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/approval-headers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        \"architecto\"
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"architecto\",
    \"dateEnd\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-headers"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        "architecto"
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "architecto",
    "dateEnd": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 50,
        "lastPage": 5
    },
    "data": [
        {
            "id": "uuid",
            "modul": "WLA_ITEM",
            "nama_aturan": "Approval WLA Harian",
            "priority": 1,
            "kondisi_json": {
                "id_master_wla": "uuid"
            },
            "is_active": true,
            "created_at": "2026-04-20T10:00:00.000000Z"
        }
    ]
}
 

Request      

GET api/approval-headers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

Optional. Nomor halaman. Example: 1

pageSize   integer  optional    

Optional. Jumlah data per halaman. Example: 10

filters   string[]  optional    

Optional. List filter.

field   string  optional    

Required. Field yang difilter: (id, modul, nama_aturan, priority, is_active) Example: architecto

operator   string  optional    

Required. Operator filter (contains, eq, neq, gt, lt) Example: architecto

value   mixed  optional    

Required. Nilai filter Example: architecto

sorts   string[]  optional    

Optional. List sorting.

field   string  optional    

Required. Field yang di-sort Example: architecto

direction   string  optional    

Required. (asc, desc) Example: architecto

dateStart   string  optional    

Optional. Filter tanggal mulai (ISO 8601) Example: architecto

dateEnd   string  optional    

Optional. Filter tanggal akhir (ISO 8601) Example: architecto

Create Master Approval Header

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/approval-headers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"modul\": \"WLA_ITEM\",
    \"nama_aturan\": \"Approval WLA Harian\",
    \"priority\": 1,
    \"kondisi_json\": {
        \"id_master_wla\": \"97f653ce-85f2-412e-935c-abb83c4a0959\"
    },
    \"is_active\": true
}"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-headers"
);

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

let body = {
    "modul": "WLA_ITEM",
    "nama_aturan": "Approval WLA Harian",
    "priority": 1,
    "kondisi_json": {
        "id_master_wla": "97f653ce-85f2-412e-935c-abb83c4a0959"
    },
    "is_active": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data master approval berhasil dibuat",
    "data": {
        "id": "uuid",
        "modul": "WLA_ITEM",
        "nama_aturan": "Approval WLA Harian",
        "priority": 1,
        "kondisi_json": {
            "id_master_wla": "uuid"
        },
        "is_active": true,
        "created_at": "2026-04-20T10:00:00.000000Z"
    }
}
 

Example response (422):


{
    "status": false,
    "message": "Validation error",
    "errors": {
        "modul": [
            "The selected modul is invalid."
        ]
    }
}
 

Request      

POST api/approval-headers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

modul   string     

Modul yang digunakan. (WLA_ITEM, SURAT_MUTASI, KLAIM_BIAYA, REKRUTMEN) Example: WLA_ITEM

nama_aturan   string     

Nama aturan approval. Example: Approval WLA Harian

priority   integer     

Urutan prioritas (1 = prioritas tertinggi). Example: 1

kondisi_json   object     

Kondisi rule dalam bentuk JSON.

is_active   boolean     

Status aktif. Example: true

Get Detail Master Approval Header

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/approval-headers/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-headers/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "data": {
        "id": "uuid",
        "modul": "WLA_ITEM",
        "nama_aturan": "Approval WLA Harian",
        "priority": 1,
        "kondisi_json": {
            "id_master_wla": "uuid"
        },
        "is_active": true,
        "created_at": "2026-04-20T10:00:00.000000Z",
        "updated_at": "2026-04-20T10:00:00.000000Z"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

GET api/approval-headers/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Master Approval Header (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Update Master Approval Header

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/approval-headers/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"modul\": \"WLA_ITEM\",
    \"nama_aturan\": \"Approval WLA Harian\",
    \"priority\": 1,
    \"kondisi_json\": {
        \"id_master_wla\": \"uuid\"
    },
    \"is_active\": true
}"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-headers/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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

let body = {
    "modul": "WLA_ITEM",
    "nama_aturan": "Approval WLA Harian",
    "priority": 1,
    "kondisi_json": {
        "id_master_wla": "uuid"
    },
    "is_active": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data master approval berhasil diupdate",
    "data": {
        "id": "uuid",
        "modul": "WLA_ITEM",
        "nama_aturan": "Approval WLA Harian Updated",
        "priority": 1,
        "kondisi_json": {
            "id_master_wla": "uuid"
        },
        "is_active": true,
        "updated_at": "2026-04-20T10:10:00.000000Z"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Example response (422):


{
    "status": false,
    "message": "Validation error",
    "errors": {
        "priority": [
            "The priority must be at least 1."
        ]
    }
}
 

Request      

PUT api/approval-headers/{id}

PATCH api/approval-headers/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Master Approval Header (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Body Parameters

modul   string  optional    

Optional Modul yang digunakan. (WLA_ITEM, SURAT_MUTASI, KLAIM_BIAYA, REKRUTMEN) Example: WLA_ITEM

nama_aturan   string  optional    

Optional Nama aturan approval. Example: Approval WLA Harian

priority   integer  optional    

Optional Urutan prioritas (1 = prioritas tertinggi). Example: 1

kondisi_json   object  optional    

Optional Kondisi rule dalam bentuk JSON.

is_active   boolean  optional    

Optional Status aktif. Example: true

Delete Master Approval Header

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/approval-headers/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-headers/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data master approval berhasil dihapus"
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

DELETE api/approval-headers/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Master Approval Header (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Master Approval Detail

Endpoint untuk mengambil data Master Approval Detail dengan fitur filter, sorting, dan pagination.

Get list Master Approval Detail

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/approval-details" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        \"architecto\"
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"architecto\",
    \"dateEnd\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-details"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        "architecto"
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "architecto",
    "dateEnd": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 50,
        "lastPage": 5
    },
    "data": [
        {
            "id": "uuid",
            "step_ke": 1,
            "jenis_action": "approve",
            "master_approval_header": {
                "id": "uuid",
                "modul": "WLA_ITEM",
                "nama_aturan": "Approval WLA",
                "priority": 1,
                "is_active": true
            },
            "struktur_organisasi": {
                "id": "uuid"
            }
        }
    ]
}
 

Request      

GET api/approval-details

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

Optional. Nomor halaman. Example: 1

pageSize   integer  optional    

Optional. Jumlah data per halaman. Example: 10

filters   string[]  optional    

Optional. List filter.

field   string  optional    

Required. Field yang difilter: (id, step_ke, jenis_action, master_approval_header, struktur_organisasi) Example: architecto

operator   string  optional    

Required. Operator filter (contains, eq, neq, gt, lt) Example: architecto

value   mixed  optional    

Required. Nilai filter Example: architecto

sorts   string[]  optional    

Optional. List sorting.

field   string  optional    

Required. Field yang di-sort Example: architecto

direction   string  optional    

Required. (asc, desc) Example: architecto

dateStart   string  optional    

Optional. Filter tanggal mulai (ISO 8601) Example: architecto

dateEnd   string  optional    

Optional. Filter tanggal akhir (ISO 8601) Example: architecto

Create Master Approval Detail

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/approval-details" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"header_id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",
    \"id_so_approver\": \"3fa85f64-5717-4562-b3fc-2c963f66afb1\",
    \"step_ke\": 1,
    \"jenis_action\": \"approve\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-details"
);

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

let body = {
    "header_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "id_so_approver": "3fa85f64-5717-4562-b3fc-2c963f66afb1",
    "step_ke": 1,
    "jenis_action": "approve"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Product created successfully",
    "data": {
        "id": "uuid",
        "step_ke": 1,
        "jenis_action": "approve",
        "master_approval_header": {
            "id": "uuid",
            "modul": "WLA_ITEM",
            "nama_aturan": "Approval WLA",
            "priority": 1,
            "kondisi_json": {
                "id_master_wla": "uuid"
            },
            "is_active": true
        },
        "struktur_organisasi": {
            "id": "uuid",
            "id_karyawan": "uuid",
            "id_jabatan": "uuid"
        }
    }
}
 

Example response (422):


{
    "status": false,
    "message": "Validation Error",
    "errors": {
        "header_id": [
            "The header id field is required."
        ],
        "id_so_approver": [
            "The id so approver field is required."
        ]
    }
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Error message"
}
 

Request      

POST api/approval-details

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

header_id   string  optional    

Required. ID dari master approval header (UUID). Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

id_so_approver   string  optional    

Required. ID struktur organisasi sebagai approver (UUID). Example: 3fa85f64-5717-4562-b3fc-2c963f66afb1

step_ke   integer  optional    

Required. Urutan step approval. Example: 1

jenis_action   string  optional    

Required. Jenis aksi approval (check, approve). Example: approve

Get Detail Master Approval Detail

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/approval-details/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-details/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "data": {
        "id": "uuid",
        "step_ke": 1,
        "jenis_action": "Approve",
        "master_approval_header": {
            "id": "uuid",
            "modul": "WLA_ITEM",
            "nama_aturan": "Approval WLA Harian"
        },
        "struktur_organisasi": {
            "id": "uuid"
        },
        "created_at": "2026-04-20T10:00:00.000000Z",
        "updated_at": "2026-04-20T10:00:00.000000Z"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

GET api/approval-details/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Master Approval Detail (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Update Master Approval Detail

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/approval-details/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"header_id\": \"uuid\",
    \"id_so_approver\": \"uuid\",
    \"step_ke\": 1,
    \"jenis_action\": \"approve\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-details/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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

let body = {
    "header_id": "uuid",
    "id_so_approver": "uuid",
    "step_ke": 1,
    "jenis_action": "approve"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data berhasil diupdate",
    "data": {
        "id": "uuid",
        "step_ke": 1,
        "jenis_action": "approve",
        "master_approval_header": {
            "id": "uuid",
            "nama_aturan": "Approval WLA"
        },
        "struktur_organisasi": {
            "id": "uuid"
        }
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Example response (422):


{
    "status": false,
    "message": "Validation Error",
    "errors": {
        "step_ke": [
            "The step ke must be a number."
        ]
    }
}
 

Request      

PUT api/approval-details/{id}

PATCH api/approval-details/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Master Approval Detail (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Body Parameters

header_id   string  optional    

Optional ID Master Approval Header. Example: uuid

id_so_approver   string  optional    

Optional ID Struktur Organisasi (approver). Example: uuid

step_ke   integer  optional    

Optional Urutan step approval. Example: 1

jenis_action   string  optional    

Optional Jenis aksi (check, approve). Example: approve

Delete Master Approval Header

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/approval-details/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/approval-details/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data detail master approval berhasil dihapus"
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

DELETE api/approval-details/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Master Approval Header (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Master Bank

List Master Bank

requires authentication

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 1,
        "total": 1,
        "lastPage": 1
    },
    "data": [
        {
            "id": 1,
            "kode_kliring": "KL001",
            "rtgs": "RT001",
            "nama_bank": "Bank Maju Jaya",
            "kode_cabang": "CB001",
            "nama_cabang": "Kantor Pusat",
            "kota": "Jakarta",
            "createdAt": "2026-04-14T00:00:00.000000Z",
            "updatedAt": "2026-04-14T00:00:00.000000Z"
        }
    ]
}
 

Request      

POST api/masterbank

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Master Kompetensi Management

GET api/competences

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/competences

requires authentication

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/competences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/competences/{id}

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competences/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competence. Example: architecto

PUT api/competences/{id}

requires authentication

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

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


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/competences/{id}

PATCH api/competences/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competence. Example: architecto

DELETE api/competences/{id}

requires authentication

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/competences/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competence. Example: architecto

GET api/competences/{id}/parameters

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competences/{id}/parameters

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competence. Example: architecto

POST api/competences/{id}/parameters

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/competences/architecto/parameters" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"parameters\": [
        {
            \"jenis\": \"architecto\",
            \"nama_parameter\": \"architecto\",
            \"deskripsi_kompetensi\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/competences/architecto/parameters"
);

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

let body = {
    "parameters": [
        {
            "jenis": "architecto",
            "nama_parameter": "architecto",
            "deskripsi_kompetensi": "architecto"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/competences/{id}/parameters

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competence. Example: architecto

Body Parameters

parameters   object[]     

Must have at least 1 items.

jenis   string  optional    

Example: architecto

nama_parameter   string  optional    

Example: architecto

deskripsi_kompetensi   string  optional    

Example: architecto

PUT api/parameters/{id}

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/parameters/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"jenis\": \"architecto\",
    \"nama_parameter\": \"architecto\",
    \"deskripsi_kompetensi\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/parameters/architecto"
);

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

let body = {
    "jenis": "architecto",
    "nama_parameter": "architecto",
    "deskripsi_kompetensi": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/parameters/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the parameter. Example: architecto

Body Parameters

jenis   string  optional    

Example: architecto

nama_parameter   string  optional    

Example: architecto

deskripsi_kompetensi   string  optional    

Example: architecto

DELETE api/parameters/{id}

requires authentication

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/parameters/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the parameter. Example: architecto

PUT api/competences/parameters/bulk-update

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/competences/parameters/bulk-update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"parameters\": [
        {
            \"id\": \"architecto\",
            \"jenis\": \"architecto\",
            \"nama_parameter\": \"architecto\",
            \"deskripsi_kompetensi\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/competences/parameters/bulk-update"
);

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

let body = {
    "parameters": [
        {
            "id": "architecto",
            "jenis": "architecto",
            "nama_parameter": "architecto",
            "deskripsi_kompetensi": "architecto"
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/competences/parameters/bulk-update

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

parameters   object[]     
id   string     

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

jenis   string  optional    

Example: architecto

nama_parameter   string  optional    

Example: architecto

deskripsi_kompetensi   string  optional    

Example: architecto

GET api/assessment-periods

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/assessment-periods

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/assessment-periods

requires authentication

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/assessment-periods

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/assessment-periods/{id}

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/assessment-periods/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the assessment period. Example: architecto

PUT api/assessment-periods/{id}

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/assessment-periods/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/assessment-periods/architecto"
);

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


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/assessment-periods/{id}

PATCH api/assessment-periods/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the assessment period. Example: architecto

DELETE api/assessment-periods/{id}

requires authentication

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/assessment-periods/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the assessment period. Example: architecto

GET api/competency-assessments

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competency-assessments

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/competency-assessments

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/competency-assessments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": \"architecto\",
    \"id_penilai\": \"architecto\",
    \"id_master_kompetensi\": \"architecto\",
    \"total_score\": 39,
    \"status\": \"approved\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/competency-assessments"
);

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

let body = {
    "id_karyawan": "architecto",
    "id_penilai": "architecto",
    "id_master_kompetensi": "architecto",
    "total_score": 39,
    "status": "approved"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/competency-assessments

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_periode   string  optional    

The id of an existing record in the master_periode_penilaian table.

id_karyawan   string     

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

id_penilai   string     

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

id_master_kompetensi   string     

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

total_score   integer     

Must be at least 0. Example: 39

status   string     

Example: approved

Must be one of:
  • draft
  • submitted
  • approved

GET api/competency-assessments/{id}

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competency-assessments/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competency assessment. Example: architecto

PUT api/competency-assessments/{id}

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/competency-assessments/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"total_score\": 27,
    \"status\": \"approved\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/competency-assessments/architecto"
);

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

let body = {
    "total_score": 27,
    "status": "approved"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/competency-assessments/{id}

PATCH api/competency-assessments/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competency assessment. Example: architecto

Body Parameters

id_periode   string  optional    

The id of an existing record in the master_periode_penilaian table.

total_score   integer  optional    

Must be at least 0. Example: 27

status   string  optional    

Example: approved

Must be one of:
  • draft
  • submitted
  • approved

DELETE api/competency-assessments/{id}

requires authentication

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/competency-assessments/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competency assessment. Example: architecto

GET api/competency-assessment/penilai

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/competency-assessment/penilai" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/competency-assessment/penilai"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competency-assessment/penilai

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/competency-assessment/penilaian

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/competency-assessment/penilaian" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/competency-assessment/penilaian"
);

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/competency-assessment/penilaian

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/competency-assessment/{id}/details

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competency-assessment/{id}/details

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competency assessment. Example: architecto

POST api/competency-assessment/{id}/details

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/competency-assessment/architecto/details" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"details\": [
        {
            \"id_master_kompetensi_parameter\": \"architecto\",
            \"nilai\": 39,
            \"catatan\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/competency-assessment/architecto/details"
);

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

let body = {
    "details": [
        {
            "id_master_kompetensi_parameter": "architecto",
            "nilai": 39,
            "catatan": "architecto"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/competency-assessment/{id}/details

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competency assessment. Example: architecto

Body Parameters

details   object[]     

Must have at least 1 items.

id_master_kompetensi_parameter   string     

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

nilai   integer     

Must be at least 0. Example: 39

catatan   string  optional    

Example: architecto

PUT api/competency-assessment-details/{id}

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/competency-assessment-details/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nilai\": 27,
    \"catatan\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/competency-assessment-details/architecto"
);

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

let body = {
    "nilai": 27,
    "catatan": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/competency-assessment-details/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competency assessment detail. Example: architecto

Body Parameters

nilai   integer  optional    

Must be at least 0. Example: 27

catatan   string  optional    

Example: architecto

DELETE api/competency-assessment-details/{id}

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/competency-assessment-details/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/competency-assessment-details/architecto"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/competency-assessment-details/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the competency assessment detail. Example: architecto

GET api/competency-periods/details

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/competency-periods/details" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/competency-periods/details"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/competency-periods/details

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Master Penomoran

Tampilkan Semua Format Penomoran

requires authentication

Endpoint ini digunakan untuk mengambil daftar semua pengaturan master penomoran dokumen/modul. Mendukung fitur pencarian dan pagination.

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/master-penomoran?per_page=10" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/master-penomoran"
);

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/master-penomoran

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

optional Jumlah data yang ditampilkan per halaman (Default: 10). Example: 10

Buat Pengaturan Penomoran Baru

requires authentication

Endpoint ini digunakan untuk membuat format penomoran dokumen/modul baru.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/master-penomoran" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"kode_modul\": \"b\",
    \"format\": \"{KODE}\\/HRD\\/{BLN}\\/{THN}\\/{NO}\",
    \"digit_urutan\": 4,
    \"periode_reset\": \"tahunan\\n* @response 201 {\\n\\\"status\\\": \\\"success\\\",\\n\\\"message\\\": \\\"Format penomoran berhasil disimpan\\\",\\n\\\"data\\\": {\\n\\\"id\\\": 1,\\n\\\"kode_modul\\\": \\\"SURAT_LEMBUR\\\",\\n\\\"format\\\": \\\"{KODE}\\/HRD\\/{BLN}\\/{THN}\\/{NO}\\\",\\n\\\"digit_urutan\\\": 4,\\n\\\"angka_terakhir_surat\\\": 0,\\n\\\"angka_terakhir_revisi\\\": 0,\\n\\\"periode_reset\\\": \\\"tahunan\\\",\\n\\\"created_at\\\": \\\"2026-06-02T02:26:00.000000Z\\\",\\n\\\"updated_at\\\": \\\"2026-06-02T02:26:00.000000Z\\\"\\n}\\n}\\n* @response 422 {\\n\\\"message\\\": \\\"The given data was invalid.\\\",\\n\\\"errors\\\": {\\n\\\"kode_modul\\\": [\\\"Kode modul ini sudah digunakan.\\\"]\\n}\\n}\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/master-penomoran"
);

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

let body = {
    "kode_modul": "b",
    "format": "{KODE}\/HRD\/{BLN}\/{THN}\/{NO}",
    "digit_urutan": 4,
    "periode_reset": "tahunan\n* @response 201 {\n\"status\": \"success\",\n\"message\": \"Format penomoran berhasil disimpan\",\n\"data\": {\n\"id\": 1,\n\"kode_modul\": \"SURAT_LEMBUR\",\n\"format\": \"{KODE}\/HRD\/{BLN}\/{THN}\/{NO}\",\n\"digit_urutan\": 4,\n\"angka_terakhir_surat\": 0,\n\"angka_terakhir_revisi\": 0,\n\"periode_reset\": \"tahunan\",\n\"created_at\": \"2026-06-02T02:26:00.000000Z\",\n\"updated_at\": \"2026-06-02T02:26:00.000000Z\"\n}\n}\n* @response 422 {\n\"message\": \"The given data was invalid.\",\n\"errors\": {\n\"kode_modul\": [\"Kode modul ini sudah digunakan.\"]\n}\n}"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/master-penomoran

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

kode_modul   string     

Must not be greater than 255 characters. Example: b

format   string     

Format susunan nomor (Gunakan tag seperti {KODE}, {BLN}, {THN}, {NO}). Example: {KODE}/HRD/{BLN}/{THN}/{NO}

digit_urutan   integer  optional    

optional Jumlah digit untuk nomor urut (Default: 4). Example: 4

periode_reset   string  optional    

optional Periode reset penomoran otomatis. Valid: bulanan, tahunan, none (Default: tahunan). Example: `tahunan

  • @response 201 { "status": "success", "message": "Format penomoran berhasil disimpan", "data": { "id": 1, "kode_modul": "SURAT_LEMBUR", "format": "{KODE}/HRD/{BLN}/{THN}/{NO}", "digit_urutan": 4, "angka_terakhir_surat": 0, "angka_terakhir_revisi": 0, "periode_reset": "tahunan", "created_at": "2026-06-02T02:26:00.000000Z", "updated_at": "2026-06-02T02:26:00.000000Z" } }
  • @response 422 { "message": "The given data was invalid.", "errors": { "kode_modul": ["Kode modul ini sudah digunakan."] } }`

Update Pengaturan Penomoran

requires authentication

Endpoint ini digunakan untuk memperbarui format penomoran dokumen/modul yang sudah ada.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/master-penomoran/0" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"format\": \"{KODE}\\/HRD-REV\\/{BLN}\\/{THN}\\/{NO}\",
    \"digit_urutan\": 5,
    \"periode_reset\": \"bulanan\\n* @response 200 {\\n\\\"status\\\": \\\"success\\\",\\n\\\"message\\\": \\\"Format penomoran berhasil diperbarui\\\",\\n\\\"data\\\": {\\n\\\"id\\\": 1,\\n\\\"kode_modul\\\": \\\"SURAT_LEMBUR\\\",\\n\\\"format\\\": \\\"{KODE}\\/HRD-REV\\/{BLN}\\/{THN}\\/{NO}\\\",\\n\\\"digit_urutan\\\": 5,\\n\\\"angka_terakhir_surat\\\": 0,\\n\\\"angka_terakhir_revisi\\\": 0,\\n\\\"periode_reset\\\": \\\"bulanan\\\",\\n\\\"created_at\\\": \\\"2026-06-02T02:26:00.000000Z\\\",\\n\\\"updated_at\\\": \\\"2026-06-02T02:30:00.000000Z\\\"\\n}\\n}\\n* @response 404 {\\n\\\"status\\\": \\\"error\\\",\\n\\\"message\\\": \\\"Data penomoran tidak ditemukan\\\"\\n}\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/master-penomoran/0"
);

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

let body = {
    "format": "{KODE}\/HRD-REV\/{BLN}\/{THN}\/{NO}",
    "digit_urutan": 5,
    "periode_reset": "bulanan\n* @response 200 {\n\"status\": \"success\",\n\"message\": \"Format penomoran berhasil diperbarui\",\n\"data\": {\n\"id\": 1,\n\"kode_modul\": \"SURAT_LEMBUR\",\n\"format\": \"{KODE}\/HRD-REV\/{BLN}\/{THN}\/{NO}\",\n\"digit_urutan\": 5,\n\"angka_terakhir_surat\": 0,\n\"angka_terakhir_revisi\": 0,\n\"periode_reset\": \"bulanan\",\n\"created_at\": \"2026-06-02T02:26:00.000000Z\",\n\"updated_at\": \"2026-06-02T02:30:00.000000Z\"\n}\n}\n* @response 404 {\n\"status\": \"error\",\n\"message\": \"Data penomoran tidak ditemukan\"\n}"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/master-penomoran/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

ID dari master penomoran yang ingin diubah. Example: 1

  • @bodyParam kode_modul string required Kode unik modul (Misal: PO, INV, SURAT). Harus unik. Example: 0

Body Parameters

kode_modul   string  optional    

Abaikan pengecekan unique untuk ID yang sedang diupdate.

format   string     

Format susunan nomor. Example: {KODE}/HRD-REV/{BLN}/{THN}/{NO}

digit_urutan   integer  optional    

optional Jumlah digit untuk nomor urut (Default: 4). Example: 5

periode_reset   string  optional    

optional Periode reset penomoran otomatis (bulanan, tahunan, none). Example: `bulanan

  • @response 200 { "status": "success", "message": "Format penomoran berhasil diperbarui", "data": { "id": 1, "kode_modul": "SURAT_LEMBUR", "format": "{KODE}/HRD-REV/{BLN}/{THN}/{NO}", "digit_urutan": 5, "angka_terakhir_surat": 0, "angka_terakhir_revisi": 0, "periode_reset": "bulanan", "created_at": "2026-06-02T02:26:00.000000Z", "updated_at": "2026-06-02T02:30:00.000000Z" } }
  • @response 404 { "status": "error", "message": "Data penomoran tidak ditemukan" }`

Hapus Pengaturan Penomoran

requires authentication

Endpoint ini digunakan untuk menghapus data master penomoran dari database.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/master-penomoran/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/master-penomoran/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/master-penomoran/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

ID dari master penomoran yang ingin dihapus. Example: 1

Master Surat

Endpoint ini digunakan untuk membuat surat baru beserta detail surat, alur approval, dan approval log berdasarkan jenis surat yang dipilih.

Supported Jenis Surat:

Request Body (Base):

Store a newly created Letter (Surat).

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/surat" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_so_pengirim\": \"019df0bc-1b4e-7221-b69d-b022e225b9de\",
    \"id_so_penerimas\": [
        \"019df0bc-1c9c-71d0-a3ca-434aaae73316\",
        \"019df0bc-1c98-703e-9d78-233ccb6c530e\"
    ],
    \"jenis_surat\": \"perintah kerja\",
    \"approval_steps\": [
        \"architecto\"
    ],
    \"id_perusahaan_lokasi_awal\": \"architecto\",
    \"id_perusahaan_lokasi_pindah\": \"architecto\",
    \"id_jabatan_awal\": \"architecto\",
    \"id_jabatan_pindah\": \"architecto\",
    \"jenis\": \"architecto\",
    \"perihal\": \"architecto\",
    \"deskripsi\": \"architecto\",
    \"tanggal_mulai\": \"2026-06-10\",
    \"tanggal_selesai\": \"2026-07-10\",
    \"jenis_tugas\": \"Tambahan\",
    \"jenis_target\": \"Tanggal\",
    \"nilai_target\": \"2026-07-10\\n\\nKHUSUS JENIS SURAT : TEGURAN\",
    \"level\": 16,
    \"denda\": \"500000\\n\\nKHUSUS JENIS SURAT : PEMBERITAHUAN\",
    \"tanggal_berlaku\": \"2026-06-01\",
    \"perubahan_gaji\": \"1000000\\n\\nKHUSUS JENIS SURAT : BERITA ACARA\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/surat"
);

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

let body = {
    "id_so_pengirim": "019df0bc-1b4e-7221-b69d-b022e225b9de",
    "id_so_penerimas": [
        "019df0bc-1c9c-71d0-a3ca-434aaae73316",
        "019df0bc-1c98-703e-9d78-233ccb6c530e"
    ],
    "jenis_surat": "perintah kerja",
    "approval_steps": [
        "architecto"
    ],
    "id_perusahaan_lokasi_awal": "architecto",
    "id_perusahaan_lokasi_pindah": "architecto",
    "id_jabatan_awal": "architecto",
    "id_jabatan_pindah": "architecto",
    "jenis": "architecto",
    "perihal": "architecto",
    "deskripsi": "architecto",
    "tanggal_mulai": "2026-06-10",
    "tanggal_selesai": "2026-07-10",
    "jenis_tugas": "Tambahan",
    "jenis_target": "Tanggal",
    "nilai_target": "2026-07-10\n\nKHUSUS JENIS SURAT : TEGURAN",
    "level": 16,
    "denda": "500000\n\nKHUSUS JENIS SURAT : PEMBERITAHUAN",
    "tanggal_berlaku": "2026-06-01",
    "perubahan_gaji": "1000000\n\nKHUSUS JENIS SURAT : BERITA ACARA"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created new Letter",
    "data": {
        "id": "uuid",
        "nomor_surat": "0001/SPK/HRD/VI/2026",
        "jenis_surat": "perintah kerja",
        "status": "pending"
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "field": [
            "Validation message"
        ]
    }
}
 

Example response (500):


{
    "status": false,
    "message": "Internal server error"
}
 

Request      

POST api/surat

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_so_pengirim   uuid     

ID Struktur Organisasi pengirim surat. Example: 019df0bc-1b4e-7221-b69d-b022e225b9de

id_so_penerimas   string[]     

Daftar ID Struktur Organisasi penerima surat.

jenis_surat   string     

Jenis surat. Available values: perintah kerja, peringatan, teguran, mutasi, demosi, promosi, pemberitahuan, berita acara, memo. Example: perintah kerja

approval_steps   string[]  optional    

optional Daftar approval surat.

id_so_approver   uuid     

ID Struktur Organisasi approver. Example: 019df0bc-1c9c-71d0-a3ca-434aaae73316

jenis_action   string     

Jenis approval. Available values: check, approve Example: `check

KHUSUS JENIS SURAT : PERINTAH KERJA`

id_perusahaan_lokasi_awal   uuid     

Lokasi awal. Example: architecto

id_perusahaan_lokasi_pindah   uuid     

Lokasi tujuan. Example: architecto

id_jabatan_awal   uuid     

Jabatan awal. Example: architecto

id_jabatan_pindah   uuid     

Jabatan tujuan. Example: architecto

jenis   string     

Jenis pemberitahuan. Available values: info, update Example: architecto

perihal   string     

Perihal berita acara. Example: architecto

deskripsi   string     

Isi berita acara.

CONTOH REQUEST (PERINTAH KERJA) { "id_so_pengirim": "019df0bc-1b4e-7221-b69d-b022e225b9de", "id_so_penerimas": [ "019df0bc-1c9c-71d0-a3ca-434aaae73316", "019df0bc-1c98-703e-9d78-233ccb6c530e" ], "jenis_surat": "perintah kerja", "approval_steps": [ { "id_so_approver": "019df0bc-1c9c-71d0-a3ca-434aaae73316", "jenis_action": "check" }, { "id_so_approver": "019df0bc-1c9c-71d0-a3ca-434aaae73316", "jenis_action": "approve" } ], "id_perusahaan_lokasi_awal": "7e933589-8021-45c8-845f-5505de3c67b6", "id_perusahaan_lokasi_pindah": "7e933589-8021-45c8-845f-5505de3c67b6", "id_jabatan_awal": "019df0ba-6b0c-72c8-8c33-5cc868e5d53f", "id_jabatan_pindah": "019df0ba-6b0c-72c8-8c33-5cc868e5d53f", "jenis": "tugas tambahan", "perihal": "Kerja Lapangan Sementara ddddd (Updated)", "deskripsi": "Melakukan backup tim operational di cabang baru selama masa grand opening.", "tanggal_mulai": "2026-06-10", "tanggal_selesai": "2026-07-10", "jenis_tugas": "Tambahan", "jenis_target": "Tanggal", "nilai_target": "2026-07-10" } Example: architecto

tanggal_mulai   date     

Tanggal mulai tugas. Example: 2026-06-10

tanggal_selesai   date     

Tanggal selesai tugas. Example: 2026-07-10

jenis_tugas   string     

Jenis tugas. Available values: H, Tambahan Example: Tambahan

jenis_target   string     

Jenis target tugas. Available values: Waktu, Tanggal, Hari, Hari Deadline, Durasi, Jumlah, Tanggal Lengkap Example: Tanggal

nilai_target   string     

Nilai target berdasarkan jenis target. Example: `2026-07-10

KHUSUS JENIS SURAT : TEGURAN`

level   integer     

Level peringatan. Available values: 1, 2, 3 Example: 16

denda   numeric     

Nilai denda. Example: `500000

KHUSUS JENIS SURAT : PEMBERITAHUAN`

tanggal_berlaku   date     

Tanggal mulai berlaku. Example: 2026-06-01

perubahan_gaji   numeric  optional    

optional Nominal perubahan gaji. Example: `1000000

KHUSUS JENIS SURAT : BERITA ACARA`

Menampilkan daftar surat berdasarkan jenis surat. Mendukung: - Pagination - Sorting - Filter status - Filter penerima - Filter rentang tanggal

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/surat?jenis_surat=perintah+kerja&id_so_penerima=5&status=approved&dateStart=2025-01-01&dateEnd=2025-01-31&pageNumber=1&pageSize=10&sorts%5B%5D%5Bfield%5D=created_at&sorts%5B%5D%5Bdirection%5D=desc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/surat"
);

const params = {
    "jenis_surat": "perintah kerja",
    "id_so_penerima": "5",
    "status": "approved",
    "dateStart": "2025-01-01",
    "dateEnd": "2025-01-31",
    "pageNumber": "1",
    "pageSize": "10",
    "sorts[][field]": "created_at",
    "sorts[][direction]": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully fetched Surat Perintah Kerja list"
}
 

Example response (400):


{
    "status": false,
    "message": "Parameter jenis_surat wajib disertakan."
}
 

Request      

GET api/surat

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

jenis_surat   string     

Jenis surat. Example: perintah kerja

id_so_penerima   integer  optional    

Filter ID struktur organisasi penerima. Example: 5

status   string  optional    

Filter status surat. Example: approved

dateStart   string  optional    

Filter tanggal mulai. Format: Y-m-d atau datetime. Example: 2025-01-01

dateEnd   string  optional    

Filter tanggal akhir. Format: Y-m-d atau datetime. Example: 2025-01-31

pageNumber   integer  optional    

Nomor halaman. Default: 1 Example: 1

pageSize   integer  optional    

Jumlah data per halaman. Default: 10 Example: 10

sorts[][field]   string  optional    

Field sorting. Allowed: id, nomor_surat, jenis_surat, tanggal_surat, status, created_at, updated_at Example: created_at

sorts[][direction]   string  optional    

Arah sorting. Allowed: asc, desc Example: desc

Menampilkan detail surat berdasarkan ID dan jenis surat. Data yang dikembalikan mencakup: - Detail master surat - Detail surat sesuai jenis surat - Data pengirim - Data penerima - Riwayat approval

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/surat/1?jenis_surat=perintah+kerja" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/surat/1"
);

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully fetched Surat Perintah Kerja detail",
    "data": {
        "id": 1,
        "nomor_surat": "SPK/001/2025",
        "jenis_surat": "perintah kerja",
        "status": "approved"
    }
}
 

Example response (400):


{
    "status": false,
    "message": "Parameter jenis_surat wajib disertakan."
}
 

Example response (404):


{
    "status": false,
    "message": "Data Surat Perintah Kerja tidak ditemukan."
}
 

Request      

GET api/surat/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

ID Master Surat. Example: 1

Query Parameters

jenis_surat   string     

Jenis surat yang dicari. Contoh nilai:

  • perintah kerja
  • teguran
  • peringatan
  • pemberitahuan
  • mutasi
  • promosi
  • demosi
  • berita acara Example: perintah kerja

Menghapus surat berdasarkan ID dan jenis surat. Endpoint ini akan menghapus: - Data master surat - Detail surat sesuai jenis surat - Approval Header terkait - Approval Detail terkait - Approval Log terkait Proses penghapusan dilakukan dalam database transaction sehingga seluruh data akan di-rollback jika terjadi error.

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/surat/1?jenis_surat=perintah+kerja" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/surat/1"
);

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully deleted Surat Perintah Kerja and all related approval data."
}
 

Example response (400):


{
    "status": false,
    "message": "Parameter jenis_surat wajib disertakan."
}
 

Example response (404):


{
    "status": false,
    "message": "Data Surat Perintah Kerja tidak ditemukan."
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error"
}
 

Request      

DELETE api/surat/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

ID Master Surat yang akan dihapus. Example: 1

Query Parameters

jenis_surat   string     

Jenis surat yang akan dihapus. Pilihan:

  • perintah kerja
  • teguran
  • peringatan
  • pemberitahuan
  • mutasi
  • promosi
  • demosi
  • berita acara Example: perintah kerja

Update the specified Letter. Endpoint ini digunakan untuk mengubah data surat yang masih berstatus pending. Jika surat sudah diproses maka data tidak dapat diubah. URL Parameter:

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/surat/019df0bc-1c9c-71d0-a3ca-434aaae73316

REQUEST BODY (BASE)" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_so_pengirim\": \"019df0bc-1b4e-7221-b69d-b022e225b9de\",
    \"id_so_penerimas\": [
        \"019df0bc-1c9c-71d0-a3ca-434aaae73316\"
    ],
    \"jenis_surat\": \"architecto\",
    \"approval_steps\": [
        \"architecto\"
    ],
    \"id_perusahaan_lokasi_awal\": \"architecto\",
    \"id_perusahaan_lokasi_pindah\": \"architecto\",
    \"id_jabatan_awal\": \"architecto\",
    \"id_jabatan_pindah\": \"architecto\",
    \"jenis\": \"architecto\",
    \"perihal\": \"architecto\",
    \"deskripsi\": \"architecto\",
    \"tanggal_mulai\": \"2026-06-10\",
    \"tanggal_selesai\": \"2026-07-10\",
    \"jenis_tugas\": \"architecto\",
    \"jenis_target\": \"architecto\",
    \"nilai_target\": \"architecto\",
    \"level\": 16,
    \"denda\": \"500000\\n\\nKHUSUS JENIS SURAT : PEMBERITAHUAN\",
    \"tanggal_berlaku\": \"architecto\",
    \"perubahan_gaji\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/surat/019df0bc-1c9c-71d0-a3ca-434aaae73316

REQUEST BODY (BASE)"
);

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

let body = {
    "id_so_pengirim": "019df0bc-1b4e-7221-b69d-b022e225b9de",
    "id_so_penerimas": [
        "019df0bc-1c9c-71d0-a3ca-434aaae73316"
    ],
    "jenis_surat": "architecto",
    "approval_steps": [
        "architecto"
    ],
    "id_perusahaan_lokasi_awal": "architecto",
    "id_perusahaan_lokasi_pindah": "architecto",
    "id_jabatan_awal": "architecto",
    "id_jabatan_pindah": "architecto",
    "jenis": "architecto",
    "perihal": "architecto",
    "deskripsi": "architecto",
    "tanggal_mulai": "2026-06-10",
    "tanggal_selesai": "2026-07-10",
    "jenis_tugas": "architecto",
    "jenis_target": "architecto",
    "nilai_target": "architecto",
    "level": 16,
    "denda": "500000\n\nKHUSUS JENIS SURAT : PEMBERITAHUAN",
    "tanggal_berlaku": "architecto",
    "perubahan_gaji": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
"status": true,
"message": "Successfully updated the Letter",
"data": {
     "id": "019df0bc-1c9c-71d0-a3ca-434aaae73316",
     "nomor_surat": "0001/SPK/HRD/VI/2026",
     "jenis_surat": "perintah kerja",
     "status": "pending"
     }
 }

RESPONSE NOT FOUND
 

Example response (404):


{
"status": false,
"message": "Data surat tidak ditemukan."
}

RESPONSE VALIDATION ERROR
 

Example response (422):


{
"status": false,
"message": "Surat yang sudah diproses tidak dapat diubah."
}

RESPONSE SERVER ERROR
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error"
}
 

Request      

PUT api/surat/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Master Surat. Example: `019df0bc-1c9c-71d0-a3ca-434aaae73316

REQUEST BODY (BASE)`

Body Parameters

id_so_pengirim   uuid     

ID Struktur Organisasi pengirim. Example: 019df0bc-1b4e-7221-b69d-b022e225b9de

id_so_penerimas   string[]     

Daftar ID Struktur Organisasi penerima.

jenis_surat   string     

Jenis surat. Available values: perintah kerja, peringatan, teguran, mutasi, demosi, promosi, pemberitahuan, berita acara, memo Example: architecto

approval_steps   string[]  optional    

optional Daftar approval surat.

id_so_approver   uuid     

ID approver. Example: architecto

jenis_action   string     

Available values: check, approve

KHUSUS JENIS SURAT : PERINTAH KERJA Example: architecto

id_perusahaan_lokasi_awal   uuid     

Lokasi awal. Example: architecto

id_perusahaan_lokasi_pindah   uuid     

Lokasi tujuan. Example: architecto

id_jabatan_awal   uuid     

Jabatan awal. Example: architecto

id_jabatan_pindah   uuid     

Jabatan tujuan. Example: architecto

jenis   string     

Available values: info, update Example: architecto

perihal   string     

Perihal berita acara. Example: architecto

deskripsi   string     

Isi berita acara.

RESPONSE SUCCESS Example: architecto

tanggal_mulai   date     

Tanggal mulai. Example: 2026-06-10

tanggal_selesai   date     

Tanggal selesai. Example: 2026-07-10

jenis_tugas   string     

Available values: H, Tambahan Example: architecto

jenis_target   string     

Available values: Waktu, Tanggal, Hari, Hari Deadline, Durasi, Jumlah, Tanggal Lengkap Example: architecto

nilai_target   string     

Nilai target tugas.

KHUSUS JENIS SURAT : TEGURAN Example: architecto

level   integer     

Level peringatan. Available values: 1,2,3 Example: 16

denda   numeric     

Nominal denda. Example: `500000

KHUSUS JENIS SURAT : PEMBERITAHUAN`

tanggal_berlaku   date     

Tanggal berlaku. Example: architecto

perubahan_gaji   numeric  optional    

optional Perubahan gaji.

KHUSUS JENIS SURAT : BERITA ACARA Example: architecto

Master WLA

Endpoint untuk menambahkan data Master WLA baru beserta konfigurasi approval (opsional).

Get List Master WLA (Grouped by Struktur Organisasi)

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis?pageNumber=1&pageSize=10&nama_karyawan=admin&jabatan=programmer&level_posisi=2&jenis_wla=H&jenis_target=Waktu&tipe_pelaporan=rincian&is_active=1&is_required=1&is_score=1&sortBy=architecto&sortDir=asc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis"
);

const params = {
    "pageNumber": "1",
    "pageSize": "10",
    "nama_karyawan": "admin",
    "jabatan": "programmer",
    "level_posisi": "2",
    "jenis_wla": "H",
    "jenis_target": "Waktu",
    "tipe_pelaporan": "rincian",
    "is_active": "1",
    "is_required": "1",
    "is_score": "1",
    "sortBy": "architecto",
    "sortDir": "asc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
  "status": true,
  "message": "Successfully",
  "meta": {
    "pageNumber": 1,
    "pageSize": 5,
    "from": 1,
    "to": 5,
    "total": 20,
    "lastPage": 4
  },
  "data": [
    {
      "id": "019dd2c7-3a1a-72ec-aa73-f2eab6a6f505",
      "nama_karyawan": "Admin",
      "jabatan": "STAF PROGRAMMER",
      "level_posisi": 1,
      "total_wla": 3,
      "wla_list": [
        {
          "id": "uuid",
          "nama_wla": "Absensi Pagi",
          "jenis_wla": "H",
          "jenis_target": "Waktu",
          "nilai_target": "08:00",
          "durasi_menit": 10,
          "frekuensi": 1,
          "denda": 5000,
          "tipe_pelaporan": "tunggal",
          "created_at": "2026-04-20T10:00:00.000000Z"
        },
        {
          "id": "uuid",
          "nama_wla": "Briefing",
          "jenis_wla": "H",
          "jenis_target": "Durasi",
          "nilai_target": "30",
          "durasi_menit": 30,
          "frekuensi": 1,
          "denda": null,
          "tipe_pelaporan": "rincian",
          "created_at": "2026-04-20T11:00:00.000000Z"
        }
      ]
    }
  ]
}

---

## ❌ Error Response
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Something went wrong"
}
 

Request      

GET api/work_load_analysis

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

pageNumber   integer  optional    

Optional. Nomor halaman. Default: 1. Example: 1

pageSize   integer  optional    

Optional. Jumlah data per halaman. Default: 10. Example: 10

nama_karyawan   string  optional    

Optional. Filter berdasarkan nama karyawan (LIKE). Example: admin

jabatan   string  optional    

Optional. Filter berdasarkan nama jabatan (LIKE). Example: programmer

level_posisi   integer  optional    

Optional. Filter berdasarkan level posisi. Example: 2

jenis_wla   string  optional    

Optional. Filter jenis WLA. (H=Harian, M=Mingguan, B=Bulanan, T=Target, Tambahan). Example: H

jenis_target   string  optional    

Optional. Filter jenis target (Waktu, Tanggal, Hari, Durasi, Jumlah, dll). Example: Waktu

tipe_pelaporan   string  optional    

Optional. Filter tipe pelaporan (tunggal, rincian). Example: rincian

is_active   boolean  optional    

Optional. Filter status aktif. Example: true

is_required   boolean  optional    

Optional. Filter status wajib. Example: true

is_score   boolean  optional    

Optional. Filter status wajib. Example: true

sortBy   string  optional    

Optional. Field untuk sorting.

  • created_at
  • level_posisi
  • nama_karyawan
  • jabatan Default: created_at Example: architecto
sortDir   string  optional    

Optional. Arah sorting (asc, desc). Default: desc. Example: asc

Create Master WLA

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/work_load_analysis" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_struktur_organisasi\": \"550e8400-e29b-41d4-a716-446655440000\",
    \"nama_wla\": \"Absensi Pagi\",
    \"jenis_wla\": \"H\",
    \"jenis_target\": \"Waktu\",
    \"nilai_target\": \"08:00\",
    \"standar_durasi_menit\": 10,
    \"standar_frekuensi\": 1,
    \"bobot_tugas\": \"10\",
    \"tipe_penilaian\": \"min\",
    \"tipe_pelaporan\": \"tunggal\",
    \"denda\": 5000,
    \"is_score\": true,
    \"is_active\": true,
    \"is_required\": true,
    \"approval_steps\": [
        {
            \"id_so_approver\": \"550e8400-e29b-41d4-a716-446655440001\",
            \"jenis_action\": \"check\"
        },
        {
            \"id_so_approver\": \"550e8400-e29b-41d4-a716-446655440002\",
            \"jenis_action\": \"approve\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis"
);

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

let body = {
    "id_struktur_organisasi": "550e8400-e29b-41d4-a716-446655440000",
    "nama_wla": "Absensi Pagi",
    "jenis_wla": "H",
    "jenis_target": "Waktu",
    "nilai_target": "08:00",
    "standar_durasi_menit": 10,
    "standar_frekuensi": 1,
    "bobot_tugas": "10",
    "tipe_penilaian": "min",
    "tipe_pelaporan": "tunggal",
    "denda": 5000,
    "is_score": true,
    "is_active": true,
    "is_required": true,
    "approval_steps": [
        {
            "id_so_approver": "550e8400-e29b-41d4-a716-446655440001",
            "jenis_action": "check"
        },
        {
            "id_so_approver": "550e8400-e29b-41d4-a716-446655440002",
            "jenis_action": "approve"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "success": true,
    "message": "Data master WLA berhasil dibuat",
    "data": {
        "id": "uuid",
        "id_struktur_organisasi": "uuid",
        "nama_wla": "Absensi Pagi",
        "jenis_wla": "H",
        "jenis_target": "Waktu",
        "nilai_target": "08:00",
        "standar_durasi_menit": 10,
        "standar_frekuensi": 1,
        "bobot_tugas": "10",
        "tipe_penilaian": "min",
        "tipe_pelaporan": "tunggal",
        "denda": 5000,
        "is_score": true,
        "is_active": true,
        "created_at": "2026-04-20T10:00:00.000000Z",
        "updated_at": "2026-04-20T10:00:00.000000Z"
    }
}
 

Example response (422):


{
    "success": false,
    "message": "Validation error",
    "errors": {
        "nama_wla": [
            "The nama wla field is required."
        ]
    }
}
 

Request      

POST api/work_load_analysis

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_struktur_organisasi   string     

UUID dari struktur organisasi. Example: 550e8400-e29b-41d4-a716-446655440000

nama_wla   string     

Nama WLA. Max 180 karakter. Example: Absensi Pagi

jenis_wla   string     

Jenis WLA (H=Harian, M=Mingguan, B=Bulanan, Tambahan). Example: H

jenis_target   string     

Jenis target (Waktu, Tanggal, Hari, Hari Deadline, Durasi, Jumlah). Example: Waktu

nilai_target   string     

Nilai target sesuai jenis_target. Example: 08:00

standar_durasi_menit   integer     

Durasi standar dalam menit. Example: 10

standar_frekuensi   integer     

Frekuensi kemunculan. Example: 1

bobot_tugas   string  optional    

optional Bobot tugas. Max 25 karakter. Example: 10

tipe_penilaian   string  optional    

optional Tipe penilaian (min, max, khusus). Example: min

tipe_pelaporan   string  optional    

optional Tipe pelaporan (tunggal, rincian). Example: tunggal

denda   integer  optional    

optional Nilai denda (boleh null). Example: 5000

is_score   boolean     

Menandakan apakah WLA dinilai atau tidak. Example: true

is_active   boolean     

Status aktif (true / false). Example: true

is_required   boolean     

Status wajib (true / false). Example: true

approval_steps   string[]  optional    

optional

id_so_approver   string     

UUID approver dari struktur organisasi. Example: 550e8400-e29b-41d4-a716-446655440001

jenis_action   string     

Jenis action (check, approve). Example: check

Update Master WLA

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/work_load_analysis/550e8400-e29b-41d4-a716-446655440000" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_struktur_organisasi\": \"architecto\",
    \"nama_wla\": \"architecto\",
    \"jenis_wla\": \"architecto\",
    \"jenis_target\": \"architecto\",
    \"nilai_target\": \"architecto\",
    \"standar_durasi_menit\": 16,
    \"standar_frekuensi\": 16,
    \"bobot_tugas\": \"architecto\",
    \"tipe_penilaian\": \"architecto\",
    \"tipe_pelaporan\": \"architecto\",
    \"denda\": 16,
    \"is_score\": false,
    \"is_active\": false,
    \"is_required\": false,
    \"approval_steps\": null
}"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/550e8400-e29b-41d4-a716-446655440000"
);

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

let body = {
    "id_struktur_organisasi": "architecto",
    "nama_wla": "architecto",
    "jenis_wla": "architecto",
    "jenis_target": "architecto",
    "nilai_target": "architecto",
    "standar_durasi_menit": 16,
    "standar_frekuensi": 16,
    "bobot_tugas": "architecto",
    "tipe_penilaian": "architecto",
    "tipe_pelaporan": "architecto",
    "denda": 16,
    "is_score": false,
    "is_active": false,
    "is_required": false,
    "approval_steps": null
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data master WLA berhasil diupdate",
    "data": {
        "id": "uuid",
        "nama_wla": "Updated WLA"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

PUT api/work_load_analysis/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

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

Body Parameters

id_struktur_organisasi   string  optional    

optional UUID struktur organisasi. Example: architecto

nama_wla   string  optional    

optional Nama WLA. Max 180 karakter. Example: architecto

jenis_wla   string  optional    

optional Jenis WLA (H, M, B, Tambahan). Example: architecto

jenis_target   string  optional    

optional Jenis target. Example: architecto

nilai_target   string  optional    

optional Nilai target. Example: architecto

standar_durasi_menit   integer  optional    

optional Durasi standar. Example: 16

standar_frekuensi   integer  optional    

optional Frekuensi. Example: 16

bobot_tugas   string  optional    

optional Bobot tugas. Example: architecto

tipe_penilaian   string  optional    

optional (min, max, khusus). Example: architecto

tipe_pelaporan   string  optional    

optional (tunggal, rincian). Example: architecto

denda   integer  optional    

optional Nilai denda. Example: 16

is_score   boolean  optional    

optional Status penilaian. Example: false

is_active   boolean  optional    

optional Status aktif. Example: false

is_required   boolean  optional    

optional Status wajib. Example: false

approval_steps   string[]  optional    

optional

id_so_approver   string     

UUID approver. Example: architecto

jenis_action   string     

(check, approve). Example: architecto

Delete Master WLA

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/work_load_analysis/550e8400-e29b-41d4-a716-446655440000" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/550e8400-e29b-41d4-a716-446655440000"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data master WLA berhasil dihapus"
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

DELETE api/work_load_analysis/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

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

Get Detail Master WLA

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/550e8400-e29b-41d4-a716-446655440000" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/550e8400-e29b-41d4-a716-446655440000"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "data": {
        "id": "uuid",
        "nama_wla": "Absensi Pagi",
        "jenis_wla": "H",
        "jenis_target": "Waktu",
        "nilai_target": "08:00",
        "standar_durasi_menit": 10,
        "standar_frekuensi": 1,
        "denda": 5000,
        "is_active": true,
        "struktur_organisasi": {
            "id": "uuid"
        },
        "created_at": "2026-04-20T10:00:00.000000Z",
        "updated_at": "2026-04-20T10:00:00.000000Z"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

GET api/work_load_analysis/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

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

Get Master WLA Self & Bawahan

requires authentication

API untuk mengambil daftar Master WLA milik user login beserta seluruh bawahan berdasarkan struktur organisasi.

Data bawahan diambil secara recursive menggunakan: id_struktur_org_atasan

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/my/team?pageNumber=1&pageSize=10&nama_karyawan=admin&jabatan=programmer&level_posisi=2&jenis_wla=H&jenis_target=Waktu&tipe_pelaporan=rincian&is_active=1&sortBy=architecto&sortDir=asc%0A%0ANote%3A%0A-+Filter+WLA+digunakan+untuk+menentukan+data+struktur+organisasi+yang+tampil.%0A-+Relasi+%60wla_list%60+tetap+menampilkan+seluruh+data+WLA+yang+dimiliki+struktur+organisasi+tersebut.%0A-+%60total_wla%60+menampilkan+total+seluruh+WLA+tanpa+mengikuti+filter+query+WLA." \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/my/team"
);

const params = {
    "pageNumber": "1",
    "pageSize": "10",
    "nama_karyawan": "admin",
    "jabatan": "programmer",
    "level_posisi": "2",
    "jenis_wla": "H",
    "jenis_target": "Waktu",
    "tipe_pelaporan": "rincian",
    "is_active": "1",
    "sortBy": "architecto",
    "sortDir": "asc

Note:
- Filter WLA digunakan untuk menentukan data struktur organisasi yang tampil.
- Relasi `wla_list` tetap menampilkan seluruh data WLA yang dimiliki struktur organisasi tersebut.
- `total_wla` menampilkan total seluruh WLA tanpa mengikuti filter query WLA.",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
  "status": true,
  "message": "Successfully",
  "meta": {
    "pageNumber": 1,
    "pageSize": 10,
    "from": 1,
    "to": 2,
    "total": 2,
    "lastPage": 1
  },
  "data": [
    {
      "id": "019df0bc-1b57-73b7-afdb-5bc165142d8f",
      "nama_karyawan": "Kamin",
      "jabatan": "Manager IT",
      "level_posisi": 1,
      "total_wla": 2,
      "is_self": true,
      "wla_list": [
        {
          "id": "019df0bc-1af2-73bf-a1dd-fd0cd702ec91",
          "nama_wla": "Absensi Pagi",
          "jenis_wla": "H",
          "jenis_target": "Waktu",
          "nilai_target": "08:00",
          "durasi_menit": 10,
          "frekuensi": 1,
          "denda": 5000,
          "tipe_pelaporan": "tunggal",
          "created_at": "2026-05-20T06:28:43.000000Z"
        },
        {
          "id": "019df0bc-1af2-73bf-a1dd-fd0cd702ec92",
          "nama_wla": "Briefing Tim",
          "jenis_wla": "H",
          "jenis_target": "Durasi",
          "nilai_target": "30",
          "durasi_menit": 30,
          "frekuensi": 1,
          "denda": null,
          "tipe_pelaporan": "rincian",
          "created_at": "2026-05-20T07:00:00.000000Z"
        }
      ]
    },
    {
      "id": "019df0bc-1b57-73b7-afdb-5bc165142d9a",
      "nama_karyawan": "Budi",
      "jabatan": "Staff Backend",
      "level_posisi": 2,
      "total_wla": 1,
      "is_self": false,
      "wla_list": [
        {
          "id": "019df0bc-1af2-73bf-a1dd-fd0cd702ec99",
          "nama_wla": "Daily Report",
          "jenis_wla": "H",
          "jenis_target": "Jumlah",
          "nilai_target": "1",
          "durasi_menit": 15,
          "frekuensi": 1,
          "denda": 10000,
          "tipe_pelaporan": "tunggal",
          "created_at": "2026-05-20T08:00:00.000000Z"
        }
      ]
    }
  ]
}

---
 

Example response (404):


{
    "status": false,
    "message": "Struktur organisasi tidak ditemukan untuk karyawan ini",
    "debug": {
        "user_id": 1,
        "id_karyawan": "EMP001"
    }
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Something went wrong"
}
 

Request      

GET api/work_load_analysis/my/team

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

pageNumber   integer  optional    

Optional. Nomor halaman. Default: 1. Example: 1

pageSize   integer  optional    

Optional. Jumlah data per halaman. Default: 10. Example: 10

nama_karyawan   string  optional    

Optional. Filter berdasarkan nama karyawan (LIKE). Example: admin

jabatan   string  optional    

Optional. Filter berdasarkan nama jabatan (LIKE). Example: programmer

level_posisi   integer  optional    

Optional. Filter berdasarkan level posisi. Example: 2

jenis_wla   string  optional    

Optional. Filter jenis WLA. Available:

  • H = Harian
  • M = Mingguan
  • B = Bulanan
  • T = Target Example: H
jenis_target   string  optional    

Optional. Filter jenis target. Available:

  • Waktu
  • Tanggal
  • Hari
  • Durasi
  • Jumlah Example: Waktu
tipe_pelaporan   string  optional    

Optional. Filter tipe pelaporan. Available:

  • tunggal
  • rincian Example: rincian
is_active   boolean  optional    

Optional. Filter status aktif WLA. Example: true

sortBy   string  optional    

Optional. Field untuk sorting. Available:

  • created_at
  • level_posisi Default: created_at Example: architecto
sortDir   string  optional    

Optional. Arah sorting. Available:

  • asc
  • desc Default: desc Example: `asc

Note:

  • Filter WLA digunakan untuk menentukan data struktur organisasi yang tampil.
  • Relasi wla_list tetap menampilkan seluruh data WLA yang dimiliki struktur organisasi tersebut.
  • total_wla menampilkan total seluruh WLA tanpa mengikuti filter query WLA.`

Get WLA Result Calculation

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/work_load_analysis/result/{karyawanId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

karyawanId   string     

Example: architecto

Meeting Management

Tampilkan Daftar Meeting (Beserta Peserta)

requires authentication

Endpoint ini digunakan untuk mengambil daftar meeting berdasarkan user yang sedang login. Endpoint ini mendukung pencarian, pagination, dan filter berdasarkan status baca (read/unread) atau draft. Hasil pencarian sudah mencakup detail masing-masing peserta di dalam setiap meeting.

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/meetings?search=Evaluasi&per_page=10&page=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/meetings"
);

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/meetings

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

optional Kata kunci pencarian (berdasarkan no. meeting, perihal, atau tempat). Example: Evaluasi

per_page   integer  optional    

optional Jumlah data yang ditampilkan per halaman (Default: 10). Example: 10

page   integer  optional    

optional Nomor halaman pagination. Example: 1

Buat Meeting Baru

requires authentication

Endpoint ini digunakan untuk membuat jadwal meeting baru beserta daftar peserta dan topik pembahasan (task) yang dihasilkan dari rapat tersebut.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/meetings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id\": \"architecto\",
    \"tanggal\": \"2026-06-06T10:08:29\",
    \"jam_mulai\": \"09:00\",
    \"jam_selesai\": \"11:00\",
    \"tempat\": \"Ruang Rapat Direksi Lt. 3\",
    \"mode_meeting\": \"hybrid (online\\/offline)\",
    \"perihal_meeting\": \"Review Sprint Backlog One Dashboard\",
    \"jenis_meeting\": \"reguler meeting\",
    \"catatan_tambahan\": \"Harap menyiapkan laporan progress masing-masing.\",
    \"status\": \"selesai\\n* @bodyParam peserta object[] required Array daftar peserta meeting. Minimal 1 peserta.\",
    \"peserta\": [
        {
            \"id\": \"architecto\",
            \"nik_karyawan\": \"FRP - 4611\",
            \"status_kehadiran\": \"offline\\n* @bodyParam pembahasan object[] Array daftar topik pembahasan atau task tambahan yang dihasilkan.\"
        }
    ],
    \"pembahasan\": [
        {
            \"id\": \"architecto\",
            \"pembahasan\": \"Sinkronisasi skema 24\",
            \"nik_pengajuan\": \"FRP - 4544\",
            \"nik_pic\": [
                \"FRP - 4563\",
                \"FRP - 4611\"
            ],
            \"target_waktu\": \"2026-06-16 17:00:00\",
            \"personil\": \"Butuh 2 backend engineer\",
            \"budget\": \"0\",
            \"denda\": \"150000\",
            \"keterangan\": \"Sangat mendesak\\n* @response 201 {\\n\\\"status\\\": \\\"success\\\",\\n\\\"message\\\": \\\"Meeting berhasil disimpan. Pelaporan tugas dilakukan secara terpisah.\\\",\\n\\\"data\\\": {\\n\\\"id\\\": \\\"52172594-3638-4b52-a672-6789ebc95f01\\\",\\n\\\"no_meeting\\\": \\\"MTG-20260615-001\\\",\\n\\\"tanggal\\\": \\\"2026-06-15\\\",\\n\\\"jam_mulai\\\": \\\"09:00:00\\\",\\n\\\"jam_selesai\\\": \\\"11:00:00\\\",\\n\\\"tempat\\\": \\\"Ruang Rapat Direksi Lt. 3\\\",\\n\\\"mode_meeting\\\": \\\"hybrid (online\\/offline)\\\",\\n\\\"perihal_meeting\\\": \\\"Review Sprint Backlog One Dashboard\\\",\\n\\\"jenis_meeting\\\": \\\"reguler meeting\\\",\\n\\\"judul_rapat\\\": null,\\n\\\"status\\\": \\\"selesai\\\",\\n\\\"peserta\\\": [\\n{\\n\\\"id\\\": \\\"abc123xx-...\\\",\\n\\\"nik\\\": \\\"FRP - 4611\\\",\\n\\\"nama_lengkap\\\": \\\"Nama Karyawan\\\",\\n\\\"status_kehadiran\\\": \\\"offline\\\",\\n\\\"is_read\\\": false\\n}\\n],\\n\\\"pembahasan\\\": [\\n{\\n\\\"id\\\": \\\"def456yy-...\\\",\\n\\\"pembahasan\\\": \\\"Sinkronisasi skema 24\\\",\\n\\\"jenis_tugas\\\": \\\"tambahan\\\",\\n\\\"target_waktu\\\": \\\"2026-06-16 17:00:00\\\",\\n\\\"status_tugas\\\": \\\"tambahan\\\",\\n\\\"denda\\\": \\\"150000\\\",\\n\\\"pic_details\\\": [\\n\\\"FRP - 4563\\\",\\n\\\"FRP - 4611\\\"\\n],\\n\\\"pengaju\\\": {\\n\\\"nik\\\": \\\"FRP - 4544\\\",\\n\\\"nama_lengkap\\\": \\\"Nama Karyawan Pengaju\\\"\\n}\\n}\\n]\\n}\\n}\\n* @response 422 {\\n\\\"message\\\": \\\"The given data was invalid.\\\",\\n\\\"errors\\\": {\\n\\\"peserta.0.nik_karyawan\\\": [\\n\\\"The selected peserta.0.nik_karyawan is invalid.\\\"\\n]\\n}\\n}\\n* @response 500 {\\n\\\"status\\\": \\\"error\\\",\\n\\\"message\\\": \\\"Gagal menyimpan meeting: Pesan error internal server\\\"\\n}\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/meetings"
);

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

let body = {
    "id": "architecto",
    "tanggal": "2026-06-06T10:08:29",
    "jam_mulai": "09:00",
    "jam_selesai": "11:00",
    "tempat": "Ruang Rapat Direksi Lt. 3",
    "mode_meeting": "hybrid (online\/offline)",
    "perihal_meeting": "Review Sprint Backlog One Dashboard",
    "jenis_meeting": "reguler meeting",
    "catatan_tambahan": "Harap menyiapkan laporan progress masing-masing.",
    "status": "selesai\n* @bodyParam peserta object[] required Array daftar peserta meeting. Minimal 1 peserta.",
    "peserta": [
        {
            "id": "architecto",
            "nik_karyawan": "FRP - 4611",
            "status_kehadiran": "offline\n* @bodyParam pembahasan object[] Array daftar topik pembahasan atau task tambahan yang dihasilkan."
        }
    ],
    "pembahasan": [
        {
            "id": "architecto",
            "pembahasan": "Sinkronisasi skema 24",
            "nik_pengajuan": "FRP - 4544",
            "nik_pic": [
                "FRP - 4563",
                "FRP - 4611"
            ],
            "target_waktu": "2026-06-16 17:00:00",
            "personil": "Butuh 2 backend engineer",
            "budget": "0",
            "denda": "150000",
            "keterangan": "Sangat mendesak\n* @response 201 {\n\"status\": \"success\",\n\"message\": \"Meeting berhasil disimpan. Pelaporan tugas dilakukan secara terpisah.\",\n\"data\": {\n\"id\": \"52172594-3638-4b52-a672-6789ebc95f01\",\n\"no_meeting\": \"MTG-20260615-001\",\n\"tanggal\": \"2026-06-15\",\n\"jam_mulai\": \"09:00:00\",\n\"jam_selesai\": \"11:00:00\",\n\"tempat\": \"Ruang Rapat Direksi Lt. 3\",\n\"mode_meeting\": \"hybrid (online\/offline)\",\n\"perihal_meeting\": \"Review Sprint Backlog One Dashboard\",\n\"jenis_meeting\": \"reguler meeting\",\n\"judul_rapat\": null,\n\"status\": \"selesai\",\n\"peserta\": [\n{\n\"id\": \"abc123xx-...\",\n\"nik\": \"FRP - 4611\",\n\"nama_lengkap\": \"Nama Karyawan\",\n\"status_kehadiran\": \"offline\",\n\"is_read\": false\n}\n],\n\"pembahasan\": [\n{\n\"id\": \"def456yy-...\",\n\"pembahasan\": \"Sinkronisasi skema 24\",\n\"jenis_tugas\": \"tambahan\",\n\"target_waktu\": \"2026-06-16 17:00:00\",\n\"status_tugas\": \"tambahan\",\n\"denda\": \"150000\",\n\"pic_details\": [\n\"FRP - 4563\",\n\"FRP - 4611\"\n],\n\"pengaju\": {\n\"nik\": \"FRP - 4544\",\n\"nama_lengkap\": \"Nama Karyawan Pengaju\"\n}\n}\n]\n}\n}\n* @response 422 {\n\"message\": \"The given data was invalid.\",\n\"errors\": {\n\"peserta.0.nik_karyawan\": [\n\"The selected peserta.0.nik_karyawan is invalid.\"\n]\n}\n}\n* @response 500 {\n\"status\": \"error\",\n\"message\": \"Gagal menyimpan meeting: Pesan error internal server\"\n}"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/meetings

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id   string  optional    

Example: architecto

tanggal   string     

Must be a valid date. Example: 2026-06-06T10:08:29

jam_mulai   string     

Waktu mulai meeting (Format: HH:mm). Example: 09:00

jam_selesai   string  optional    

Waktu selesai meeting (Format: HH:mm). Harus setelah jam_mulai. Example: 11:00

tempat   string     

Lokasi fisik atau link ruang virtual meeting. Max: 255 karakter. Example: Ruang Rapat Direksi Lt. 3

mode_meeting   string     

Mode pelaksanaan meeting. Valid: online, offline, hybrid (online/offline). Example: hybrid (online/offline)

perihal_meeting   string     

Judul, perihal, atau agenda utama meeting. Example: Review Sprint Backlog One Dashboard

jenis_meeting   string     

Kategori meeting. Valid: reguler meeting, periodic meeting, routine meeting. Example: reguler meeting

catatan_tambahan   string  optional    

Catatan tambahan untuk meeting. Example: Harap menyiapkan laporan progress masing-masing.

status   string     

Status meeting saat dibuat. Valid: selesai, draft. Example: `selesai

  • @bodyParam peserta object[] required Array daftar peserta meeting. Minimal 1 peserta.`
peserta   object[]     

Must have at least 1 items.

id   string  optional    

Example: architecto

nik_karyawan   string     

NIK karyawan yang menjadi peserta (Harus terdaftar di tabel karyawan). Example: FRP - 4611

status_kehadiran   string     

Status kehadiran peserta. Valid: online, offline. Example: `offline

  • @bodyParam pembahasan object[] Array daftar topik pembahasan atau task tambahan yang dihasilkan.`
pembahasan   object[]  optional    
id   string  optional    

Example: architecto

pembahasan   string     

Topik atau nama task pembahasan. Example: Sinkronisasi skema 24

nik_pengajuan   string     

NIK karyawan yang mengajukan atau memimpin task (Harus terdaftar di tabel karyawan). Example: FRP - 4544

nik_pic   string[]     

Array berisi NIK karyawan yang ditunjuk sebagai PIC task.

target_waktu   date  optional    

Target batas waktu penyelesaian task. Example: 2026-06-16 17:00:00

personil   string  optional    

Kebutuhan spesifik personil untuk task. Example: Butuh 2 backend engineer

budget   string  optional    

Anggaran yang dialokasikan untuk task. Example: 0

denda   string  optional    

Nominal denda jika task terlambat diselesaikan. Example: 150000

keterangan   string  optional    

Keterangan tambahan untuk task tersebut. Example: `Sangat mendesak

  • @response 201 { "status": "success", "message": "Meeting berhasil disimpan. Pelaporan tugas dilakukan secara terpisah.", "data": { "id": "52172594-3638-4b52-a672-6789ebc95f01", "no_meeting": "MTG-20260615-001", "tanggal": "2026-06-15", "jam_mulai": "09:00:00", "jam_selesai": "11:00:00", "tempat": "Ruang Rapat Direksi Lt. 3", "mode_meeting": "hybrid (online/offline)", "perihal_meeting": "Review Sprint Backlog One Dashboard", "jenis_meeting": "reguler meeting", "judul_rapat": null, "status": "selesai", "peserta": [ { "id": "abc123xx-...", "nik": "FRP - 4611", "nama_lengkap": "Nama Karyawan", "status_kehadiran": "offline", "is_read": false } ], "pembahasan": [ { "id": "def456yy-...", "pembahasan": "Sinkronisasi skema 24", "jenis_tugas": "tambahan", "target_waktu": "2026-06-16 17:00:00", "status_tugas": "tambahan", "denda": "150000", "pic_details": [ "FRP - 4563", "FRP - 4611" ], "pengaju": { "nik": "FRP - 4544", "nama_lengkap": "Nama Karyawan Pengaju" } } ] } }
  • @response 422 { "message": "The given data was invalid.", "errors": { "peserta.0.nik_karyawan": [ "The selected peserta.0.nik_karyawan is invalid." ] } }
  • @response 500 { "status": "error", "message": "Gagal menyimpan meeting: Pesan error internal server" }`

Buat Meeting Baru

requires authentication

Endpoint ini digunakan untuk membuat jadwal meeting baru beserta daftar peserta dan topik pembahasan (task) yang dihasilkan dari rapat tersebut.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/meetings/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"tanggal\": \"2026-06-06T10:08:29\",
    \"jam_mulai\": \"09:00\",
    \"jam_selesai\": \"11:00\",
    \"tempat\": \"Ruang Rapat Direksi Lt. 3\",
    \"mode_meeting\": \"hybrid (online\\/offline)\",
    \"perihal_meeting\": \"Review Sprint Backlog One Dashboard\",
    \"jenis_meeting\": \"reguler meeting\",
    \"catatan_tambahan\": \"Harap menyiapkan laporan progress masing-masing.\",
    \"status\": \"selesai\\n* @bodyParam peserta object[] required Array daftar peserta meeting. Minimal 1 peserta.\",
    \"peserta\": [
        {
            \"id\": \"architecto\",
            \"nik_karyawan\": \"FRP - 4611\",
            \"status_kehadiran\": \"offline\\n* @bodyParam pembahasan object[] Array daftar topik pembahasan atau task tambahan yang dihasilkan.\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/meetings/architecto"
);

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

let body = {
    "tanggal": "2026-06-06T10:08:29",
    "jam_mulai": "09:00",
    "jam_selesai": "11:00",
    "tempat": "Ruang Rapat Direksi Lt. 3",
    "mode_meeting": "hybrid (online\/offline)",
    "perihal_meeting": "Review Sprint Backlog One Dashboard",
    "jenis_meeting": "reguler meeting",
    "catatan_tambahan": "Harap menyiapkan laporan progress masing-masing.",
    "status": "selesai\n* @bodyParam peserta object[] required Array daftar peserta meeting. Minimal 1 peserta.",
    "peserta": [
        {
            "id": "architecto",
            "nik_karyawan": "FRP - 4611",
            "status_kehadiran": "offline\n* @bodyParam pembahasan object[] Array daftar topik pembahasan atau task tambahan yang dihasilkan."
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/meetings/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the meeting. Example: architecto

Body Parameters

tanggal   string  optional    

Must be a valid date. Example: 2026-06-06T10:08:29

jam_mulai   string     

Waktu mulai meeting (Format: HH:mm). Example: 09:00

jam_selesai   string  optional    

Waktu selesai meeting (Format: HH:mm). Harus setelah jam_mulai. Example: 11:00

tempat   string     

Lokasi fisik atau link ruang virtual meeting. Max: 255 karakter. Example: Ruang Rapat Direksi Lt. 3

mode_meeting   string     

Mode pelaksanaan meeting. Valid: online, offline, hybrid (online/offline). Example: hybrid (online/offline)

perihal_meeting   string     

Judul, perihal, atau agenda utama meeting. Example: Review Sprint Backlog One Dashboard

jenis_meeting   string     

Kategori meeting. Valid: reguler meeting, periodic meeting, routine meeting. Example: reguler meeting

catatan_tambahan   string  optional    

Catatan tambahan untuk meeting. Example: Harap menyiapkan laporan progress masing-masing.

status   string     

Status meeting saat dibuat. Valid: selesai, draft. Example: `selesai

  • @bodyParam peserta object[] required Array daftar peserta meeting. Minimal 1 peserta.`
peserta   object[]  optional    
id   string  optional    

Example: architecto

nik_karyawan   string     

NIK karyawan yang menjadi peserta (Harus terdaftar di tabel karyawan). Example: FRP - 4611

status_kehadiran   string     

Status kehadiran peserta. Valid: online, offline. Example: `offline

  • @bodyParam pembahasan object[] Array daftar topik pembahasan atau task tambahan yang dihasilkan.`
pembahasan   object  optional    
pembahasan   string     

Topik atau nama task pembahasan. Example: Sinkronisasi skema 24

nik_pengajuan   string     

NIK karyawan yang mengajukan atau memimpin task (Harus terdaftar di tabel karyawan). Example: FRP - 4544

nik_pic   string[]     

Array berisi NIK karyawan yang ditunjuk sebagai PIC task.

target_waktu   date  optional    

Target batas waktu penyelesaian task. Example: 2026-06-16 17:00:00

personil   string  optional    

Kebutuhan spesifik personil untuk task. Example: Butuh 2 backend engineer

budget   string  optional    

Anggaran yang dialokasikan untuk task. Example: 0

denda   string  optional    

Nominal denda jika task terlambat diselesaikan. Example: 150000

keterangan   string  optional    

Keterangan tambahan untuk task tersebut. Example: `Sangat mendesak

  • @response 201 { "status": "success", "message": "Meeting berhasil disimpan. Pelaporan tugas dilakukan secara terpisah.", "data": { "id": "52172594-3638-4b52-a672-6789ebc95f01", "no_meeting": "MTG-20260615-001", "tanggal": "2026-06-15", "jam_mulai": "09:00:00", "jam_selesai": "11:00:00", "tempat": "Ruang Rapat Direksi Lt. 3", "mode_meeting": "hybrid (online/offline)", "perihal_meeting": "Review Sprint Backlog One Dashboard", "jenis_meeting": "reguler meeting", "judul_rapat": null, "status": "selesai", "peserta": [ { "id": "abc123xx-...", "nik": "FRP - 4611", "nama_lengkap": "Nama Karyawan", "status_kehadiran": "offline", "is_read": false } ], "pembahasan": [ { "id": "def456yy-...", "pembahasan": "Sinkronisasi skema 24", "jenis_tugas": "tambahan", "target_waktu": "2026-06-16 17:00:00", "status_tugas": "tambahan", "denda": "150000", "pic_details": [ "FRP - 4563", "FRP - 4611" ], "pengaju": { "nik": "FRP - 4544", "nama_lengkap": "Nama Karyawan Pengaju" } } ] } }
  • @response 422 { "message": "The given data was invalid.", "errors": { "peserta.0.nik_karyawan": [ "The selected peserta.0.nik_karyawan is invalid." ] } }
  • @response 500 { "status": "error", "message": "Gagal menyimpan meeting: Pesan error internal server" }`

DELETE api/meetings/{id}

requires authentication

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": "success",
    "message": "Data meeting berhasil dihapus"
}
 

Example response (404):


{
    "message": "Data meeting tidak ditemukan"
}
 

Request      

DELETE api/meetings/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

UUID dari data meeting yang ingin dihapus. Example: architecto

POST api/meetings/{id}/pembahasan

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/meetings/architecto/pembahasan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data_pembahasan\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/meetings/architecto/pembahasan"
);

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

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

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


[
    {
        "id": "9394309f-b8fa-466e-8c57-29571f9df7d2",
        "pembahasan": "Optimasi query database modul laporan backend",
        "jenis_tugas": "mingguan",
        "target_waktu": "2026-05-25 17:00:00",
        "status_tugas": "Berjalan",
        "lampiran_urls": [
            "http://localhost:8000/storage/meeting/bukti_kerja.pdf"
        ],
        "pic_details": [
            {
                "nik": "FRP - 4632",
                "nama_lengkap": "EKIN ADHI GUNA"
            }
        ],
        "pengaju": {
            "nik": "FRP - 4291",
            "nama_lengkap": "NADYA INGRIDA BRAHMANA"
        }
    }
]
 

Example response (404):


{
    "message": "Data meeting tidak ditemukan"
}
 

Request      

POST api/meetings/{id}/pembahasan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the meeting. Example: architecto

id_meeting   string     

UUID Meeting induk. Example: 1c2c92a2-d89a-4544-9e09-466c606c055b

Body Parameters

data_pembahasan   string[]     

Array pembungkus baris notulen.

id   string  optional    

optional Nullable. Diisi UUID lama jika skenario UPDATE, kosongkan/null jika baris baru (CREATE). Example: 9394309f-b8fa-466e-8c57-29571f9df7d2

pembahasan   string     

Isi detail poin hasil rapat/tugas. Example: Optimasi query database modul laporan backend

nik_pengajuan   string     

NIK user pembuat instruksi tugas. Example: FRP - 4291

nik_pic   string[]     

Array berisi daftar NIK karyawan yang ditunjuk sebagai pelaksana tugas.

target_waktu   datetime  optional    

optional Deadline penyelesaian tugas (YYYY-MM-DD HH:mm:ss). Example: 2026-05-25 17:00:00

personil   string  optional    

Example: architecto

budget   string  optional    

Example: architecto

denda   string  optional    

Example: architecto

keterangan   string  optional    

Example: architecto

jenis_tugas   string     

Siklus pengulangan tugas (harian, mingguan, bulanan, tahunan). Example: mingguan

realisasi_waktu   datetime  optional    

optional Tanggal nyata tugas diselesaikan (Nullable). Example: 2026-05-20 15:00:00

kebutuhan   string[]  optional    

optional Kebutuhan pendukung (alat, personil, budget).

lampiran_dokumen   string[]  optional    

optional Berkas bukti kerja. Bisa diisi File Fisik baru (Max 5MB per file: pdf, png, jpg, doc, xls) atau Teks String Path lama.

POST api/meetings/karyawan/list

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/meetings/karyawan/list" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"Doni\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/meetings/karyawan/list"
);

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

let body = {
    "search": "Doni"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": "success",
    "data": [
        {
            "nik": "FRP - 0798",
            "nama_lengkap": "JAY ZENHAR"
        },
        {
            "nik": "FRP - 1381",
            "nama_lengkap": "DONI"
        },
        {
            "nik": "FRP - 3565",
            "nama_lengkap": "ARZA CAR WASH"
        }
    ]
}
 

Request      

POST api/meetings/karyawan/list

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

search   string  optional    

optional Keyword pencarian berdasarkan NIK atau Nama Lengkap. Example: Doni

Peforma Karyawan

Request Parameters:

Peforma Karyawan

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/peforma-karyawan?pageNumber=16&pageSize=16&dateStart=architecto&dateEnd=architecto&sorts[]=architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/peforma-karyawan"
);

const params = {
    "pageNumber": "16",
    "pageSize": "16",
    "dateStart": "architecto",
    "dateEnd": "architecto",
    "sorts[0]": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 100,
        "lastPage": 10,
        "periode_aktif": {
            "start": "2025-01-01 00:00:00",
            "end": "2025-01-31 23:59:59"
        }
    },
    "data": [
        {
            "id_struktur_organisasi": 1,
            "id_karyawan": 10,
            "nama_lengkap": "John Doe",
            "nik": "EMP001",
            "nama_jabatan": "Supervisor",
            "nama_lokasi": "Head Office",
            "total_durasi_karyawan": 1200,
            "total_durasi_per_bulan": 600,
            "total_durasi_per_hari": 30,
            "nilai_tugas": 85.5,
            "nilai_kompetensi": 88.3,
            "wla": [],
            "rekap_harian_tabel": {},
            "kompetensi": []
        }
    ]
}
 

Example response (500):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "Error message"
}
 

Request      

GET api/peforma-karyawan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

pageNumber   integer  optional    

Optional. Page number. Default: 1. Example: 16

pageSize   integer  optional    

Optional. Number of records per page. Default: 10. Example: 16

dateStart   string  optional    

Optional. Start date filter (Y-m-d or datetime). Example: architecto

dateEnd   string  optional    

Optional. End date filter (Y-m-d or datetime). Example: architecto

sorts   string[]  optional    

Optional. Sorting configuration.

sorts[].field   string  optional    

Allowed values: id, id_karyawan, created_at, updated_at. Example: architecto

sorts[].direction   string  optional    

Allowed values: asc, desc. Example: architecto

PerusahaanLokasi Management

List Perusahaan Lokasi

requires authentication

API untuk menampilkan daftar perusahaan lokasi dengan pagination.

Body Params:

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 1,
        "total": 1,
        "lastPage": 1
    },
    "data": [
        {
            "id": 1,
            "idPerusahaan": 1,
            "namaPerusahaan": "PT Maju Jaya",
            "namaLokasi": "Kantor Pusat",
            "kota": "Jakarta",
            "createdAt": "2026-04-14T00:00:00.000000Z",
            "updatedAt": "2026-04-14T00:00:00.000000Z"
        }
    ]
}
 

Request      

GET api/perusahaan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

requires authentication

API untuk menampilkan daftar perusahaan lokasi dengan pagination.

Body Params:

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 1,
        "total": 1,
        "lastPage": 1
    },
    "data": [
        {
            "id": 1,
            "idPerusahaan": 1,
            "namaPerusahaan": "PT Maju Jaya",
            "namaLokasi": "Kantor Pusat",
            "kota": "Jakarta",
            "createdAt": "2026-04-14T00:00:00.000000Z",
            "updatedAt": "2026-04-14T00:00:00.000000Z"
        }
    ]
}
 

Perusahaan Management

List Perusahaan Lokasi

requires authentication

API untuk menampilkan daftar lokasi perusahaan dengan pagination.

Endpoint ini menampilkan relasi perusahaan.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "nama_perusahaan": "PT Maju Jaya",
            "nama_lokasi": "Kantor Pusat",
            "kota": "Jakarta"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1
    }
}
 

Request      

GET api/perusahaan/lokasi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Store Perusahaan

requires authentication

API untuk membuat data perusahaan baru.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/perusahaan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nama_perusahaan\": \"PT Maju Jaya\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/perusahaan"
);

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

let body = {
    "nama_perusahaan": "PT Maju Jaya"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "data": {
        "id": 1,
        "nama_perusahaan": "PT Maju Jaya"
    }
}
 

Example response (422):


{
    "status": false,
    "message": {
        "nama_perusahaan": [
            "The nama perusahaan field is required."
        ]
    }
}
 

Request      

POST api/perusahaan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

nama_perusahaan   string     
  • Nama perusahaan. Example: PT Maju Jaya

Get Perusahaan By ID

requires authentication

API untuk menampilkan detail perusahaan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "nama_perusahaan": "PT Maju Jaya"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Perusahaan not found"
}
 

Request      

GET api/perusahaan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID perusahaan. Example: 1

Update Perusahaan

requires authentication

API untuk memperbarui data perusahaan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/perusahaan/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nama_perusahaan\": \"PT Maju Jaya\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/perusahaan/1"
);

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

let body = {
    "nama_perusahaan": "PT Maju Jaya"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Perusahaan updated successfully",
    "data": {
        "id": 1,
        "nama_perusahaan": "PT Maju Jaya"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Perusahaan not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "nama_perusahaan": [
            "The nama perusahaan field is required."
        ]
    }
}
 

Request      

PUT api/perusahaan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID perusahaan yang akan diupdate. Example: 1

Body Parameters

nama_perusahaan   string     
  • Nama perusahaan. Example: PT Maju Jaya

Delete Perusahaan

requires authentication

API untuk menghapus data perusahaan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Perusahaan deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Perusahaan not found"
}
 

Request      

DELETE api/perusahaan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID perusahaan yang akan dihapus. Example: 1

Store Perusahaan Lokasi

requires authentication

API untuk membuat data lokasi perusahaan baru.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/perusahaan/lokasi" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_perusahaan\": 1,
    \"nama_lokasi\": \"Kantor Pusat\",
    \"kota\": \"Jakarta\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/perusahaan/lokasi"
);

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

let body = {
    "id_perusahaan": 1,
    "nama_lokasi": "Kantor Pusat",
    "kota": "Jakarta"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "data": {
        "id": 1,
        "id_perusahaan": 1,
        "nama_lokasi": "Kantor Pusat",
        "kota": "Jakarta"
    }
}
 

Example response (422):


{
    "status": false,
    "message": {
        "id_perusahaan": [
            "The id perusahaan field is required."
        ]
    }
}
 

Request      

POST api/perusahaan/lokasi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_perusahaan   integer     
  • ID perusahaan. Example: 1
nama_lokasi   string     
  • Nama lokasi perusahaan. Example: Kantor Pusat
kota   string     
  • Nama kota. Example: Jakarta

Get Perusahaan Lokasi By ID

requires authentication

API untuk menampilkan detail lokasi perusahaan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "id": 1,
        "nama_perusahaan": "PT Maju Jaya",
        "nama_lokasi": "Kantor Pusat",
        "kota": "Jakarta"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Perusahaan Lokasi not found"
}
 

Request      

GET api/perusahaan/lokasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID lokasi perusahaan. Example: 1

requires authentication

API untuk menampilkan daftar lokasi perusahaan dengan pagination.

Endpoint ini menampilkan relasi perusahaan.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/perusahaan/lokasi/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/perusahaan/lokasi/search"
);

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "id": 1,
            "nama_perusahaan": "PT Maju Jaya",
            "nama_lokasi": "Kantor Pusat",
            "kota": "Jakarta"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1
    }
}
 

Update Perusahaan Lokasi

requires authentication

API untuk memperbarui data lokasi perusahaan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/perusahaan/lokasi/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_perusahaan\": 1,
    \"nama_lokasi\": \"Kantor Pusat\",
    \"kota\": \"Jakarta\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/perusahaan/lokasi/1"
);

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

let body = {
    "id_perusahaan": 1,
    "nama_lokasi": "Kantor Pusat",
    "kota": "Jakarta"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Perusahaan lokasi updated successfully",
    "data": {
        "id": 1,
        "id_perusahaan": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Perusahaan Lokasi not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_perusahaan": [
            "The id perusahaan field is required."
        ]
    }
}
 

Request      

PUT api/perusahaan/lokasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID lokasi perusahaan yang akan diupdate. Example: 1

Body Parameters

id_perusahaan   integer     
  • ID perusahaan. Example: 1
nama_lokasi   string     
  • Nama lokasi perusahaan. Example: Kantor Pusat
kota   string     
  • Nama kota. Example: Jakarta

Delete Perusahaan Lokasi

requires authentication

API untuk menghapus data lokasi perusahaan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/perusahaan/lokasi/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/perusahaan/lokasi/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Perusahaan lokasi deleted successfully"
}
 

Example response (404):


{
    "status": false,
    "message": "Perusahaan lokasi not found"
}
 

Request      

DELETE api/perusahaan/lokasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID lokasi perusahaan yang akan dihapus. Example: 1

Product Management

Get a list of products.

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/product" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        {
            \"field\": \"title\",
            \"operator\": \"contains\",
            \"value\": \"Laptop\"
        }
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"2026-04-04T17:00:00.000Z\",
    \"dateEnd\": \"2026-04-05T17:00:00.000Z\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/product"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        {
            "field": "title",
            "operator": "contains",
            "value": "Laptop"
        }
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "2026-04-04T17:00:00.000Z",
    "dateEnd": "2026-04-05T17:00:00.000Z"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 50,
        "lastPage": 5
    },
    "data": [
        {
            "id": 1,
            "title": "Laptop Gaming",
            "category": "Elektronik",
            "price": 15000000,
            "img": "https://example.com/laptop.jpg",
            "desc": "Laptop gaming dengan spesifikasi tinggi."
        },
        {
            "id": 2,
            "title": "Smartphone",
            "category": "Elektronik",
            "price": 5000000,
            "img": "https://example.com/smartphone.jpg",
            "desc": "Smartphone terbaru dengan fitur canggih."
        }
    ]
}
 

Request      

GET api/product

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

Example: 1

pageSize   integer  optional    

Example: 10

filters   string[]  optional    

of object

field   string  optional    

Required. Field to filter (id, title, category). Example: title

operator   string  optional    

Required. (contains, eq, neq, gt, lt). Example: contains

value   mixed  optional    

Required. Value to filter. Example: Elektronik

sorts   string[]  optional    

List of sorts.

field   string  optional    

Required. Field to sort. Example: title

direction   string  optional    

Required. (asc, desc). Example: desc

dateStart   string  optional    

Optional. Start date for filtering (ISO 8601 format, UTC). Example: 2026-04-04T17:00:00.000Z

dateEnd   string  optional    

Optional. End date for filtering (ISO 8601 format, UTC). Example: 2026-04-05T17:00:00.000Z

Create a new Product in storage.

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/product" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Laptop Gaming\",
    \"categoryId\": 1,
    \"price\": 15000000,
    \"img\": \"https:\\/\\/example.com\\/laptop.jpg\",
    \"desc\": \"Laptop gaming dengan spesifikasi tinggi.\\nStore a newly created resource in storage.\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/product"
);

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

let body = {
    "title": "Laptop Gaming",
    "categoryId": 1,
    "price": 15000000,
    "img": "https:\/\/example.com\/laptop.jpg",
    "desc": "Laptop gaming dengan spesifikasi tinggi.\nStore a newly created resource in storage."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/product

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

title   string     

Example: Laptop Gaming

categoryId   integer     

Example: 1

price   integer     

Example: 15000000

img   string  optional    

Example: https://example.com/laptop.jpg

desc   string  optional    

Example: Laptop gaming dengan spesifikasi tinggi. Store a newly created resource in storage.

Get the specified Product.

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "data": {
        "id": 1,
        "title": "Laptop Gaming",
        "categoryId": "Elektronik",
        "price": 15000000,
        "img": "https://example.com/laptop.jpg",
        "desc": "Laptop gaming dengan spesifikasi tinggi."
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Product not found"
}
 

Request      

GET api/product/{id}

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the product. Example: 1

Update the specified Product in storage.

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/product/1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Laptop Gaming Updated\",
    \"categoryId\": 2,
    \"price\": 14000000,
    \"img\": \"https:\\/\\/example.com\\/laptop-updated.jpg\",
    \"desc\": \"Updated description here.\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/product/1"
);

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

let body = {
    "title": "Laptop Gaming Updated",
    "categoryId": 2,
    "price": 14000000,
    "img": "https:\/\/example.com\/laptop-updated.jpg",
    "desc": "Updated description here."
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully updated"
}
 

Example response (404):


{
    "status": false,
    "message": "Product not found"
}
 

Request      

PUT api/product/{id}

PATCH api/product/{id}

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the product. Example: 1

Body Parameters

title   string  optional    

Example: Laptop Gaming Updated

categoryId   integer  optional    

Example: 2

price   integer  optional    

Example: 14000000

img   string  optional    

Example: https://example.com/laptop-updated.jpg

desc   string  optional    

Example: Updated description here.

Remove the specified Product from storage.

requires authentication

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully deleted"
}
 

Example response (404):


{
    "status": false,
    "message": "Product not found"
}
 

Request      

DELETE api/product/{id}

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the product. Example: 1

Realisasi WLA

Menyimpan data realisasi WLA berdasarkan master WLA yang dipilih. Field yang wajib dikirim (required) akan berubah dinamis tergantung pada jenis_target dari master_wla tersebut (Waktu, Hari Deadline, Jumlah, Durasi, dsb).

Index History Realisasi WLA

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/work_load_analysis/my/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Rata-rata score per WLA (untuk grafik di dashboard)

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/my/score" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/my/score"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/work_load_analysis/my/score

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get Task by User ID

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/1/tasks?date=2026-05-01&mode=next" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/1/tasks"
);

const params = {
    "date": "2026-05-01",
    "mode": "next",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data Task berhasil diambil",
    "filter_date": "2026-05-01",
    "next_date": "2026-05-02",
    "prev_date": "2026-04-30",
    "total_task": 5,
    "total_completed_tasks": 3,
    "data": [
        {
            "id": "uuid-master-wla",
            "nama_wla": "Input Data Harian",
            "realisasi_wla": [
                {
                    "id": "uuid-realisasi",
                    "tanggal_kegiatan": "2026-05-01",
                    "status_item": "rejected",
                    "is_rejected": true,
                    "total_durasi": 120,
                    "aktual_capaian": 5,
                    "lampiran": [],
                    "detail": []
                }
            ]
        }
    ]
}
 

Example response (404):


{
    "status": false,
    "message": "Data user tidak lengkap"
}
 

Example response (500):


{
    "status": false,
    "message": "Terjadi kesalahan pada server"
}
 

Request      

GET api/work_load_analysis/{userId}/tasks

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

userId   integer     

ID User. Example: 1

Query Parameters

date   string  optional    

optional Tanggal filter (format: Y-m-d). Default: hari ini. Example: 2026-05-01

mode   string  optional    

optional Mode navigasi tanggal. Gunakan next atau prev. Example: next

Get Detail WLA by ID

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/work_load_analysis/{wlaId}/user

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

wlaId   string     

Example: architecto

Revision List (tugas yang butuh revisi)

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/realization/revision" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/realization/revision"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/work_load_analysis/realization/revision

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Simpan Realisasi Task (WLA)

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/work_load_analysis/realization" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "id_karyawan=16"\
    --form "id_master_wla=16"\
    --form "action=architecto"\
    --form "total_durasi=16"\
    --form "aktual_capaian=architecto"\
    --form "realisasi_mulai=architecto"\
    --form "realisasi_selesai=architecto"\
    --form "details[]=architecto"\
    --form "files[]=@C:\Users\DC03\AppData\Local\Temp\phpF2FC.tmp" 
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/realization"
);

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

const body = new FormData();
body.append('id_karyawan', '16');
body.append('id_master_wla', '16');
body.append('action', 'architecto');
body.append('total_durasi', '16');
body.append('aktual_capaian', 'architecto');
body.append('realisasi_mulai', 'architecto');
body.append('realisasi_selesai', 'architecto');
body.append('details[]', 'architecto');
body.append('files[]', document.querySelector('input[name="files[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Example response (200):


{
"status": true,
"message": "Data Task berhasil disimpan",
"data": { ... }
}
 

Example response (404):


{
    "status": false,
    "message": "WLA tidak ditemukan"
}
 

Example response (422):


{
    "status": false,
    "message": "Masih ada task yang belum diselesaikan"
}
 

Request      

POST api/work_load_analysis/realization

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     

ID Karyawan yang mengerjakan. Example: 16

id_master_wla   integer     

ID Master WLA yang dirujuk. Example: 16

action   string  optional    

optional Aksi khusus untuk 'Hari Deadline'. Contoh: 'start' atau 'submit'. Example: architecto

total_durasi   integer  optional    

optional Durasi kegiatan (Waktu/Hari Deadline/Durasi). Example: 16

aktual_capaian   string  optional    

optional Capaian kegiatan (Waktu/Hari Deadline/Jumlah). Example: architecto

realisasi_mulai   datetime  optional    

optional Format: Y-m-d H:i:s. (Untuk tipe Durasi). Example: architecto

realisasi_selesai   datetime  optional    

optional Format: Y-m-d H:i:s. (Untuk tipe Durasi). Example: architecto

files   file[]  optional    

optional Lampiran file (array of files) untuk tipe pelaporan 'tunggal'.

details   string[]  optional    

optional Detail kegiatan (array of objects) jika tipe pelaporan 'detail'.

*   object  optional    
deskripsi_kegiatan   string  optional    

optional Deskripsi kegiatan. Example: architecto

waktu_mulai   datetime  optional    

optional Waktu mulai kegiatan. Example: architecto

waktu_selesai   datetime  optional    

optional Waktu selesai kegiatan. Example: architecto

durasi_menit   integer  optional    

optional Durasi dalam menit. Example: 16

capaian_item   integer  optional    

optional Capaian per item. Example: 16

files   file[]  optional    

optional Lampiran file per detail kegiatan.

Update the specified resource in storage.

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/work_load_analysis/realization/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/realization/architecto"
);

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/work_load_analysis/realization/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the realization. Example: architecto

Get list Realisasi WLA

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/workload-realizations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        \"architecto\"
    ],
    \"sorts\": [
        \"architecto\"
    ],
    \"dateStart\": \"architecto\",
    \"dateEnd\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/workload-realizations"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        "architecto"
    ],
    "sorts": [
        "architecto"
    ],
    "dateStart": "architecto",
    "dateEnd": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 50,
        "lastPage": 5
    },
    "data": [
        {
            "id": "uuid",
            "tanggal_kegiatan": "2026-04-20",
            "realisasi_mulai": "2026-04-20 08:00:00",
            "realisasi_selesai": "2026-04-20 09:30:00",
            "aktual_durasi": 90,
            "realiasi_target": "95",
            "status_dokumen": "Draf",
            "current_step": 1,
            "master_wla": {
                "id": "uuid",
                "nama_wla": "Absensi Pagi"
            },
            "karyawan": {
                "id": "uuid",
                "nik": "EMP001",
                "nama_karyawan": "Budi Santoso",
                "jabatan": {
                    "id": "uuid",
                    "nama_jabatan": "Manager"
                }
            },
            "created_at": "2026-04-20T10:00:00.000000Z"
        }
    ]
}
 

Request      

GET api/workload-realizations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

Optional. Nomor halaman. Example: 1

pageSize   integer  optional    

Optional. Jumlah data per halaman. Example: 10

filters   string[]  optional    

Optional. List filter.

field   string  optional    

Required. Field yang difilter: (id, tanggal_kegiatan, realisasi_mulai, realisasi_selesai, aktual_durasi, realiasi_target, status_dokumen, current_step, nama_wla, id_karyawan, nama_karyawan, nama_jabatan) Example: architecto

operator   string  optional    

Required. Operator filter (contains, eq, neq, gt, lt) Example: architecto

value   mixed  optional    

Required. Nilai filter Example: architecto

sorts   string[]  optional    

Optional. List sorting.

field   string  optional    

Required. Field yang di-sort Example: architecto

direction   string  optional    

Required. (asc, desc) Example: architecto

dateStart   string  optional    

Optional. Filter tanggal mulai (ISO 8601) Example: architecto

dateEnd   string  optional    

Optional. Filter tanggal akhir (ISO 8601) Example: architecto

Create Realisasi WLA

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/workload-realizations" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_master_wla\": \"architecto\",
    \"id_karyawan\": \"architecto\",
    \"tanggal_kegiatan\": \"architecto\",
    \"realisasi_mulai\": \"architecto\",
    \"realisasi_selesai\": \"architecto\",
    \"realiasi_target\": \"architecto\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/workload-realizations"
);

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

let body = {
    "id_master_wla": "architecto",
    "id_karyawan": "architecto",
    "tanggal_kegiatan": "architecto",
    "realisasi_mulai": "architecto",
    "realisasi_selesai": "architecto",
    "realiasi_target": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Data realisasi WLA berhasil dibuat",
    "data": {
        "id": "uuid",
        "id_master_wla": "uuid",
        "id_karyawan": "uuid",
        "tanggal_kegiatan": "2026-04-20",
        "realisasi_mulai": "2026-04-20T08:00:00",
        "realisasi_selesai": "2026-04-20T09:00:00",
        "aktual_durasi": 60,
        "realiasi_target": "90",
        "status_dokumen": "Draf",
        "current_step": 1
    }
}
 

Request      

POST api/workload-realizations

Headers

Authorization        

Example: Bearer {access_token}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_master_wla   string     

UUID Master WLA Example: architecto

id_karyawan   string     

UUID Karyawan Example: architecto

tanggal_kegiatan   date     

Tanggal kegiatan (Y-m-d) Example: architecto

realisasi_mulai   datetime     

Waktu mulai (ISO 8601) Example: architecto

realisasi_selesai   datetime     

Waktu selesai (harus setelah mulai) Example: architecto

realiasi_target   string     

Hasil aktual kegiatan Example: architecto

Get detail Realisasi WLA

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/workload-realizations/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/workload-realizations/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "data": {
        "id": "uuid",
        "tanggal_kegiatan": "2026-04-20",
        "realisasi_mulai": "2026-04-20 08:00:00",
        "realisasi_selesai": "2026-04-20 09:30:00",
        "aktual_durasi": 90,
        "realiasi_target": "95",
        "status_dokumen": "Draf",
        "current_step": 1,
        "master_wla": {
            "id": "uuid",
            "nama_wla": "Absensi Pagi"
        },
        "karyawan": {
            "id": "uuid",
            "nik": "EMP001",
            "nama_karyawan": "Budi Santoso",
            "jabatan": {
                "id": "uuid",
                "nama_jabatan": "Manager"
            }
        },
        "created_at": "2026-04-20T10:00:00.000000Z",
        "updated_at": "2026-04-20T10:00:00.000000Z"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

GET api/workload-realizations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Realisasi WLA (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Update Realisasi WLA

requires authentication

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/workload-realizations/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_master_wla\": \"architecto\",
    \"id_karyawan\": \"architecto\",
    \"tanggal_kegiatan\": \"2026-04-20\",
    \"realisasi_mulai\": \"2026-04-20 08:00:00\",
    \"realisasi_selesai\": \"2026-04-20 09:30:00\",
    \"realiasi_target\": \"95\",
    \"status_dokumen\": \"architecto\",
    \"current_step\": 2
}"
const url = new URL(
    "http://10.10.1.109:8000/api/workload-realizations/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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

let body = {
    "id_master_wla": "architecto",
    "id_karyawan": "architecto",
    "tanggal_kegiatan": "2026-04-20",
    "realisasi_mulai": "2026-04-20 08:00:00",
    "realisasi_selesai": "2026-04-20 09:30:00",
    "realiasi_target": "95",
    "status_dokumen": "architecto",
    "current_step": 2
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data realisasi WLA berhasil diupdate",
    "data": {
        "id": "uuid",
        "tanggal_kegiatan": "2026-04-20",
        "realisasi_mulai": "2026-04-20 08:00:00",
        "realisasi_selesai": "2026-04-20 10:00:00",
        "aktual_durasi": 120,
        "realiasi_target": "100",
        "status_dokumen": "Review",
        "current_step": 2,
        "master_wla": {
            "id": "uuid",
            "nama_wla": "Absensi Pagi"
        },
        "karyawan": {
            "id": "uuid",
            "nik": "EMP001",
            "nama_karyawan": "Budi Santoso",
            "jabatan": {
                "id": "uuid",
                "nama_jabatan": "Manager"
            }
        },
        "updated_at": "2026-04-20T10:30:00.000000Z"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Example response (422):


{
    "status": false,
    "message": "Validation error",
    "errors": {
        "realisasi_selesai": [
            "The realisasi selesai must be a date after or equal to realisasi mulai."
        ]
    }
}
 

Request      

PUT api/workload-realizations/{id}

PATCH api/workload-realizations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Realisasi WLA (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Body Parameters

id_master_wla   string  optional    

UUID Optional. ID Master WLA Example: architecto

id_karyawan   string  optional    

UUID Optional. ID Karyawan Example: architecto

tanggal_kegiatan   date  optional    

Optional. Tanggal kegiatan. Example: 2026-04-20

realisasi_mulai   datetime  optional    

Optional. Waktu mulai. Example: 2026-04-20 08:00:00

realisasi_selesai   datetime  optional    

Optional. Waktu selesai. Example: 2026-04-20 09:30:00

realiasi_target   string  optional    

Optional. Nilai realisasi target. Example: 95

status_dokumen   string  optional    

Optional. Status dokumen (Draf, In, Review, Approved, Rejected) Example: architecto

current_step   integer  optional    

Optional. Step approval saat ini (minimal 1). Example: 2

Delete Realisasi WLA

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/workload-realizations/97f653ce-85f2-412e-935c-abb83c4a0959" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/workload-realizations/97f653ce-85f2-412e-935c-abb83c4a0959"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Data realisasi WLA berhasil dihapus"
}
 

Example response (404):


{
    "status": false,
    "message": "Data tidak ditemukan"
}
 

Request      

DELETE api/workload-realizations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID Realisasi WLA (UUID). Example: 97f653ce-85f2-412e-935c-abb83c4a0959

Report

Endpoint ini digunakan untuk mendapatkan laporan gabungan antara:

Data akan digabung dan diringkas per karyawan dalam periode bulan tertentu.


Report WLA & Kompetensi (Per Karyawan)

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/report?bulan=5&tahun=2026&nik=FRP-1001&nama=Ahmad&status=Tetap&bagian=Supervisor%0A%0A---" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/report"
);

const params = {
    "bulan": "5",
    "tahun": "2026",
    "nik": "FRP-1001",
    "nama": "Ahmad",
    "status": "Tetap",
    "bagian": "Supervisor

---",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
  "status": true,
  "message": "Successfully",
  "summary": {
    "total_karyawan": 2,
    "rata_rata_score": 85.25
  },
  "data": [
    {
      "id_karyawan": "uuid",
      "nik": "FRP-1001",
      "nama_lengkap": "Ahmad Rifai",
      "status": "Tetap",
      "bagian": "Supervisor",

      "wla_summary": {
        "total_durasi": 480,
        "rata_rata_durasi": 60,
        "total_kegiatan": 8
      },

      "wla_detail": [
        {
          "nama_tugas": "Input Data",
          "total_durasi": 240,
          "jumlah_kegiatan": 4
        },
        {
          "nama_tugas": "Verifikasi",
          "total_durasi": 240,
          "jumlah_kegiatan": 4
        }
      ],

      "kompetensi": {
        "score": 88.5,
        "status": "final",
        "periode": "Mei 2026"
      },

      "nilai_akhir": 88.5
    }
  ]
  "meta": {
    "current_page": 1,
    "last_page": 1,
    "per_page": 10,
    "total": 2,
    "from": 1,
    "to": 2
    }
}

---
 

Example response (422):


{
    "status": false,
    "message": "Validation error",
    "errors": {
        "bulan": [
            "The bulan field is required."
        ],
        "tahun": [
            "The tahun field is required."
        ]
    }
}
 

Example response (500):


{
    "status": false,
    "message": "Internal server error",
    "error": "Error message detail"
}
 

Request      

GET api/work_load_analysis/report

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

bulan   integer     

Angka bulan (1-12). Example: 5

tahun   integer     

Tahun (minimal 2000). Example: 2026

nik   string  optional    

optional Filter berdasarkan NIK karyawan. Example: FRP-1001

nama   string  optional    

optional Filter berdasarkan nama karyawan. Example: Ahmad

status   string  optional    

optional Filter jenis karyawan. Example: Tetap

bagian   string  optional    

optional Filter jabatan / bagian. Example: `Supervisor

---`

Struktur Organisasi

Endpoint ini digunakan untuk mengimpor data struktur organisasi secara massal melalui file Excel.

Store Struktur Organisasi

requires authentication

API untuk membuat data struktur organisasi karyawan baru.

Endpoint ini mendukung:

Base input untuk setiap data struktur organisasi:

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/organisasi" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"id_perusahaan_lokasi\": 1,
    \"id_struktur_org_atasan\": 2,
    \"level_posisi\": 1,
    \"level_manajerial\": \"M1\",
    \"id_jabatan\": 3,
    \"id_struktur_org_penilai_1\": 4,
    \"id_struktur_org_penilai_2\": 5,
    \"id_struktur_org_penilai_3\": 6,
    \"data\": [
        {
            \"id_karyawan\": 1,
            \"id_jabatan\": 3
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/organisasi"
);

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

let body = {
    "id_karyawan": 1,
    "id_perusahaan_lokasi": 1,
    "id_struktur_org_atasan": 2,
    "level_posisi": 1,
    "level_manajerial": "M1",
    "id_jabatan": 3,
    "id_struktur_org_penilai_1": 4,
    "id_struktur_org_penilai_2": 5,
    "id_struktur_org_penilai_3": 6,
    "data": [
        {
            "id_karyawan": 1,
            "id_jabatan": 3
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (202):


{
  "status": true,
  "message": "Successfully created new Struktur Organisasi data",
  "data": {
    "id": 1,
    "id_karyawan": 1,
    "nama_karyawan": "Budi Santoso",
    "id_perusahaan_lokasi": 1,
    "nama_perusahaan": "PT. Contoh Perusahaan",
    "nama_lokasi": "Kantor Pusat",
    "id_struktur_org_atasan": 2,
    "nama_karyawan_atasan": "Siti Aminah",
    "level_posisi": 1,
    "level_manajerial": "M1",
    "id_jabatan": 3,
    "jabatan": "Manager",
    "id_struktur_org_penilai_1": 4,
    "nama_karyawan_penilai_1": "Andi Wijaya",
    "id_struktur_org_penilai_2": 5,
    "nama_karyawan_penilai_2": "Rina Sari",
    "id_struktur_org_penilai_3": 6
    "nama_karyawan_penilai_3": "Dewi Lestari"
  }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

POST api/organisasi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
id_perusahaan_lokasi   integer     
  • ID perusahaan lokasi. Example: 1
id_struktur_org_atasan   integer  optional    

nullable - ID atasan dalam struktur organisasi. Example: 2

level_posisi   integer  optional    

nullable - Level posisi. Example: 1

level_manajerial   string  optional    

nullable - Level manajerial. Example: M1

id_jabatan   integer  optional    

nullable - ID jabatan. Example: 3

id_struktur_org_penilai_1   integer  optional    

nullable - ID penilai 1. Example: 4

id_struktur_org_penilai_2   integer  optional    

nullable - ID penilai 2. Example: 5

id_struktur_org_penilai_3   integer  optional    

nullable - ID penilai 3. Example: 6

data   string[]  optional    

optional - Digunakan untuk bulk insert.

Import Excel Struktur Organisasi

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/organisasi/import" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "file=@C:\Users\DC03\AppData\Local\Temp\phpF7D6.tmp" 
const url = new URL(
    "http://10.10.1.109:8000/api/organisasi/import"
);

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

const body = new FormData();
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Example response (422):


{
    "status": false,
    "message": "File tidak valid",
    "errors": {
        "file": [
            "The file field is required."
        ]
    }
}
 

Request      

POST api/organisasi/import

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

file   file     

Must be a file. Example: C:\Users\DC03\AppData\Local\Temp\phpF7D6.tmp

GET api/organisasi

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/organisasi" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        {
            \"field\": \"nama_karyawan\",
            \"operator\": \"like\",
            \"value\": \"Budi\",
            \"isOr\": false
        }
    ],
    \"sorts\": [
        {
            \"field\": \"nama_perusahaan\",
            \"direction\": \"asc\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/organisasi"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        {
            "field": "nama_karyawan",
            "operator": "like",
            "value": "Budi",
            "isOr": false
        }
    ],
    "sorts": [
        {
            "field": "nama_perusahaan",
            "direction": "asc"
        }
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 50,
        "lastPage": 5
    },
    "data": [
        {
            "id": 1,
            "id_karyawan": 101,
            "nama_karyawan": "John Doe",
            "id_perusahaan_lokasi": 5,
            "nama_perusahaan": "PT Teknologi Maju",
            "nama_lokasi": "Head Office",
            "kota": "Jakarta",
            "id_struktur_org_atasan": 2,
            "nama_karyawan_atasan": "Jane Smith",
            "level_posisi": "Senior",
            "level_manajerial": "Manager",
            "id_jabatan": 10,
            "nama_jabatan": "IT Manager",
            "id_struktur_org_penilai_1": 3,
            "nama_karyawan_penilai_1": "Robert Brown",
            "id_struktur_org_penilai_2": null,
            "nama_karyawan_penilai_2": null,
            "id_struktur_org_penilai_3": null,
            "nama_karyawan_penilai_3": null,
            "created_at": "2023-10-25T08:00:00.000000Z",
            "updated_at": "2023-10-25T08:00:00.000000Z"
        }
    ]
}
 

Example response (500, Internal Server Error):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'xyz' in 'where clause'..."
}
 

Request      

GET api/organisasi

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pageNumber   integer  optional    

optional Nomor halaman untuk paginasi. Default: 1. Example: 1

pageSize   integer  optional    

optional Jumlah baris data per halaman. Default: 10. Example: 10

filters   object[]  optional    

optional Array kumpulan filter untuk pencarian data.

field   string  optional    

required_with:filters Nama field yang ingin difilter. Example: nama_karyawan

operator   string  optional    

optional Operator perbandingan (contoh: eq, like, gt, lt). Default: eq. Example: like

value   string|integer  optional    

required_with:filters Nilai dari field yang ingin dicari. Example: Budi

isOr   boolean  optional    

optional Menentukan apakah filter menggunakan logika OR. Default: false. Example: false

sorts   object[]  optional    

optional Array kumpulan sorting untuk mengurutkan data.

field   string  optional    

required_with:sorts Nama field yang menjadi acuan pengurutan. Example: nama_perusahaan

direction   string  optional    

optional Arah pengurutan, menerima nilai 'asc' atau 'desc'. Default: asc. Example: asc

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/organisasi/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pageNumber\": 1,
    \"pageSize\": 10,
    \"filters\": [
        {
            \"field\": \"nama_karyawan\",
            \"operator\": \"like\",
            \"value\": \"Budi\",
            \"isOr\": false
        }
    ],
    \"sorts\": [
        {
            \"field\": \"nama_perusahaan\",
            \"direction\": \"asc\"
        }
    ]
}"
const url = new URL(
    "http://10.10.1.109:8000/api/organisasi/search"
);

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

let body = {
    "pageNumber": 1,
    "pageSize": 10,
    "filters": [
        {
            "field": "nama_karyawan",
            "operator": "like",
            "value": "Budi",
            "isOr": false
        }
    ],
    "sorts": [
        {
            "field": "nama_perusahaan",
            "direction": "asc"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully",
    "meta": {
        "pageNumber": 1,
        "pageSize": 10,
        "from": 1,
        "to": 10,
        "total": 50,
        "lastPage": 5
    },
    "data": [
        {
            "id": 1,
            "id_karyawan": 101,
            "nama_karyawan": "John Doe",
            "id_perusahaan_lokasi": 5,
            "nama_perusahaan": "PT Teknologi Maju",
            "nama_lokasi": "Head Office",
            "kota": "Jakarta",
            "id_struktur_org_atasan": 2,
            "nama_karyawan_atasan": "Jane Smith",
            "level_posisi": "Senior",
            "level_manajerial": "Manager",
            "id_jabatan": 10,
            "nama_jabatan": "IT Manager",
            "id_struktur_org_penilai_1": 3,
            "nama_karyawan_penilai_1": "Robert Brown",
            "id_struktur_org_penilai_2": null,
            "nama_karyawan_penilai_2": null,
            "id_struktur_org_penilai_3": null,
            "nama_karyawan_penilai_3": null,
            "created_at": "2023-10-25T08:00:00.000000Z",
            "updated_at": "2023-10-25T08:00:00.000000Z"
        }
    ]
}
 

Example response (500, Internal Server Error):


{
    "status": false,
    "message": "Internal Server Error",
    "error": "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'xyz' in 'where clause'..."
}
 

Get Struktur Organisasi By ID

requires authentication

API untuk menampilkan detail struktur organisasi karyawan berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
  "status": true,
  "data": {
    "id": 1,
    "id_karyawan": 1,
    "nama_karyawan": "Budi Santoso",
    "id_perusahaan_lokasi": 1,
    "nama_perusahaan": "PT. Contoh Perusahaan",
    "nama_lokasi": "Kantor Pusat",
    "id_struktur_org_atasan": 2,
    "nama_karyawan_atasan": "Siti Aminah",
    "level_posisi": 1,
    "level_manajerial": "M1",
    "id_jabatan": 3,
    "jabatan": "Manager",
    "id_struktur_org_penilai_1": 4,
    "nama_karyawan_penilai_1": "Andi Wijaya",
    "id_struktur_org_penilai_2": 5,
    "nama_karyawan_penilai_2": "Rina Sari",
    "id_struktur_org_penilai_3": 6
    "nama_karyawan_penilai_3": "Dewi Lestari"     *
  },
}
 

Example response (404):


{
    "status": false,
    "message": "Struktur Organisasi data not found"
}
 

Request      

GET api/organisasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data struktur organisasi. Example: 1

Update Struktur Organisasi

requires authentication

API untuk memperbarui data struktur organisasi karyawan berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/organisasi/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_karyawan\": 1,
    \"id_perusahaan_lokasi\": 1,
    \"id_struktur_org_atasan\": 2,
    \"level_posisi\": 1,
    \"level_manajerial\": \"M1\",
    \"id_jabatan\": 3,
    \"id_struktur_org_penilai_1\": 4,
    \"id_struktur_org_penilai_2\": 5,
    \"id_struktur_org_penilai_3\": 6
}"
const url = new URL(
    "http://10.10.1.109:8000/api/organisasi/1"
);

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

let body = {
    "id_karyawan": 1,
    "id_perusahaan_lokasi": 1,
    "id_struktur_org_atasan": 2,
    "level_posisi": 1,
    "level_manajerial": "M1",
    "id_jabatan": 3,
    "id_struktur_org_penilai_1": 4,
    "id_struktur_org_penilai_2": 5,
    "id_struktur_org_penilai_3": 6
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
  "status": true,
  "message": "Successfully updated Struktur Organisasi data",
  "data": {
    "id": 1,
    "id_karyawan": 1,
    "nama_karyawan": "Budi Santoso",
    "id_perusahaan_lokasi": 1,
    "nama_perusahaan": "PT. Contoh Perusahaan",
    "nama_lokasi": "Kantor Pusat",
    "id_struktur_org_atasan": 2,
    "nama_karyawan_atasan": "Siti Aminah",
    "level_posisi": 1,
    "level_manajerial": "M1",
    "id_jabatan": 3,
    "jabatan": "Manager",
    "id_struktur_org_penilai_1": 4,
    "nama_karyawan_penilai_1": "Andi Wijaya",
    "id_struktur_org_penilai_2": 5,
    "nama_karyawan_penilai_2": "Rina Sari",
    "id_struktur_org_penilai_3": 6
    "nama_karyawan_penilai_3": "Dewi Lestari"     *
  },
}
 

Example response (404):


{
    "status": false,
    "message": "Struktur Organisasi data not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_karyawan": [
            "The id karyawan field is required."
        ]
    }
}
 

Request      

PUT api/organisasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data struktur organisasi yang akan diupdate. Example: 1

Body Parameters

id_karyawan   integer     
  • ID karyawan. Example: 1
id_perusahaan_lokasi   integer     
  • ID perusahaan lokasi. Example: 1
id_struktur_org_atasan   integer  optional    

nullable - ID atasan. Example: 2

level_posisi   integer  optional    

nullable - Level posisi. Example: 1

level_manajerial   string  optional    

nullable - Level manajerial. Example: M1

id_jabatan   integer  optional    

nullable - ID jabatan. Example: 3

id_struktur_org_penilai_1   integer  optional    

nullable - ID penilai 1. Example: 4

id_struktur_org_penilai_2   integer  optional    

nullable - ID penilai 2. Example: 5

id_struktur_org_penilai_3   integer  optional    

nullable - ID penilai 3. Example: 6

Delete Struktur Organisasi

requires authentication

API untuk menghapus data struktur organisasi karyawan berdasarkan ID.

Jika model menggunakan softDeletes(), maka data tidak benar-benar terhapus, melainkan hanya mengisi kolom deleted_at.

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

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully deleted Struktur Organisasi data"
}
 

Example response (404):


{
    "status": false,
    "message": "Struktur Organisasi data not found"
}
 

Request      

DELETE api/organisasi/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID data struktur organisasi yang akan dihapus. Example: 1

Sync Data

Sync data karyawan

requires authentication

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/syncDB

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

User Management

API untuk membuat user baru sekaligus membuat data karyawan terkait.

Endpoint ini akan:

GET api/users

requires authentication

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "status": false,
    "message": "Unauthenticated"
}
 

Request      

GET api/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Store User

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"secret123\",
    \"status\": true,
    \"id_peran\": 1
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users"
);

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

let body = {
    "password": "secret123",
    "status": true,
    "id_peran": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created New User",
    "user": {
        "id": 1,
        "status": true,
        "id_peran": 1
    },
    "karyawan_response": {
        "status": true,
        "message": "Successfully created new Karyawan"
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_peran": [
            "The id peran field is required."
        ]
    }
}
 

Request      

POST api/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

password   string  optional    

nullable - Password user. Jika tidak diisi, default akan menggunakan password. Example: secret123

status   boolean     
  • Status user. Example: true
id_peran   integer     
  • ID role user. Example: 1

Reset Password

requires authentication

API untuk mereset password user ke password default.

Endpoint ini digunakan oleh super admin.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/users/reset" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_user\": 1
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users/reset"
);

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

let body = {
    "id_user": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Password berhasil direset ke default.",
    "data": {
        "id": 1
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_user": [
            "The id user field is required."
        ]
    }
}
 

Request      

POST api/users/reset

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_user   integer     
  • ID user yang akan direset passwordnya. Example: 1

POST api/users/list

requires authentication

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

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


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/users/list

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update User

requires authentication

API untuk memperbarui data peran (nama_peran) pada user tertentu berdasarkan ID.

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

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

let body = {
    "id_peran": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully updated User",
    "data": {
        "id": "9a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
        "nama_peran": "Manager",
        "created_at": "2026-04-20T10:00:00.000000Z",
        "updated_at": "2026-04-28T14:40:00.000000Z",
        "peran": {
            "id": 2,
            "nama_peran": "Manager",
            "keterangan": "Akses level manager"
        }
    }
}
 

Example response (404):


{
    "status": false,
    "message": "User not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "nama_peran": [
            "The nama peran field is required."
        ]
    }
}
 

Request      

PUT api/users/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

ID dari user yang akan diperbarui. Example: 9a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d

  • @bodyParam nama_peran string required Nama peran baru yang akan di-assign ke user. Example: Manager

Body Parameters

id_peran   string     

Example: architecto

Store User Peran

requires authentication

API untuk membuat role/peran user baru.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/users/peran" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nama_peran\": \"Admin\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users/peran"
);

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

let body = {
    "nama_peran": "Admin"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "status": true,
    "message": "Successfully created New Role",
    "data": {
        "id": 1,
        "nama_peran": "Admin"
    }
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "nama_peran": [
            "The nama peran field is required."
        ]
    }
}
 

Request      

POST api/users/peran

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

nama_peran   string     
  • Nama role. Example: Admin

List User Peran

requires authentication

API untuk menampilkan daftar role/peran user dengan pagination.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": [
        {
            "nama_peran": "Admin"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 10,
        "total": 1,
        "from": 1,
        "to": 1
    }
}
 

Request      

GET api/users/peran

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get User Peran By ID

requires authentication

API untuk menampilkan detail role/peran berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "nama_peran": "Admin"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Web feature not found"
}
 

Request      

GET api/users/peran/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID role. Example: 1

Update User Peran

requires authentication

API untuk memperbarui role/peran user berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/users/peran/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"nama_peran\": \"Admin\"
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users/peran/1"
);

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

let body = {
    "nama_peran": "Admin"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully updated Role",
    "data": {
        "id": 1,
        "nama_peran": "Admin"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Role not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "nama_peran": [
            "The nama peran field is required."
        ]
    }
}
 

Request      

PUT api/users/peran/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID role yang akan diupdate. Example: 1

Body Parameters

nama_peran   string     
  • Nama role. Example: Admin

Delete User Peran

requires authentication

API untuk menghapus role/peran user berdasarkan ID.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/users/peran/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/users/peran/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully deleted Role"
}
 

Example response (404):


{
    "status": false,
    "message": "Role not found"
}
 

Request      

DELETE api/users/peran/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID role yang akan dihapus. Example: 1

Get User Fitur Web By ID

requires authentication

API untuk menampilkan detail fitur web berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "modul": "User Management",
        "sub_modul": "Role",
        "fitur": "Create Role"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Web feature not found"
}
 

Request      

GET api/users/fiturWeb/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID fitur web. Example: 1

Get User Fitur Web

requires authentication

API untuk menampilkan detail fitur web.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "modul": "User Management",
        "sub_modul": "Role",
        "fitur": "Create Role"
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Web feature not found"
}
 

Request      

GET api/users/fiturWeb

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

List User Hak Akses

requires authentication

API untuk menampilkan daftar hak akses user.

Endpoint ini menampilkan relasi peran dan fitur web.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "nama_peran": "Admin",
        "modul": "User Management",
        "sub_modul": "Role",
        "fitur": "Create Role",
        "is_view": true,
        "is_create": true,
        "is_update": true,
        "is_delete": false,
        "is_verify": false,
        "is_download": true
    }
}
 

Request      

GET api/users/hakAkses

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get User Hak Akses By ID

requires authentication

API untuk menampilkan detail hak akses berdasarkan ID.

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

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "data": {
        "nama_peran": "Admin",
        "modul": "User Management",
        "sub_modul": "Role",
        "fitur": "Create Role",
        "is_view": true,
        "is_create": true,
        "is_update": true,
        "is_delete": false,
        "is_verify": false,
        "is_download": true
    }
}
 

Example response (404):


{
    "status": false,
    "message": "No access rights found for this role"
}
 

Request      

GET api/users/hakAkses/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID hak akses. Example: 1

Update User Hak Akses

requires authentication

API untuk memperbarui data hak akses berdasarkan ID.

Example request:
curl --request PUT \
    "http://10.10.1.109:8000/api/users/hakAkses/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_peran\": 1,
    \"id_fitur_web\": 1,
    \"is_view\": true,
    \"is_create\": true,
    \"is_update\": true,
    \"is_delete\": false,
    \"is_verify\": false,
    \"is_download\": true
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users/hakAkses/1"
);

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

let body = {
    "id_peran": 1,
    "id_fitur_web": 1,
    "is_view": true,
    "is_create": true,
    "is_update": true,
    "is_delete": false,
    "is_verify": false,
    "is_download": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully updated Access Right",
    "data": {
        "id": 1,
        "id_peran": 1
    }
}
 

Example response (404):


{
    "status": false,
    "message": "Access right not found"
}
 

Example response (422):


{
    "status": false,
    "errors": {
        "id_peran": [
            "The id peran field is required."
        ]
    }
}
 

Request      

PUT api/users/hakAkses/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID hak akses yang akan diupdate. Example: 1

Body Parameters

id_peran   integer     
  • ID role. Example: 1
id_fitur_web   integer     
  • ID fitur web. Example: 1
is_view   boolean     
  • Hak akses view. Example: true
is_create   boolean     
  • Hak akses create. Example: true
is_update   boolean     
  • Hak akses update. Example: true
is_delete   boolean     
  • Hak akses delete. Example: false
is_verify   boolean     
  • Hak akses verify. Example: false
is_download   boolean     
  • Hak akses download. Example: true

Delete User Hak Akses

requires authentication

API untuk menghapus data hak akses berdasarkan ID.

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/users/hakAkses/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/users/hakAkses/1"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "status": true,
    "message": "Successfully deleted Access Right"
}
 

Example response (404):


{
    "status": false,
    "message": "Access right not found"
}
 

Request      

DELETE api/users/hakAkses/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     
  • ID hak akses yang akan dihapus. Example: 1

Manage User Hak Akses

requires authentication

API untuk menambahkan (create) atau memperbarui (update) data hak akses berdasarkan ID Peran (Role) dan ID Fitur Web.

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/users/hakAkses/manage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id_peran\": \"019353-55-712842278e02\",
    \"id_fitur_web\": \"017578-091-406998014622\",
    \"is_view\": true,
    \"is_create\": false,
    \"is_update\": true,
    \"is_delete\": false,
    \"is_verify\": false,
    \"is_download\": true
}"
const url = new URL(
    "http://10.10.1.109:8000/api/users/hakAkses/manage"
);

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

let body = {
    "id_peran": "019353-55-712842278e02",
    "id_fitur_web": "017578-091-406998014622",
    "is_view": true,
    "is_create": false,
    "is_update": true,
    "is_delete": false,
    "is_verify": false,
    "is_download": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "status": "success",
    "message": "Hak akses berhasil diperbarui untuk peran (role) ini.",
    "data": {
        "id": 10,
        "id_peran": 1,
        "id_fitur_web": 5,
        "is_view": true,
        "is_create": false,
        "is_update": true,
        "is_delete": false,
        "is_verify": false,
        "is_download": true,
        "created_at": "2026-04-28T06:00:00.000000Z",
        "updated_at": "2026-04-28T06:00:00.000000Z"
    }
}
 

Example response (422):


{
    "status": "error",
    "message": "Validasi gagal",
    "errors": {
        "id_peran": [
            "The id peran field is required."
        ],
        "id_fitur_web": [
            "The selected id fitur web is invalid."
        ]
    }
}
 

Example response (500):


{
    "status": "error",
    "message": "Terjadi kesalahan: Internal Server Error message..."
}
 

Request      

POST api/users/hakAkses/manage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id_peran   string     

ID dari peran (role) user. Example: 019353-55-712842278e02

id_fitur_web   string     

ID dari fitur web yang akan diatur hak aksesnya. Example: 017578-091-406998014622

is_view   boolean  optional    

optional Status hak akses untuk melihat data. Example: true

is_create   boolean  optional    

optional Status hak akses untuk menambah data. Example: false

is_update   boolean  optional    

optional Status hak akses untuk mengubah data. Example: true

is_delete   boolean  optional    

optional Status hak akses untuk menghapus data. Example: false

is_verify   boolean  optional    

optional Status hak akses untuk memverifikasi data. Example: false

is_download   boolean  optional    

optional Status hak akses untuk mengunduh data. Example: true

WLA Harian

Request menggunakan format multipart/form-data.

Get Data WLA Harian

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/harian/index" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/harian/index"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "message": "Data WLA Harian berhasil diambil",
    "data": [
        {
            "id": "uuid",
            "nama_wla": "Input Data Harian",
            "jenis_wla": "H",
            "tanggal_kegiatan": "2026-05-21",
            "created_at": "2026-05-21T08:00:00.000000Z",
            "updated_at": "2026-05-21T08:00:00.000000Z",
            "realisasi": {
                "id": "uuid-realisasi",
                "id_wla": {
                    "id_wla_harian": "uuid"
                },
                "created_at": "2026-05-21T09:00:00.000000Z",
                "updated_at": "2026-05-21T09:00:00.000000Z"
            },
            "lampiran": [
                {
                    "id": "uuid-lampiran",
                    "document_type": "realisasi_wla",
                    "document_id": "uuid-realisasi",
                    "file_name": "dokumentasi.jpg",
                    "file_path": "lampiran/dokumentasi.jpg",
                    "full_url": "http://your-domain.com/storage/lampiran/dokumentasi.jpg",
                    "created_at": "2026-05-21T09:10:00.000000Z",
                    "updated_at": "2026-05-21T09:10:00.000000Z"
                }
            ]
        }
    ]
}
 

Example response (500):


{
    "success": false,
    "message": "Terjadi kesalahan saat mengambil data",
    "error": "Error message"
}
 

Request      

GET api/work_load_analysis/harian/index

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Store Data WLA Harian

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/work_load_analysis/harian/store" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "nama_wla=Input Data Harian"\
    --form "jenis_wla=H"\
    --form "jenis_target=Durasi"\
    --form "nilai_target=120"\
    --form "standar_durasi_menit=60"\
    --form "standar_frekuensi=2"\
    --form "bobot_tugas=20"\
    --form "tipe_penilaian=max"\
    --form "denda=5000"\
    --form "tanggal_kegiatan=2026-05-21"\
    --form "realisasi_mulai=2026-05-21 08:00:00"\
    --form "realisasi_selesai=2026-05-21 10:00:00"\
    --form "total_durasi=120"\
    --form "aktual_capaian=100"\
    --form "files[]=@C:\Users\DC03\AppData\Local\Temp\phpF31D.tmp" 
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/harian/store"
);

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

const body = new FormData();
body.append('nama_wla', 'Input Data Harian');
body.append('jenis_wla', 'H');
body.append('jenis_target', 'Durasi');
body.append('nilai_target', '120');
body.append('standar_durasi_menit', '60');
body.append('standar_frekuensi', '2');
body.append('bobot_tugas', '20');
body.append('tipe_penilaian', 'max');
body.append('denda', '5000');
body.append('tanggal_kegiatan', '2026-05-21');
body.append('realisasi_mulai', '2026-05-21 08:00:00');
body.append('realisasi_selesai', '2026-05-21 10:00:00');
body.append('total_durasi', '120');
body.append('aktual_capaian', '100');
body.append('files[]', document.querySelector('input[name="files[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Example response (201):


{
    "success": true,
    "message": "Data WLA Harian, Realisasi, dan Lampiran berhasil dibuat via Form-Data",
    "data": {
        "wla": {
            "id": "uuid-wla",
            "id_struktur_organisasi": "uuid-struktur",
            "nama_wla": "Input Data Harian",
            "jenis_wla": "H",
            "jenis_target": "Durasi",
            "nilai_target": "120",
            "standar_durasi_menit": 60,
            "standar_frekuensi": 2,
            "bobot_tugas": "20%",
            "tipe_penilaian": "max",
            "denda": 5000,
            "created_at": "2026-05-21T08:00:00.000000Z",
            "updated_at": "2026-05-21T08:00:00.000000Z"
        },
        "realisasi": {
            "id": "uuid-realisasi",
            "id_wla": {
                "id_wla_harian": "uuid-wla"
            },
            "id_karyawan": "uuid-karyawan",
            "tanggal_kegiatan": "2026-05-21",
            "realisasi_mulai": "2026-05-21 08:00:00",
            "realisasi_selesai": "2026-05-21 10:00:00",
            "total_durasi": "120",
            "aktual_capaian": "100",
            "status_submit": "selesai",
            "status_item": "review",
            "current_step": 1,
            "score": null,
            "revisi_count": 0,
            "created_at": "2026-05-21T10:00:00.000000Z",
            "updated_at": "2026-05-21T10:00:00.000000Z"
        }
    }
}
 

Example response (404):


{
    "success": false,
    "message": "Approval tidak ditemukan"
}
 

Example response (422):


{
    "success": false,
    "message": "Validation error",
    "errors": {
        "nama_wla": [
            "The nama wla field is required."
        ],
        "realisasi_selesai": [
            "The realisasi selesai must be a date after realisasi mulai."
        ]
    }
}
 

Example response (500):


{
    "success": false,
    "message": "Terjadi kesalahan",
    "error": "Error message"
}
 

Request      

POST api/work_load_analysis/harian/store

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

nama_wla   string     

Nama WLA. Example: Input Data Harian

jenis_wla   string     

Jenis WLA (H, M, B, T, Tambahan). Example: H

jenis_target   string     

Jenis target (Waktu, Tanggal, Hari, Hari Deadline, Durasi, Jumlah). Example: Durasi

nilai_target   string     

Nilai target. Example: 120

standar_durasi_menit   integer     

Standar durasi dalam menit. Example: 60

standar_frekuensi   integer     

Standar frekuensi. Example: 2

bobot_tugas   string  optional    

optional Bobot tugas tanpa simbol %. Example: 20

tipe_penilaian   string     

Tipe penilaian (min, max, khusus). Example: max

denda   integer  optional    

optional Nilai denda. Example: 5000

tanggal_kegiatan   date     

Tanggal kegiatan. Example: 2026-05-21

realisasi_mulai   datetime  optional    

optional Waktu mulai realisasi. Example: 2026-05-21 08:00:00

realisasi_selesai   datetime  optional    

optional Waktu selesai realisasi. Example: 2026-05-21 10:00:00

total_durasi   string     

Total durasi realisasi dalam menit. Example: 120

aktual_capaian   string     

Aktual capaian pekerjaan. Example: 100

files[]   file  optional    

optional Lampiran dokumentasi (multiple file upload, max 10MB per file). Example: C:\Users\DC03\AppData\Local\Temp\phpF31D.tmp

Get Data WLA Harian by Id

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/harian/550e8400-e29b-41d4-a716-446655440000/detail" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/harian/550e8400-e29b-41d4-a716-446655440000/detail"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "message": "Data WLA Harian berhasil diambil",
    "data": {
        "id": "uuid-wla",
        "id_struktur_organisasi": "550e8400-e29b-41d4-a716-446655440000",
        "nama_wla": "Input Data Harian",
        "jenis_wla": "H",
        "jenis_target": "Durasi",
        "nilai_target": "120",
        "standar_durasi_menit": 60,
        "standar_frekuensi": 2,
        "bobot_tugas": "20%",
        "tipe_penilaian": "max",
        "denda": 5000,
        "created_at": "2026-05-21T08:00:00.000000Z",
        "updated_at": "2026-05-21T08:00:00.000000Z",
        "realisasi": {
            "id": "uuid-realisasi",
            "id_wla": {
                "id_wla_harian": "uuid-wla"
            },
            "id_karyawan": "uuid-karyawan",
            "tanggal_kegiatan": "2026-05-21",
            "realisasi_mulai": "2026-05-21 08:00:00",
            "realisasi_selesai": "2026-05-21 10:00:00",
            "total_durasi": "120",
            "aktual_capaian": "100",
            "status_submit": "selesai",
            "status_item": "review",
            "current_step": 1,
            "score": null,
            "revisi_count": 0,
            "created_at": "2026-05-21T10:00:00.000000Z",
            "updated_at": "2026-05-21T10:00:00.000000Z"
        },
        "lampiran": [
            {
                "id": "uuid-lampiran",
                "document_type": "realisasi_wla",
                "document_id": "uuid-realisasi",
                "file_name": "dokumentasi.jpg",
                "file_path": "lampiran/dokumentasi.jpg",
                "full_url": "http://your-domain.com/storage/lampiran/dokumentasi.jpg",
                "created_at": "2026-05-21T10:05:00.000000Z",
                "updated_at": "2026-05-21T10:05:00.000000Z"
            }
        ]
    }
}
 

Example response (404):


{
    "success": false,
    "message": "Data tidak ditemukan",
    "data": null
}
 

Example response (500):


{
    "success": false,
    "message": "Terjadi kesalahan saat mengambil data",
    "error": "Error message"
}
 

Request      

GET api/work_load_analysis/harian/{id}/detail

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

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

Get Data WLA Harian by Struktur Organisasi

requires authentication

Example request:
curl --request GET \
    --get "http://10.10.1.109:8000/api/work_load_analysis/harian/struktur-organisasi/550e8400-e29b-41d4-a716-446655440000" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/harian/struktur-organisasi/550e8400-e29b-41d4-a716-446655440000"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "message": "Data WLA Harian berhasil diambil",
    "data": [
        {
            "id": "uuid-wla",
            "id_struktur_organisasi": "550e8400-e29b-41d4-a716-446655440000",
            "nama_wla": "Input Data Harian",
            "jenis_wla": "H",
            "jenis_target": "Durasi",
            "nilai_target": "120",
            "standar_durasi_menit": 60,
            "standar_frekuensi": 2,
            "bobot_tugas": "20%",
            "tipe_penilaian": "max",
            "denda": 5000,
            "created_at": "2026-05-21T08:00:00.000000Z",
            "updated_at": "2026-05-21T08:00:00.000000Z",
            "realisasi": {
                "id": "uuid-realisasi",
                "id_wla": {
                    "id_wla_harian": "uuid-wla"
                },
                "id_karyawan": "uuid-karyawan",
                "tanggal_kegiatan": "2026-05-21",
                "realisasi_mulai": "2026-05-21 08:00:00",
                "realisasi_selesai": "2026-05-21 10:00:00",
                "total_durasi": "120",
                "aktual_capaian": "100",
                "status_submit": "selesai",
                "status_item": "review",
                "current_step": 1,
                "score": null,
                "revisi_count": 0,
                "created_at": "2026-05-21T10:00:00.000000Z",
                "updated_at": "2026-05-21T10:00:00.000000Z"
            },
            "lampiran": [
                {
                    "id": "uuid-lampiran",
                    "document_type": "realisasi_wla",
                    "document_id": "uuid-realisasi",
                    "file_name": "dokumentasi.jpg",
                    "file_path": "lampiran/dokumentasi.jpg",
                    "full_url": "http://your-domain.com/storage/lampiran/dokumentasi.jpg",
                    "created_at": "2026-05-21T10:05:00.000000Z",
                    "updated_at": "2026-05-21T10:05:00.000000Z"
                }
            ]
        }
    ]
}
 

Example response (404):


{
    "success": false,
    "message": "Data tidak ditemukan",
    "data": []
}
 

Example response (500):


{
    "success": false,
    "message": "Terjadi kesalahan saat mengambil data",
    "error": "Error message"
}
 

Request      

GET api/work_load_analysis/harian/struktur-organisasi/{idStrukturOrganisasi}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

idStrukturOrganisasi   string     

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

Update Data WLA Harian

requires authentication

Example request:
curl --request POST \
    "http://10.10.1.109:8000/api/work_load_analysis/harian/550e8400-e29b-41d4-a716-446655440000/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "nama_wla=Input Data Harian"\
    --form "jenis_wla=H"\
    --form "jenis_target=Waktu"\
    --form "nilai_target=08:00"\
    --form "standar_durasi_menit=60"\
    --form "standar_frekuensi=1"\
    --form "bobot_tugas=20"\
    --form "tipe_penilaian=min"\
    --form "denda=10"\
    --form "tanggal_kegiatan=2026-05-21"\
    --form "realisasi_mulai=2026-05-21 08:00:00"\
    --form "realisasi_selesai=2026-05-21 09:00:00"\
    --form "total_durasi=60"\
    --form "aktual_capaian=Selesai"\
    --form "files[]=@C:\Users\DC03\AppData\Local\Temp\phpF31E.tmp" 
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/harian/550e8400-e29b-41d4-a716-446655440000/update"
);

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

const body = new FormData();
body.append('nama_wla', 'Input Data Harian');
body.append('jenis_wla', 'H');
body.append('jenis_target', 'Waktu');
body.append('nilai_target', '08:00');
body.append('standar_durasi_menit', '60');
body.append('standar_frekuensi', '1');
body.append('bobot_tugas', '20');
body.append('tipe_penilaian', 'min');
body.append('denda', '10');
body.append('tanggal_kegiatan', '2026-05-21');
body.append('realisasi_mulai', '2026-05-21 08:00:00');
body.append('realisasi_selesai', '2026-05-21 09:00:00');
body.append('total_durasi', '60');
body.append('aktual_capaian', 'Selesai');
body.append('files[]', document.querySelector('input[name="files[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "message": "Data WLA Harian, Realisasi, dan Lampiran berhasil diperbarui",
    "data": {
        "wla": {
            "id": "uuid-wla",
            "id_struktur_organisasi": "uuid-struktur",
            "nama_wla": "Input Data Harian",
            "jenis_wla": "H",
            "jenis_target": "Waktu",
            "nilai_target": "08:00",
            "standar_durasi_menit": 60,
            "standar_frekuensi": 1,
            "bobot_tugas": "20%",
            "tipe_penilaian": "min",
            "denda": 10,
            "created_at": "2026-05-21T08:00:00.000000Z",
            "updated_at": "2026-05-21T09:00:00.000000Z"
        },
        "realisasi": {
            "id": "uuid-realisasi",
            "id_wla": {
                "id_wla_harian": "uuid-wla"
            },
            "id_karyawan": "uuid-karyawan",
            "tanggal_kegiatan": "2026-05-21",
            "realisasi_mulai": "2026-05-21 08:00:00",
            "realisasi_selesai": "2026-05-21 09:00:00",
            "total_durasi": "60",
            "aktual_capaian": "Selesai",
            "status_submit": "selesai",
            "status_item": "review",
            "current_step": 1,
            "score": null,
            "revisi_count": 0,
            "created_at": "2026-05-21T08:00:00.000000Z",
            "updated_at": "2026-05-21T09:00:00.000000Z"
        }
    }
}
 

Example response (404):


{
    "success": false,
    "message": "Data tidak ditemukan"
}
 

Example response (422):


{
    "success": false,
    "message": "Validation error",
    "errors": {
        "realisasi_selesai": [
            "The realisasi selesai must be a date after realisasi mulai."
        ]
    }
}
 

Example response (500):


{
    "success": false,
    "message": "Terjadi kesalahan",
    "error": "Error message"
}
 

Request      

POST api/work_load_analysis/harian/{id}/update

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

id   string     

UUID data WLA Harian. Example: 550e8400-e29b-41d4-a716-446655440000

Body Parameters

nama_wla   string  optional    

optional Nama WLA. Example: Input Data Harian

jenis_wla   string  optional    

optional Jenis WLA (H, M, B, T, Tambahan). Example: H

jenis_target   string  optional    

optional Jenis target (Waktu, Tanggal, Hari, Hari Deadline, Durasi, Jumlah). Example: Waktu

nilai_target   string  optional    

optional Nilai target. Example: 08:00

standar_durasi_menit   integer  optional    

optional Standar durasi dalam menit. Example: 60

standar_frekuensi   integer  optional    

optional Standar frekuensi. Example: 1

bobot_tugas   string  optional    

optional Bobot tugas tanpa simbol %. Example: 20

tipe_penilaian   string  optional    

optional Tipe penilaian (min, max, khusus). Example: min

denda   integer  optional    

optional Denda keterlambatan. Example: 10

tanggal_kegiatan   date  optional    

optional Tanggal kegiatan. Example: 2026-05-21

realisasi_mulai   datetime  optional    

optional Waktu mulai realisasi. Example: 2026-05-21 08:00:00

realisasi_selesai   datetime  optional    

optional Waktu selesai realisasi. Example: 2026-05-21 09:00:00

total_durasi   string  optional    

optional Total durasi realisasi. Example: 60

aktual_capaian   string  optional    

optional Aktual capaian pekerjaan. Example: Selesai

files[]   file  optional    

optional Lampiran dokumentasi (multiple file upload, max 10MB per file). Example: C:\Users\DC03\AppData\Local\Temp\phpF31E.tmp

Delete Data WLA Harian

requires authentication

Example request:
curl --request DELETE \
    "http://10.10.1.109:8000/api/work_load_analysis/harian/550e8400-e29b-41d4-a716-446655440000" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://10.10.1.109:8000/api/work_load_analysis/harian/550e8400-e29b-41d4-a716-446655440000"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "message": "Data WLA Harian, Realisasi, beserta seluruh Berkas Lampiran berhasil dihapus secara permanen"
}
 

Example response (404):


{
    "success": false,
    "message": "Data tidak ditemukan"
}
 

Example response (500):


{
    "success": false,
    "message": "Terjadi kesalahan saat menghapus data",
    "error": "Error message"
}
 

Request      

DELETE api/work_load_analysis/harian/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

UUID data WLA Harian. Example: 550e8400-e29b-41d4-a716-446655440000