First commit
This commit is contained in:
@@ -0,0 +1,740 @@
|
||||
# مستندات کامل APIهای مورد نیاز Views
|
||||
|
||||
این document شامل تمام APIهایی است که توسط viewهای زیر استفاده میشوند:
|
||||
|
||||
- **Calendar** (`views/apps/calendar`)
|
||||
- **Kanban** (`views/apps/kanban`)
|
||||
- **Todo** (`views/apps/todo`)
|
||||
- **Account Settings** (`views/pages/account-settings`)
|
||||
|
||||
> **Base URL:** `NEXT_PUBLIC_API_URL` یا `ENVOY_GATEWAY_URL` یا `http://localhost:9035`
|
||||
> **Authentication:** تمام درخواستها نیاز به هدر `Authorization: Bearer {token}` دارند (توکن از `localStorage.auth_token` خوانده میشود)
|
||||
|
||||
---
|
||||
|
||||
## ۱. Calendar API (تقویم)
|
||||
|
||||
**سرویس:** `eventService`
|
||||
**Slice:** `redux-store/slices/calendar.ts`
|
||||
|
||||
### ۱.۱ لیست رویدادها
|
||||
|
||||
```
|
||||
GET /api/events
|
||||
```
|
||||
|
||||
**Query Parameters (اختیاری):**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|-----------|-------|-------------------------------------------|
|
||||
| `start` | string | ISO 8601 - تاریخ شروع فیلتر |
|
||||
| `end` | string | ISO 8601 - تاریخ پایان فیلتر |
|
||||
| `calendar`| string | فیلتر بر اساس تقویم: `Personal`, `Business`, `Family`, `Holiday`, `ETC` |
|
||||
|
||||
**مثال:**
|
||||
```
|
||||
GET /api/events?start=2025-01-01T00:00:00.000Z&end=2025-01-31T23:59:59.000Z&calendar=Business
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"events": [
|
||||
{
|
||||
"id": "string",
|
||||
"title": "string",
|
||||
"description": "string",
|
||||
"deadline": 1704067200,
|
||||
"tags": ["string"],
|
||||
"author": {
|
||||
"name": "string",
|
||||
"image": "string"
|
||||
},
|
||||
"calendar": "Personal | Business | Family | Holiday | ETC",
|
||||
"start": "2025-01-15T09:00:00.000Z",
|
||||
"end": "2025-01-15T10:00:00.000Z",
|
||||
"allDay": false,
|
||||
"extendedProps": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۱.۲ ایجاد رویداد جدید
|
||||
|
||||
```
|
||||
POST /api/events
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"title": "string", // الزامی
|
||||
"description": "string", // اختیاری
|
||||
"calendar": "Personal | Business | Family | Holiday | ETC", // الزامی
|
||||
"start": "2025-01-15T09:00:00.000Z", // ISO 8601
|
||||
"end": "2025-01-15T10:00:00.000Z", // ISO 8601
|
||||
"allDay": false, // اختیاری، پیشفرض: false
|
||||
"deadline": 1704067200, // اختیاری - Unix timestamp
|
||||
"tags": ["string"], // اختیاری
|
||||
"extendedProps": {} // اختیاری
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"event": {
|
||||
"id": "string",
|
||||
"title": "string",
|
||||
"description": "string",
|
||||
"calendar": "string",
|
||||
"start": "string",
|
||||
"end": "string",
|
||||
"allDay": boolean,
|
||||
"deadline": number,
|
||||
"tags": ["string"],
|
||||
"author": {},
|
||||
"extendedProps": {}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۱.۳ دریافت یک رویداد
|
||||
|
||||
```
|
||||
GET /api/events/{id}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|-----------|
|
||||
| `id` | string | شناسه رویداد |
|
||||
|
||||
---
|
||||
|
||||
### ۱.۴ بهروزرسانی رویداد
|
||||
|
||||
```
|
||||
PUT /api/events/{id}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|-----------|
|
||||
| `id` | string | شناسه رویداد |
|
||||
|
||||
**Request Body (همه فیلدها اختیاری):**
|
||||
```json
|
||||
{
|
||||
"title": "string",
|
||||
"description": "string",
|
||||
"calendar": "Personal | Business | Family | Holiday | ETC",
|
||||
"start": "2025-01-15T09:00:00.000Z",
|
||||
"end": "2025-01-15T10:00:00.000Z",
|
||||
"allDay": false,
|
||||
"deadline": 1704067200,
|
||||
"tags": ["string"],
|
||||
"extendedProps": {}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۱.۵ حذف رویداد
|
||||
|
||||
```
|
||||
DELETE /api/events/{id}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|-----------|
|
||||
| `id` | string | شناسه رویداد |
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ۲. Kanban API (کانبان)
|
||||
|
||||
**سرویس:** `kanbanService`
|
||||
**Slice:** `redux-store/slices/kanban.ts`
|
||||
|
||||
### ۲.۱ دریافت Board
|
||||
|
||||
```
|
||||
GET /api/kanban/board
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"columns": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "string",
|
||||
"taskIds": [1, 2, 3]
|
||||
}
|
||||
],
|
||||
"tasks": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "string",
|
||||
"badgeText": ["string"],
|
||||
"attachments": 0,
|
||||
"comments": 0,
|
||||
"assigned": [{"src": "string", "name": "string"}],
|
||||
"image": "string",
|
||||
"dueDate": "2025-01-15T00:00:00.000Z",
|
||||
"routine": 0,
|
||||
"description": "string",
|
||||
"tags": ["string"],
|
||||
"priority": "high | medium | low",
|
||||
"status": "pending | in-progress | completed",
|
||||
"source": "kanban | calendar | todo"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> **نکته:** Backend ممکن است از `badge_text` و `due_date` (snake_case) استفاده کند. سرویس frontend بهطور خودکار تبدیل میکند.
|
||||
|
||||
---
|
||||
|
||||
### ۲.۲ ایجاد ستون جدید
|
||||
|
||||
```
|
||||
POST /api/kanban/columns
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"title": "string"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"column": {
|
||||
"id": 1,
|
||||
"title": "string",
|
||||
"taskIds": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۲.۳ بهروزرسانی ستون
|
||||
|
||||
```
|
||||
PUT /api/kanban/columns/{columnId}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|------------|-------|-----------|
|
||||
| `columnId` | number | شناسه ستون |
|
||||
|
||||
**Request Body (هر دو اختیاری):**
|
||||
```json
|
||||
{
|
||||
"title": "string",
|
||||
"taskIds": [1, 2, 3]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۲.۴ حذف ستون
|
||||
|
||||
```
|
||||
DELETE /api/kanban/columns/{columnId}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|------------|-------|-----------|
|
||||
| `columnId` | number | شناسه ستون |
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۲.۵ ایجاد تسک جدید
|
||||
|
||||
```
|
||||
POST /api/kanban/tasks
|
||||
```
|
||||
|
||||
**Request Body (Backend - snake_case):**
|
||||
```json
|
||||
{
|
||||
"column_id": 1, // الزامی
|
||||
"title": "string", // الزامی
|
||||
"description": "string", // اختیاری
|
||||
"badge_text": ["string"], // اختیاری
|
||||
"attachments": 0, // اختیاری
|
||||
"comments": 0, // اختیاری
|
||||
"assigned": [{"src": "string", "name": "string"}], // اختیاری
|
||||
"image": "string", // اختیاری
|
||||
"due_date": "2025-01-15T00:00:00.000Z", // اختیاری - ISO 8601
|
||||
"routine": 0, // اختیاری - 0|1|2|3|4
|
||||
"tags": ["string"], // اختیاری
|
||||
"priority": 0, // اختیاری - 0: high, 1: medium, 2: low
|
||||
"status": 0 // اختیاری - 0: pending, 1: in-progress, 2: completed
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۲.۶ بهروزرسانی تسک
|
||||
|
||||
```
|
||||
PUT /api/kanban/tasks/{taskId}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|----------|
|
||||
| `taskId`| number | شناسه تسک |
|
||||
|
||||
**Request Body (Backend - snake_case, همه اختیاری):**
|
||||
```json
|
||||
{
|
||||
"title": "string",
|
||||
"description": "string",
|
||||
"badge_text": ["string"],
|
||||
"attachments": 0,
|
||||
"comments": 0,
|
||||
"assigned": [],
|
||||
"image": "string",
|
||||
"due_date": "string",
|
||||
"routine": 0,
|
||||
"tags": ["string"],
|
||||
"priority": 0,
|
||||
"status": 0,
|
||||
"column_id": 1
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۲.۷ حذف تسک
|
||||
|
||||
```
|
||||
DELETE /api/kanban/tasks/{taskId}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|----------|
|
||||
| `taskId`| number | شناسه تسک |
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۲.۸ جابجایی تسک بین ستونها
|
||||
|
||||
```
|
||||
PUT /api/kanban/tasks/{taskId}/move
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|----------|
|
||||
| `taskId`| number | شناسه تسک |
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"fromColumnId": 1,
|
||||
"toColumnId": 2,
|
||||
"position": 0
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"columns": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "string",
|
||||
"taskIds": []
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ۳. Todo API (کارهای انجامدادنی)
|
||||
|
||||
**سرویس:** `todoService`
|
||||
**استفاده مستقیم:** بدون Redux
|
||||
|
||||
### ۳.۱ لیست Todoها
|
||||
|
||||
```
|
||||
GET /api/todos
|
||||
```
|
||||
|
||||
**Query Parameters (اختیاری):**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|----------|-------|------------------------------------------------------------------|
|
||||
| `status` | string | `pending`, `in-progress`, `completed` |
|
||||
| `priority`| string | `high`, `medium`, `low` |
|
||||
| `label` | string | فیلتر بر اساس برچسب |
|
||||
| `filter` | string | `all`, `starred`, `important`, `completed`, `trashed` |
|
||||
| `search` | string | جستجو در عنوان و توضیحات |
|
||||
|
||||
**مثال:**
|
||||
```
|
||||
GET /api/todos?filter=all&search=meeting
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"todos": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "string",
|
||||
"description": "string",
|
||||
"status": "pending | in-progress | completed",
|
||||
"priority": "high | medium | low",
|
||||
"startDate": "2025-01-01T00:00:00.000Z",
|
||||
"dueDate": "2025-01-15T00:00:00.000Z",
|
||||
"createdDate": "2025-01-01T00:00:00.000Z",
|
||||
"labels": ["string"],
|
||||
"tags": ["string"],
|
||||
"isStarred": false,
|
||||
"isImportant": false,
|
||||
"isTrashed": false,
|
||||
"isKanban": false,
|
||||
"routine": 0,
|
||||
"source": "todo | calendar | kanban"
|
||||
}
|
||||
],
|
||||
"total": 10
|
||||
}
|
||||
```
|
||||
|
||||
> **نکته:** Backend از `start_date`, `due_date`, `created_date`, `is_starred`, `is_important`, `is_trashed`, `is_kanban` (snake_case) استفاده میکند.
|
||||
|
||||
---
|
||||
|
||||
### ۳.۲ ایجاد Todo جدید
|
||||
|
||||
```
|
||||
POST /api/todos
|
||||
```
|
||||
|
||||
**Request Body (Backend - snake_case):**
|
||||
```json
|
||||
{
|
||||
"title": "string", // الزامی
|
||||
"description": "string", // اختیاری
|
||||
"status": 0, // اختیاری - 0: pending, 1: in-progress, 2: completed
|
||||
"priority": 1, // اختیاری - 0: high, 1: medium, 2: low
|
||||
"start_date": "string", // اختیاری - ISO 8601
|
||||
"due_date": "string", // اختیاری - ISO 8601
|
||||
"labels": ["string"], // اختیاری
|
||||
"tags": ["string"], // اختیاری
|
||||
"is_starred": false, // اختیاری
|
||||
"is_important": false, // اختیاری
|
||||
"is_kanban": false, // اختیاری
|
||||
"routine": 0 // اختیاری - 0|1|2|3|4
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"todo": {
|
||||
"id": 1,
|
||||
"title": "string",
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۳.۳ بهروزرسانی Todo
|
||||
|
||||
```
|
||||
PUT /api/todos/{todoId}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|-----------|
|
||||
| `todoId`| number | شناسه Todo |
|
||||
|
||||
**Request Body (Backend - snake_case, همه اختیاری):**
|
||||
```json
|
||||
{
|
||||
"title": "string",
|
||||
"description": "string",
|
||||
"status": 0,
|
||||
"priority": 0,
|
||||
"start_date": "string",
|
||||
"due_date": "string",
|
||||
"labels": ["string"],
|
||||
"tags": ["string"],
|
||||
"is_starred": false,
|
||||
"is_important": false,
|
||||
"is_trashed": false,
|
||||
"is_kanban": false,
|
||||
"routine": 0
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۳.۴ حذف Todo
|
||||
|
||||
```
|
||||
DELETE /api/todos/{todoId}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|-----------|
|
||||
| `todoId`| number | شناسه Todo |
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۳.۵ لیست برچسبها
|
||||
|
||||
```
|
||||
GET /api/todos/labels
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"labels": ["Personal", "Work", "Urgent"]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ۴. Account Settings API (تنظیمات حساب)
|
||||
|
||||
### ۴.۱ دریافت اطلاعات کاربر (Account Details)
|
||||
|
||||
**سرویس:** `userManagementService`
|
||||
**استفاده در:** `AccountDetails.tsx`
|
||||
|
||||
```
|
||||
GET /api/admin/users/{userId}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|--------------|
|
||||
| `userId`| number | شناسه کاربر |
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"user": {
|
||||
"id": 1,
|
||||
"role": "string",
|
||||
"email": "string",
|
||||
"status": "active | pending | inactive",
|
||||
"avatar": "string",
|
||||
"company": "string",
|
||||
"country": "string",
|
||||
"contact": "string",
|
||||
"fullName": "string",
|
||||
"username": "string",
|
||||
"currentPlan": "string",
|
||||
"billing": "string",
|
||||
"joinDate": "2025-01-01T00:00:00.000Z",
|
||||
"lastLogin": "2025-01-15T00:00:00.000Z",
|
||||
"twoStepVerification": false,
|
||||
"recentDevices": [],
|
||||
"activityTimeline": [],
|
||||
"projects": [],
|
||||
"invoices": [],
|
||||
"connections": [],
|
||||
"notifications": {}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> **توجه:** AccountDetails از `userManagementService.getUser(authUser.id)` استفاده میکند و اطلاعات کاربر لاگینشده را نمایش میدهد. endpoint فعلی admin است؛ برای پروفایل کاربر لاگینشده ممکن است نیاز به `/api/users/me` باشد.
|
||||
|
||||
---
|
||||
|
||||
### ۴.۲ بهروزرسانی کاربر (Save Changes در Account Details)
|
||||
|
||||
**نکته:** دکمه "Save Changes" در AccountDetails در حال حاضر API call ندارد. برای ذخیره باید از endpoint زیر استفاده شود:
|
||||
|
||||
```
|
||||
PUT /api/admin/users/{userId}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
|
||||
| پارامتر | نوع | توضیحات |
|
||||
|---------|-------|--------------|
|
||||
| `userId`| number | شناسه کاربر |
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"fullName": "string",
|
||||
"email": "string",
|
||||
"contact": "string",
|
||||
"avatar": "string"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۴.۳ تغییر رمز عبور (Security)
|
||||
|
||||
**نکته:** کامپوننت `ChangePasswordCard` در حال حاضر API call ندارد. برای پیادهسازی:
|
||||
|
||||
```
|
||||
PUT /api/admin/users/{userId}/security
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"currentPassword": "string",
|
||||
"newPassword": "string",
|
||||
"twoStepVerification": false
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ۴.۴ Billing Plans (پلنها و صورتحساب)
|
||||
|
||||
**وضعیت فعلی:** از Server Actions با داده static استفاده میکند (`getPricingData`, `getInvoiceData`).
|
||||
|
||||
**APIهای پیشنهادی (در صورت استفاده از API واقعی):**
|
||||
|
||||
```
|
||||
GET ${API_URL}/pages/pricing
|
||||
```
|
||||
|
||||
**Response (فرمت مورد انتظار):**
|
||||
```json
|
||||
{
|
||||
"pricingPlans": [],
|
||||
"currentPlan": null
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
GET ${API_URL}/apps/invoice
|
||||
```
|
||||
|
||||
**Response (فرمت مورد انتظار):**
|
||||
```json
|
||||
{
|
||||
"invoices": [],
|
||||
"stats": {
|
||||
"totalInvoices": 0,
|
||||
"paidInvoices": 0,
|
||||
"pendingInvoices": 0,
|
||||
"pastDueInvoices": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## خلاصه Endpointها
|
||||
|
||||
| View | Method | Endpoint | استفاده |
|
||||
|------|--------|----------|---------|
|
||||
| Calendar | GET | `/api/events` | لیست رویدادها |
|
||||
| Calendar | POST | `/api/events` | ایجاد رویداد |
|
||||
| Calendar | PUT | `/api/events/{id}` | بهروزرسانی رویداد |
|
||||
| Calendar | DELETE | `/api/events/{id}` | حذف رویداد |
|
||||
| Kanban | GET | `/api/kanban/board` | دریافت Board |
|
||||
| Kanban | POST | `/api/kanban/columns` | ایجاد ستون |
|
||||
| Kanban | PUT | `/api/kanban/columns/{id}` | بهروزرسانی ستون |
|
||||
| Kanban | DELETE | `/api/kanban/columns/{id}` | حذف ستون |
|
||||
| Kanban | POST | `/api/kanban/tasks` | ایجاد تسک |
|
||||
| Kanban | PUT | `/api/kanban/tasks/{id}` | بهروزرسانی تسک |
|
||||
| Kanban | DELETE | `/api/kanban/tasks/{id}` | حذف تسک |
|
||||
| Kanban | PUT | `/api/kanban/tasks/{id}/move` | جابجایی تسک |
|
||||
| Todo | GET | `/api/todos` | لیست Todoها |
|
||||
| Todo | GET | `/api/todos/labels` | لیست برچسبها |
|
||||
| Todo | POST | `/api/todos` | ایجاد Todo |
|
||||
| Todo | PUT | `/api/todos/{id}` | بهروزرسانی Todo |
|
||||
| Todo | DELETE | `/api/todos/{id}` | حذف Todo |
|
||||
| Account | GET | `/api/admin/users/{id}` | دریافت اطلاعات کاربر |
|
||||
| Account | PUT | `/api/admin/users/{id}` | بهروزرسانی کاربر |
|
||||
| Account | PUT | `/api/admin/users/{id}/security` | تغییر رمز/تنظیمات امنیتی |
|
||||
|
||||
---
|
||||
|
||||
## تبدیلهای Frontend ↔ Backend
|
||||
|
||||
### Calendar
|
||||
- Frontend از `calendar` با مقادیر `Personal | Business | Family | Holiday | ETC` استفاده میکند.
|
||||
- `start` و `end` به صورت ISO 8601 ارسال میشوند.
|
||||
|
||||
### Kanban
|
||||
- **status:** `pending`→0, `in-progress`→1, `completed`→2
|
||||
- **priority:** `high`→0, `medium`→1, `low`→2
|
||||
- **snake_case در Backend:** `column_id`, `badge_text`, `due_date`
|
||||
|
||||
### Todo
|
||||
- **status:** `pending`→0, `in-progress`→1, `completed`→2
|
||||
- **priority:** `high`→0, `medium`→1, `low`→2
|
||||
- **snake_case در Backend:** `start_date`, `due_date`, `created_date`, `is_starred`, `is_important`, `is_trashed`, `is_kanban`
|
||||
Reference in New Issue
Block a user