# POST /v2/mail/{type}/update

# Mail: Update Attributes

این اندپوینت یک متد عمومی و داینامیک برای ویرایش ویژگی‌های یک ایمیل است.   
با استفاده از این متد می‌توان وضعیت‌هایی مانند "خوانده شده" (`read\_at`)، برچسب‌ها (`label`)، تگ‌ها (`tag`) یا هر ستون دیگری از ایمیل را در صندوق ورودی یا ارسالی تغییر داد.

<div class="api-docs" id="bkmrk-"></div>## Request Overview

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fmail%2F%7Btype%7D"><div class="endpoint-info"><div>**URL:** `/v2/mail/{type}/update`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Controller:** MailController@mailUpdate</div><div>**Middleware Stack:** authWithJwt</div></div></div>## Access Control

<div class="api-docs" id="bkmrk-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D9%85%D8%B9%D8%AA%D8%A8%D8%B1-jwt.">- دسترسی معتبر JWT.

</div>## Path Parameters

<div class="api-docs" id="bkmrk-field-description-ty"><table class="schema-table" dir="rtl"><thead><tr><th>Field</th><th>Description</th></tr></thead><tbody><tr><td>type</td><td>نوع صندوق پستی که ایمیل در آن قرار دارد (نام جدول را تعیین می‌کند). - `inbox`: عملیات روی جدول `mail_inbox`
- `sent`: عملیات روی جدول `mail_sent`

</td></tr></tbody></table>

</div>## Body Parameters

<div class="api-docs" id="bkmrk-field-type-descripti"><table class="schema-table" dir="rtl"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>mail\_id</td><td>integer</td><td>**(الزامی)** شناسه منحصر‌به‌فرد ایمیل (`id`) که قصد ویرایش آن را دارید.</td></tr><tr><td>key</td><td>string</td><td>**(الزامی)** نام ستون (Column) در دیتابیس که باید تغییر کند.   
مثال: `read\_at`, `tag`, `label`, `type`.</td></tr><tr><td>value</td><td>mixed</td><td>**(الزامی)** مقدار جدیدی که باید در ستون انتخاب شده قرار گیرد.</td></tr></tbody></table>

</div>## Logic Details

منطق این متد بسیار مستقیم است:

<div class="api-docs" id="bkmrk-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D8%AC%D8%AF%D9%88%D9%84-%D9%87%D8%AF%D9%81%3A-%D8%B3%DB%8C%D8%B3%D8%AA">1. **تشخیص جدول هدف:** سیستم نام جدول را با الحاق پیشوند `mail_` به پارامتر `type` آدرس می‌سازد (مثلاً `mail\_inbox`).
2. **اجرای آپدیت:** یک کوئری Update روی جدول انتخاب شده اجرا می‌شود که در آن رکوردی با شناسه `mail_id` پیدا شده و مقدار ستون `key` با `value` جایگزین می‌شود.
3. **موارد استفاده معمول:**
    - **تغییر وضعیت خواندن:** ارسال `key: read\_at` و `value: (timestamp)`.
    - **ستاره‌دار کردن:** ارسال `key: tag` و `value: starred`.
    - **تغییر لیبل:** ارسال `key: label` و `value: work`.

</div>## Response Structure

### پاسخ موفق

<div class="api-docs" id="bkmrk-status-code%3A-200-ok-">- **Status Code:** `200 OK`
- **Body:**```json
    {
      "status": true,
      "time": 1670157000
    }
    ```

</div>### پاسخ خطا

در صورت بروز خطا (مثلاً نام ستون اشتباه باشد):

<div class="api-docs" id="bkmrk-status-code%3A-400-bad">- **Status Code:** `400 Bad Request`
- **Body:**```json
    {
      "status": false,
      "error": "SQLSTATE[42S22]: Column not found...",
      "trace": [...]
    }
    ```

</div>## Flowchart

<div class="api-docs" id="bkmrk-start-%28post-%2Fmail%2F%7Bt"><div class="flowchart"><div class="flow-item">Start (POST /mail/{type}/update)</div><div class="flow-arrow">↓</div><div class="flow-item-process" style="background-color: #e3f2fd;">**Determine Table**  
Table = "mail_" + {type}</div><div class="flow-arrow">↓</div><div class="flow-item-process" style="width: 200px;">**Construct Query**  
UPDATE [Table]  
SET [key] = [value]  
WHERE id = [mail_id]</div><div class="flow-arrow">↓</div><div class="flow-item-decision">Update Successful?</div><div class="flow-arrow-label-left">No (Exception)</div><div class="flow-arrow-label-right">Yes</div><div style="display: flex; justify-content: center; gap: 40px; margin: 10px 0;"><div class="flow-item-error">Return 400 + Error Trace</div><div class="flow-item-success">Return Status True</div></div></div></div>