# Dokumentasi API Verifikasi Email

## Daftar Isi

1. [Pengenalan](#pengenalan)
2. [Endpoint API Verifikasi Email](#endpoint-api-verifikasi-email)
3. [Pengujian di Postman](#pengujian-di-postman)
4. [Troubleshooting](#troubleshooting)

## Pengenalan

API Verifikasi Email digunakan untuk memverifikasi alamat email pengguna setelah registrasi. Sistem menggunakan link verifikasi yang dikirim ke email pengguna. Email verifikasi memiliki tampilan yang profesional dan berisi link yang dapat diklik untuk memverifikasi akun.

## Endpoint API Verifikasi Email

### 1. Kirim Email Verifikasi

- **URL**: `/api/email/verification-notification`
- **Method**: `POST`
- **Headers**:
  ```
  Accept: application/json
  Content-Type: application/json
  Authorization: Bearer {token}
  ```
- **Response Sukses** (200):
  ```json
  {
      "success": true,
      "data": {
          "verification_url": "http://example.com/verify-email?expires=1234&id=1&signature=abcdef"
      },
      "message": "Link verifikasi email telah dikirim."
  }
  ```
- **Response Error** (400):
  ```json
  {
      "success": false,
      "message": "Email sudah terverifikasi."
  }
  ```

### 2. Verifikasi Email

- **URL**: `/api/email/verify/{id}/{hash}`
- **Method**: `GET`
- **Headers**:
  ```
  Accept: application/json
  ```
- **Response Sukses** (200):
  ```json
  {
      "status": "success",
      "message": "Email berhasil diverifikasi.",
      "redirect_url": "http://example.com/login"
  }
  ```
- **Response Error** (400):
  ```json
  {
      "status": "error",
      "message": "Invalid/Expired url provided.",
      "redirect_url": "http://example.com/email-verification-error"
  }
  ```

### 3. Kirim Ulang Email Verifikasi

- **URL**: `/api/email/verification-resend`
- **Method**: `POST`
- **Headers**:
  ```
  Accept: application/json
  Content-Type: application/json
  Authorization: Bearer {token}
  ```
- **Response Sukses** (200):
  ```json
  {
      "success": true,
      "data": {
          "verification_url": "http://example.com/verify-email?expires=1234&id=1&signature=abcdef"
      },
      "message": "Link verifikasi email telah dikirim ulang."
  }
  ```
- **Response Error** (400):
  ```json
  {
      "success": false,
      "message": "Email sudah terverifikasi."
  }
  ```

## Pengujian di Postman

### Persiapan Collection

1. Buka Postman dan buat collection baru bernama "Project Jahit API"
2. Tambahkan environment variable:
   - `base_url`: `http://localhost:8000/api`
   - `token`: (kosong, akan diisi setelah login)

### Langkah-langkah Pengujian

#### 1. Login untuk Mendapatkan Token

1. **Request**:
   - Method: `POST`
   - URL: `{{base_url}}/pelanggan/login` atau `{{base_url}}/penjahit/login`
   - Body (raw JSON):
     ```json
     {
         "email": "email@example.com",
         "password": "password"
     }
     ```

2. **Simpan Token**:
   - Dari response, salin nilai token
   - Simpan di environment variable `token`

#### 2. Kirim Email Verifikasi

1. **Request**:
   - Method: `POST`
   - URL: `{{base_url}}/email/verification-notification`
   - Headers:
     ```
     Authorization: Bearer {{token}}
     Accept: application/json
     ```

2. **Cek Email**:
   - Buka email yang terdaftar
   - Anda akan menerima email dengan tampilan profesional
   - Email berisi tombol "Verifikasi Email Saya"

#### 3. Verifikasi Email

1. **Klik Link Verifikasi**:
   - Klik tombol "Verifikasi Email Saya" di email
   - Atau salin URL dari email dan buka di browser

2. **Hasil**:
   - Jika berhasil, Anda akan diarahkan ke halaman login
   - Status akun Anda akan berubah menjadi terverifikasi

## Troubleshooting

### Masalah Umum:

1. **"Email sudah terverifikasi"**
   - Akun Anda sudah terverifikasi sebelumnya
   - Tidak perlu melakukan verifikasi lagi

2. **"Invalid/Expired url provided"**
   - Link verifikasi sudah kadaluarsa (lebih dari 60 menit)
   - Gunakan endpoint `/api/email/verification-resend` untuk mendapatkan link baru

3. **"User not found"**
   - ID pengguna dalam link tidak valid
   - Pastikan menggunakan link terbaru

### Tips:

- Link verifikasi hanya berlaku selama 60 menit
- Jika link kadaluarsa, gunakan fitur "Kirim Ulang Email Verifikasi"
- Pastikan Anda login sebelum meminta link verifikasi baru
- Periksa folder spam jika email tidak muncul di inbox 