<!DOCTYPE html>
<html lang="id">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dokumentasi API Project Jahit</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body {
            padding-top: 56px;
            position: relative;
        }

        .sidebar {
            position: sticky;
            top: 70px;
            height: calc(100vh - 70px);
            overflow-y: auto;
        }

        .endpoint {
            padding: 15px;
            border-radius: 5px;
            margin-bottom: 15px;
            border-left: 5px solid #0d6efd;
            background-color: #f8f9fa;
        }

        .get {
            border-left-color: #0d6efd;
        }

        .post {
            border-left-color: #198754;
        }

        .put,
        .patch {
            border-left-color: #ffc107;
        }

        .delete {
            border-left-color: #dc3545;
        }

        .method {
            display: inline-block;
            padding: 5px 10px;
            border-radius: 3px;
            color: white;
            font-weight: bold;
            min-width: 80px;
            text-align: center;
        }

        .get-method {
            background-color: #0d6efd;
        }

        .post-method {
            background-color: #198754;
        }

        .put-method,
        .patch-method {
            background-color: #ffc107;
            color: #212529;
        }

        .delete-method {
            background-color: #dc3545;
        }

        pre {
            background-color: #212529;
            color: #f8f9fa;
            padding: 15px;
            border-radius: 5px;
        }

        code {
            font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
            white-space: pre-wrap;
        }
    </style>
</head>

<body data-bs-spy="scroll" data-bs-target="#navbar-example">
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
        <div class="container">
            <a class="navbar-brand" href="#">Dokumentasi API Project Jahit</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav">
                    <li class="nav-item">
                        <a class="nav-link" href="#introduction">Pendahuluan</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#authentication">Autentikasi</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#endpoints">Endpoint</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#models">Model Data</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#examples">Contoh</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>

    <div class="container-fluid">
        <div class="row">
            <div class="col-md-3 col-lg-2 d-none d-md-block bg-light sidebar">
                <div class="position-sticky pt-3" id="navbar-example">
                    <h5>Daftar Isi</h5>
                    <ul class="nav flex-column">
                        <li class="nav-item">
                            <a class="nav-link" href="#introduction">Pendahuluan</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#authentication">Autentikasi</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#roles">Role & Hak Akses</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#endpoints">Endpoint API</a>
                            <ul class="nav flex-column ps-3">
                                <li class="nav-item">
                                    <a class="nav-link" href="#public-endpoints">Endpoint Publik</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="#auth-endpoints">Autentikasi</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="#profile-endpoints">Profil</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="#customer-endpoints">Pelanggan</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="#tailor-endpoints">Penjahit</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="#admin-endpoints">Admin</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="#wallet-endpoints">Wallet & Withdrawal</a>
                                </li>
                            </ul>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#models">Model Data</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#status-codes">Kode Status</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#examples">Contoh</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#files">File & Media</a>
                        </li>
                    </ul>
                </div>
            </div>

            <main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
                <div class="mt-4" id="introduction">
                    <h2>Pendahuluan</h2>
                    <p>Project Jahit adalah platform yang menghubungkan pelanggan dengan penjahit. API ini menyediakan
                        endpoint untuk mengelola registrasi pengguna, pencarian penjahit, pemesanan jasa, manajemen
                        galeri dan layanan penjahit, serta sistem rating.</p>

                    <h4>Base URL</h4>
                    <pre><code>http://localhost:8000/api</code></pre>
                </div>

                <div class="mt-4" id="authentication">
                    <h2>Autentikasi</h2>
                    <p>API ini menggunakan Laravel Sanctum untuk autentikasi. Token akan diberikan setelah login dan
                        harus disertakan dalam header setiap permintaan ke endpoint yang terproteksi.</p>

                    <h4>Format Header</h4>
                    <pre><code>Authorization: Bearer {token}</code></pre>
                </div>

                <div class="mt-4" id="roles">
                    <h2>Role & Hak Akses</h2>
                    <p>Sistem memiliki 3 role pengguna:</p>
                    <ul>
                        <li><strong>admin</strong> - Administrator platform</li>
                        <li><strong>penjahit</strong> - Penjahit/Penyedia jasa</li>
                        <li><strong>pelanggan</strong> - Pelanggan/Pengguna jasa</li>
                    </ul>
                </div>

                <div class="mt-5" id="endpoints">
                    <h2>Endpoint API</h2>

                    <div id="public-endpoints" class="mt-4">
                        <h3>Endpoint Publik</h3>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/test</span>
                            <p class="mt-2">Tes koneksi API</p>
                            <h5>Response</h5>
                            <pre><code>{
  "message": "API is working"
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/specializations</span>
                            <p class="mt-2">Mendapatkan semua spesialisasi penjahit</p>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/tailors/search?specialization={id}</span>
                            <p class="mt-2">Mencari penjahit berdasarkan spesialisasi</p>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/tailors/{id}</span>
                            <p class="mt-2">Mendapatkan detail informasi penjahit</p>
                        </div>
                    </div>

                    <div id="auth-endpoints" class="mt-4">
                        <h3>Autentikasi</h3>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/pelanggan/register</span>
                            <p class="mt-2">Registrasi akun pelanggan baru</p>
                            <h5>Headers</h5>
                            <pre><code>Content-Type: application/json</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "name": "John Doe",
    "email": "john@example.com",
    "password": "password123",
    "password_confirmation": "password123",
    "phone_number": "08123456789",
    "address": "Jl. Example No. 123"
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>name</strong> - Wajib diisi, nama lengkap pengguna</li>
                                <li><strong>email</strong> - Wajib diisi, format email, harus unik</li>
                                <li><strong>password</strong> - Wajib diisi, minimal 8 karakter</li>
                                <li><strong>password_confirmation</strong> - Wajib diisi, harus sama dengan password</li>
                                <li><strong>phone_number</strong> - Wajib diisi, nomor telepon</li>
                                <li><strong>address</strong> - Wajib diisi, alamat lengkap</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "john@example.com",
            "role": "pelanggan",
            "phone_number": "08123456789",
            "address": "Jl. Example No. 123",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "updated_at": "2023-05-01T10:00:00.000000Z"
        },
        "token": "1|laravel_sanctum_token..."
    },
    "message": "Pendaftaran berhasil"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "email": ["Email sudah digunakan."],
        "password": ["Password minimal harus 8 karakter."]
    },
    "message": "Validation Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/pelanggan/login</span>
                            <p class="mt-2">Login sebagai pelanggan</p>
                            <h5>Headers</h5>
                            <pre><code>Content-Type: application/json</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "email": "john@example.com",
    "password": "password123"
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>email</strong> - Wajib diisi, format email</li>
                                <li><strong>password</strong> - Wajib diisi</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "john@example.com",
            "role": "pelanggan",
            "phone_number": "08123456789",
            "address": "Jl. Example No. 123",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "updated_at": "2023-05-01T10:00:00.000000Z"
        },
        "token": "1|laravel_sanctum_token..."
    },
    "message": "Login berhasil"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Email atau password tidak valid"
    },
    "message": "Authentication Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/penjahit/register</span>
                            <p class="mt-2">Registrasi akun penjahit baru</p>
                            <h5>Headers</h5>
                            <pre><code>Content-Type: application/json</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "name": "John Doe",
    "email": "tailor@example.com",
    "password": "password123",
    "password_confirmation": "password123",
    "phone_number": "08123456789",
    "address": "Jl. Example No. 123",
    "shop_description": "Jasa jahit profesional dengan pelayanan terbaik",
    "specializations": [1, 2, 3]
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>name</strong> - Wajib diisi, nama lengkap penjahit</li>
                                <li><strong>email</strong> - Wajib diisi, format email, harus unik</li>
                                <li><strong>password</strong> - Wajib diisi, minimal 8 karakter</li>
                                <li><strong>password_confirmation</strong> - Wajib diisi, harus sama dengan password</li>
                                <li><strong>phone_number</strong> - Wajib diisi, nomor telepon</li>
                                <li><strong>address</strong> - Wajib diisi, alamat lengkap</li>
                                <li><strong>shop_description</strong> - Wajib diisi, deskripsi toko/jasa</li>
                                <li><strong>specializations</strong> - Wajib diisi, array ID spesialisasi</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "user": {
            "id": 2,
            "name": "John Doe",
            "email": "tailor@example.com",
            "role": "penjahit",
            "phone_number": "08123456789",
            "address": "Jl. Example No. 123",
            "shop_description": "Jasa jahit profesional dengan pelayanan terbaik",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "updated_at": "2023-05-01T10:00:00.000000Z",
            "specializations": [
                {
                    "id": 1,
                    "name": "Kemeja"
                },
                {
                    "id": 2,
                    "name": "Gaun"
                },
                {
                    "id": 3,
                    "name": "Celana"
                }
            ]
        },
        "token": "1|laravel_sanctum_token..."
    },
    "message": "Pendaftaran berhasil"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "email": ["Email sudah digunakan."],
        "specializations": ["Spesialisasi wajib diisi."]
    },
    "message": "Validation Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/penjahit/login</span>
                            <p class="mt-2">Login sebagai penjahit</p>
                            <h5>Headers</h5>
                            <pre><code>Content-Type: application/json</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "email": "tailor@example.com",
    "password": "password123"
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>email</strong> - Wajib diisi, format email</li>
                                <li><strong>password</strong> - Wajib diisi</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "user": {
            "id": 2,
            "name": "John Doe",
            "email": "tailor@example.com",
            "role": "penjahit",
            "phone_number": "08123456789",
            "address": "Jl. Example No. 123",
            "shop_description": "Jasa jahit profesional dengan pelayanan terbaik",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "updated_at": "2023-05-01T10:00:00.000000Z"
        },
        "token": "1|laravel_sanctum_token..."
    },
    "message": "Login berhasil"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Email atau password tidak valid"
    },
    "message": "Authentication Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/admin/login</span>
                            <p class="mt-2">Login sebagai admin</p>
                            <h5>Headers</h5>
                            <pre><code>Content-Type: application/json</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "email": "admin@example.com",
    "password": "admin123"
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>email</strong> - Wajib diisi, format email</li>
                                <li><strong>password</strong> - Wajib diisi</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "user": {
            "id": 3,
            "name": "Admin",
            "email": "admin@example.com",
            "role": "admin",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "updated_at": "2023-05-01T10:00:00.000000Z"
        },
        "token": "1|laravel_sanctum_token..."
    },
    "message": "Login berhasil"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Email atau password tidak valid"
    },
    "message": "Authentication Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/logout</span>
                            <p class="mt-2">Logout pengguna (invalidasi token)</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {},
    "message": "Berhasil logout"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Unauthenticated"
    },
    "message": "Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/email/verification-notification</span>
                            <p class="mt-2">Mengirim ulang email verifikasi</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {},
    "message": "Email verifikasi telah dikirim"
}</code></pre>
                        </div>
                    </div>

                    <div id="profile-endpoints" class="mt-4">
                        <h3>Profil</h3>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/profile</span>
                            <p class="mt-2">Mendapatkan informasi profil pengguna</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 1,
        "name": "John Doe",
        "email": "john@example.com",
        "role": "pelanggan",
        "phone_number": "08123456789",
        "address": "Jl. Example No. 123",
        "profile_photo": "profile_photos/user1.jpg",
        "created_at": "2023-05-01T10:00:00.000000Z",
        "updated_at": "2023-05-01T10:00:00.000000Z"
    },
    "message": "Profil berhasil ditemukan"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Unauthenticated"
    },
    "message": "Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/profile</span>
                            <p class="mt-2">Mengupdate informasi profil pengguna</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: application/json</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "name": "John Doe Updated",
    "phone_number": "087654321",
    "address": "Jl. Updated No. 456",
    "shop_description": "Deskripsi toko yang diupdate" // khusus penjahit
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>name</strong> - Opsional, nama baru pengguna</li>
                                <li><strong>phone_number</strong> - Opsional, nomor telepon baru</li>
                                <li><strong>address</strong> - Opsional, alamat baru</li>
                                <li><strong>shop_description</strong> - Opsional, deskripsi toko baru (hanya untuk penjahit)</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 1,
        "name": "John Doe Updated",
        "email": "john@example.com",
        "role": "pelanggan",
        "phone_number": "087654321",
        "address": "Jl. Updated No. 456",
        "created_at": "2023-05-01T10:00:00.000000Z",
        "updated_at": "2023-05-02T10:00:00.000000Z"
    },
    "message": "Profil berhasil diupdate"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "phone_number": ["Format nomor telepon tidak valid"]
    },
    "message": "Validation Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/profile/photo</span>
                            <p class="mt-2">Mengupload foto profil</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: multipart/form-data</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "profile_photo": [file]
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>profile_photo</strong> - Wajib diisi, file gambar, maksimal 2MB</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 1,
        "name": "John Doe",
        "profile_photo": "profile_photos/user1_updated.jpg"
    },
    "message": "Foto profil berhasil diupload"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "profile_photo": ["File harus berupa gambar dengan ukuran maksimal 2MB"]
    },
    "message": "Validation Error."
}</code></pre>
                        </div>
                    </div>

                    <div id="customer-endpoints" class="mt-4">
                        <h3>Pelanggan</h3>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/dashboard</span>
                            <p class="mt-2">Mendapatkan data dashboard pelanggan</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "john@example.com",
            "phone_number": "08123456789"
        },
        "bookings_count": {
            "total": 5,
            "ongoing": 2,
            "completed": 3
        },
        "latest_bookings": [
            {
                "id": 3,
                "transaction_code": "TRX-003",
                "tailor_name": "Penjahit ABC",
                "category": "Atasan",
                "service_type": "Jahit Baru",
                "status": "diproses",
                "appointment_date": "2023-05-10"
            }
        ]
    },
    "message": "Dashboard data retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Unauthorized"
    },
    "message": "Error."
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/bookings/customer</span>
                            <p class="mt-2">Mendapatkan semua booking yang dilakukan pelanggan</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Query Parameters</h5>
                            <ul>
                                <li><strong>status</strong> (optional) - Filter berdasarkan status (reservasi, dikonfirmasi, diproses, selesai, dibatalkan)</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": [
        {
            "id": 1,
            "transaction_code": "TRX-001",
            "customer_id": 1,
            "tailor_id": 2,
            "appointment_date": "2023-05-05",
            "appointment_time": "10:00",
            "service_type": "Jahit Baru",
            "category": "Atasan",
            "design_photo": "design_photos/design1.jpg",
            "notes": "Mohon dibuat sesuai ukuran",
            "status": "selesai",
            "total_price": 150000,
            "payment_status": "paid",
            "payment_method": "Midtrans",
            "completed_at": "2023-05-10T14:00:00.000000Z",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "updated_at": "2023-05-10T14:00:00.000000Z",
            "tailor": {
                "id": 2,
                "name": "Penjahit ABC",
                "profile_photo": "profile_photos/tailor1.jpg",
                "address": "Jl. Penjahit No. 123"
            },
            "rating": {
                "id": 1,
                "rating": 5,
                "review": "Sangat puas dengan hasilnya"
            }
        }
    ],
    "message": "Booking list retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Unauthorized"
    },
    "message": "Error."
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/bookings/customer/status/{status}</span>
                            <p class="mt-2">Mendapatkan booking pelanggan berdasarkan status</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>status</strong> - Status booking (reservasi, dikonfirmasi, diproses, selesai, dibatalkan)</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": [
        {
            "id": 1,
            "transaction_code": "TRX-001",
            "tailor_name": "Penjahit ABC",
            "tailor_photo": "profile_photos/tailor1.jpg",
            "appointment_date": "2023-05-05",
            "service_type": "Jahit Baru",
            "category": "Atasan",
            "payment_method": "Midtrans",
            "payment_status": "paid"
        }
    ],
    "message": "Booking list retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Invalid status"
    },
    "message": "Invalid status"
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/tailors/{tailor}/book</span>
                            <p class="mt-2">Membuat booking baru ke penjahit</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: multipart/form-data</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>tailor</strong> - ID penjahit yang akan dibooking</li>
                            </ul>
                            <h5>Request Body</h5>
                            <pre><code>{
    "appointment_date": "2023-05-15",
    "appointment_time": "14:00",
    "service_type": "Jahit Baru",
    "category": "Atasan",
    "design_photo": [file],
    "notes": "Mohon dibuat sesuai ukuran",
    "payment_method": "Midtrans"
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>appointment_date</strong> - Wajib diisi, format tanggal (YYYY-MM-DD), harus tanggal sekarang atau setelahnya</li>
                                <li><strong>appointment_time</strong> - Wajib diisi, format waktu (HH:MM)</li>
                                <li><strong>service_type</strong> - Wajib diisi, nilai valid: "Perbaikan", "Jahit Baru"</li>
                                <li><strong>category</strong> - Wajib diisi, nilai valid: "Atasan", "Bawahan", "Terusan"</li>
                                <li><strong>design_photo</strong> - Wajib diisi, file gambar, maksimal 2MB</li>
                                <li><strong>notes</strong> - Opsional, catatan tambahan</li>
                                <li><strong>payment_method</strong> - Wajib diisi, metode pembayaran</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "booking": {
            "id": 5,
            "transaction_code": "TRX-005",
            "customer_id": 1,
            "tailor_id": 2,
            "appointment_date": "2023-05-15",
            "appointment_time": "14:00",
            "service_type": "Jahit Baru",
            "category": "Atasan",
            "design_photo": "design_photos/design5.jpg",
            "notes": "Mohon dibuat sesuai ukuran",
            "status": "reservasi",
            "payment_status": "unpaid",
            "payment_method": "Midtrans",
            "created_at": "2023-05-05T10:00:00.000000Z",
            "updated_at": "2023-05-05T10:00:00.000000Z"
        },
        "message": "Booking berhasil dibuat",
        "next_steps": {
            "payment": "Silakan lakukan pembayaran untuk mengkonfirmasi booking",
            "cancellation": "Anda dapat membatalkan booking sebelum melakukan pembayaran"
        }
    },
    "message": "Booking berhasil dibuat"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "appointment": ["Jadwal tidak tersedia. Penjahit sudah memiliki booking pada tanggal yang sama"]
    },
    "message": "Error validasi."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/bookings/{booking}/cancel</span>
                            <p class="mt-2">Membatalkan booking</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>booking</strong> - ID booking yang akan dibatalkan</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 5,
        "status": "dibatalkan",
        "updated_at": "2023-05-05T11:00:00.000000Z"
    },
    "message": "Booking berhasil dibatalkan."
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "status": ["Booking tidak dapat dibatalkan karena sudah diproses"]
    },
    "message": "Error validasi."
}</code></pre>
                        </div>
                    </div>

                    <div id="tailor-endpoints" class="mt-4">
                        <h3>Penjahit</h3>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/penjahit/dashboard</span>
                            <p class="mt-2">Mendapatkan data dashboard penjahit</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "user": {
            "id": 2,
            "name": "Penjahit ABC",
            "email": "tailor@example.com"
        },
        "stats": {
            "total_bookings": 10,
            "ongoing_bookings": 5,
            "completed_bookings": 4,
            "cancelled_bookings": 1,
            "average_rating": 4.5
        },
        "recent_bookings": [
            {
                "id": 10,
                "transaction_code": "TRX-010",
                "customer_name": "John Doe",
                "appointment_date": "2023-05-20",
                "service_type": "Jahit Baru",
                "status": "reservasi",
                "created_at": "2023-05-10T10:00:00.000000Z"
            }
        ],
        "earnings": {
            "this_month": 750000,
            "last_month": 500000,
            "total": 1250000
        }
    },
    "message": "Dashboard data retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Unauthorized"
    },
    "message": "Error."
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/penjahit/calendar/{month}/{year}</span>
                            <p class="mt-2">Mendapatkan jadwal booking untuk bulan dan tahun tertentu</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>month</strong> - Bulan (1-12)</li>
                                <li><strong>year</strong> - Tahun (format 4 digit, contoh: 2023)</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "2023-05-01": {
            "date": "2023-05-01",
            "day": "01",
            "day_name": "Senin",
            "bookings": []
        },
        "2023-05-02": {
            "date": "2023-05-02",
            "day": "02",
            "day_name": "Selasa",
            "bookings": [
                {
                    "id": 1,
                    "transaction_code": "TRX-001",
                    "customer_name": "John Doe",
                    "customer_phone": "08123456789",
                    "appointment_time": "10:00",
                    "service_type": "Jahit Baru",
                    "category": "Atasan",
                    "status": "dikonfirmasi"
                }
            ]
        }
    },
    "message": "Calendar data retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Invalid date"
    },
    "message": "Invalid date"
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/bookings/{booking}/accept</span>
                            <p class="mt-2">Menerima booking dari pelanggan</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: application/json</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>booking</strong> - ID booking yang akan diterima</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 5,
        "status": "dikonfirmasi",
        "accepted_at": "2023-05-05T14:00:00.000000Z",
        "updated_at": "2023-05-05T14:00:00.000000Z"
    },
    "message": "Booking berhasil dikonfirmasi"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Booking tidak dapat dikonfirmasi karena status sudah berubah"
    },
    "message": "Error."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/bookings/{booking}/reject</span>
                            <p class="mt-2">Menolak booking dari pelanggan</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: application/json</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>booking</strong> - ID booking yang akan ditolak</li>
                            </ul>
                            <h5>Request Body</h5>
                            <pre><code>{
    "rejection_reason": "Jadwal sudah penuh"
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>rejection_reason</strong> - Wajib diisi, alasan penolakan</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 5,
        "status": "dibatalkan",
        "rejection_reason": "Jadwal sudah penuh",
        "rejected_at": "2023-05-05T14:00:00.000000Z",
        "updated_at": "2023-05-05T14:00:00.000000Z"
    },
    "message": "Booking berhasil ditolak"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "rejection_reason": ["Alasan penolakan wajib diisi"]
    },
    "message": "Error validasi."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/bookings/{booking}/payment</span>
                            <p class="mt-2">Mengubah status pembayaran booking menjadi paid</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: application/json</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>booking</strong> - ID booking yang akan diubah status pembayarannya</li>
                            </ul>
                            <h5>Request Body</h5>
                            <pre><code>{
    "payment_status": "paid"
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>payment_status</strong> - Wajib diisi, nilai valid: "paid" atau "success"</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 5,
        "payment_status": "paid",
        "updated_at": "2023-05-05T15:00:00.000000Z"
    },
    "message": "Status pembayaran berhasil diubah"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Unauthorized"
    },
    "message": "Unauthorized."
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/bookings/{booking}/completion-payment</span>
                            <p class="mt-2">Memproses pembayaran akhir dan mengatur tanggal pengambilan</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: application/json</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>booking</strong> - ID booking yang akan diproses pembayaran akhirnya</li>
                            </ul>
                            <h5>Request Body</h5>
                            <pre><code>{
    "pickup_date": "2023-05-20"
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>pickup_date</strong> - Wajib diisi, format tanggal (YYYY-MM-DD), harus tanggal sekarang atau setelahnya</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 5,
        "payment_status": "paid",
        "pickup_date": "2023-05-20",
        "updated_at": "2023-05-05T16:00:00.000000Z"
    },
    "message": "Pembayaran akhir berhasil diproses"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Invalid status",
        "message": "Pembayaran hanya dapat dilakukan untuk pesanan yang sudah selesai"
    },
    "message": "Invalid status"
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/penjahit/bookings</span>
                            <p class="mt-2">Mendapatkan semua booking penjahit</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Query Parameters</h5>
                            <ul>
                                <li><strong>status</strong> (optional) - Filter berdasarkan status (reservasi, dikonfirmasi, diproses, selesai, dibatalkan)</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": [
        {
            "id": 5,
            "transaction_code": "TRX-005",
            "customer_id": 1,
            "appointment_date": "2023-05-15",
            "appointment_time": "14:00",
            "service_type": "Jahit Baru",
            "category": "Atasan",
            "status": "dikonfirmasi",
            "total_price": 150000,
            "payment_status": "paid",
            "created_at": "2023-05-05T10:00:00.000000Z",
            "updated_at": "2023-05-05T15:00:00.000000Z",
            "customer": {
                "id": 1,
                "name": "John Doe",
                "phone_number": "08123456789"
            }
        }
    ],
    "message": "Booking list retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Unauthorized"
    },
    "message": "Error."
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/penjahit/bookings/status/{status}</span>
                            <p class="mt-2">Mendapatkan booking penjahit berdasarkan status</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Path Parameters</h5>
                            <ul>
                                <li><strong>status</strong> - Status booking (reservasi, dikonfirmasi, diproses, selesai, dibatalkan)</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": [
        {
            "id": 5,
            "transaction_code": "TRX-005",
            "customer_name": "John Doe",
            "customer_phone": "08123456789",
            "appointment_date": "2023-05-15",
            "service_type": "Jahit Baru",
            "payment_status": "paid"
        }
    ],
    "message": "Booking list retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Invalid status"
    },
    "message": "Invalid status"
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/penjahit/services</span>
                            <p class="mt-2">Mendapatkan semua layanan penjahit</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": [
        {
            "id": 1,
            "tailor_id": 2,
            "name": "Jahit Kemeja",
            "description": "Jasa jahit kemeja pria dan wanita",
            "price": 150000,
            "is_available": true,
            "created_at": "2023-05-01T10:00:00.000000Z",
            "updated_at": "2023-05-01T10:00:00.000000Z"
        }
    ],
    "message": "Services retrieved successfully"
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/penjahit/services</span>
                            <p class="mt-2">Menambahkan layanan baru</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: application/json</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "name": "Jahit Jas",
    "description": "Jasa pembuatan jas pria berkualitas tinggi",
    "price": 500000
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>name</strong> - Wajib diisi, nama layanan</li>
                                <li><strong>description</strong> - Wajib diisi, deskripsi layanan</li>
                                <li><strong>price</strong> - Wajib diisi, harga layanan (angka)</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 2,
        "tailor_id": 2,
        "name": "Jahit Jas",
        "description": "Jasa pembuatan jas pria berkualitas tinggi",
        "price": 500000,
        "is_available": true,
        "created_at": "2023-05-05T10:00:00.000000Z",
        "updated_at": "2023-05-05T10:00:00.000000Z"
    },
    "message": "Service created successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "price": ["Harga harus berupa angka"]
    },
    "message": "Validation Error."
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/penjahit/gallery</span>
                            <p class="mt-2">Mendapatkan semua galeri penjahit</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": [
        {
            "id": 1,
            "tailor_id": 2,
            "title": "Kemeja Batik",
            "description": "Kemeja batik pesanan pelanggan",
            "photo_path": "gallery_photos/kemeja_batik.jpg",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "updated_at": "2023-05-01T10:00:00.000000Z"
        }
    ],
    "message": "Gallery items retrieved successfully"
}</code></pre>
                        </div>

                        <div class="endpoint post">
                            <span class="method post-method">POST</span>
                            <span class="ms-2">/penjahit/gallery</span>
                            <p class="mt-2">Menambahkan item galeri baru</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}
Content-Type: multipart/form-data</code></pre>
                            <h5>Request Body</h5>
                            <pre><code>{
    "title": "Jas Pernikahan",
    "description": "Jas pernikahan custom pesanan pelanggan",
    "photo": [file]
}</code></pre>
                            <h5>Validasi</h5>
                            <ul>
                                <li><strong>title</strong> - Wajib diisi, judul item galeri</li>
                                <li><strong>description</strong> - Wajib diisi, deskripsi item galeri</li>
                                <li><strong>photo</strong> - Wajib diisi, file gambar, maksimal 2MB</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "id": 2,
        "tailor_id": 2,
        "title": "Jas Pernikahan",
        "description": "Jas pernikahan custom pesanan pelanggan",
        "photo_path": "gallery_photos/jas_pernikahan.jpg",
        "created_at": "2023-05-05T10:00:00.000000Z",
        "updated_at": "2023-05-05T10:00:00.000000Z"
    },
    "message": "Gallery item created successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "photo": ["File harus berupa gambar dengan ukuran maksimal 2MB"]
    },
    "message": "Validation Error."
}</code></pre>
                        </div>
                    </div>

                    <div id="admin-endpoints" class="mt-4">
                        <h3>Admin</h3>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/admin/dashboard</span>
                            <p class="mt-2">Mendapatkan data dashboard admin</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "stats": {
            "total_users": {
                "customers": 50,
                "tailors": 20,
                "admins": 2
            },
            "bookings": {
                "total": 100,
                "ongoing": 40,
                "completed": 55,
                "cancelled": 5
            },
            "revenue": {
                "this_month": 5000000,
                "last_month": 4500000,
                "total": 15000000
            },
            "ratings": {
                "average": 4.7,
                "count": 75
            }
        },
        "recent_bookings": [
            {
                "id": 10,
                "transaction_code": "TRX-010",
                "customer_name": "John Doe",
                "tailor_name": "Penjahit ABC",
                "service_type": "Jahit Baru",
                "status": "diproses",
                "total_price": 150000,
                "created_at": "2023-05-10T10:00:00.000000Z"
            }
        ],
        "recent_users": [
            {
                "id": 70,
                "name": "Jane Smith",
                "role": "pelanggan",
                "created_at": "2023-05-10T10:00:00.000000Z"
            }
        ]
    },
    "message": "Dashboard data retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
        "error": "Unauthorized access"
    },
    "message": "Error."
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/customers</span>
                            <p class="mt-2">Mendapatkan semua data pelanggan</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Query Parameters</h5>
                            <ul>
                                <li><strong>search</strong> (optional) - Mencari berdasarkan nama atau email</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": [
        {
            "id": 1,
            "name": "John Doe",
            "email": "john@example.com",
            "phone_number": "08123456789",
            "address": "Jl. Example No. 123",
            "profile_photo": "profile_photos/user1.jpg",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "bookings_count": 5
        }
    ],
    "message": "Customers retrieved successfully"
}</code></pre>
                        </div>
                    </div>

                    <div id="wallet-endpoints" class="mt-4">
                        <h3>Wallet & Withdrawal</h3>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/wallet</span>
                            <p class="mt-2">Mendapatkan informasi wallet pengguna</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": {
        "balance": 1000000.00,
        "transactions": [
            {
                "id": 1,
                "type": "credit",
                "amount": 500000.00,
                "description": "Pembayaran booking #TRX-001",
                "status": "success",
                "created_at": "2024-05-03T10:00:00.000000Z",
                "booking": {
                    "id": 1,
                    "transaction_code": "TRX-001",
                    "service_type": "jahit",
                    "category": "baju"
                }
            }
        ]
    },
    "message": "Wallet information retrieved successfully"
}</code></pre>
                            <h5>Error Response</h5>
                            <pre><code>{
    "success": false,
    "data": {
    }
}</code></pre>
                        </div>

                        <div class="endpoint get">
                            <span class="method get-method">GET</span>
                            <span class="ms-2">/customers</span>
                            <p class="mt-2">Mendapatkan semua data pelanggan</p>
                            <h5>Headers</h5>
                            <pre><code>Authorization: Bearer {token}</code></pre>
                            <h5>Query Parameters</h5>
                            <ul>
                                <li><strong>search</strong> (optional) - Mencari berdasarkan nama atau email</li>
                            </ul>
                            <h5>Response</h5>
                            <pre><code>{
    "success": true,
    "data": [
        {
            "id": 1,
            "name": "John Doe",
            "email": "john@example.com",
            "phone_number": "08123456789",
            "address": "Jl. Example No. 123",
            "profile_photo": "profile_photos/user1.jpg",
            "created_at": "2023-05-01T10:00:00.000000Z",
            "bookings_count": 5
        }
    ],
    "message": "Customers retrieved successfully"
}</code></pre>
                        </div>
                    </div>
                </div>

                <div class="mt-5 mb-5" id="files">
                    <h2>File & Media</h2>
                </div>
            </main>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
</body>

</html>
