# Staff API مدیریت پرسنل مطب/کلینیک (بدون حذف — فقط toggle فعال/غیرفعال). --- ## GET /api/v1/staff دریافت لیست پرسنل entity جاری (از JWT). **Permission:** `IS_AUTHENTICATED_FULLY` (ROLE_DOCTOR یا ROLE_CLINIC) **Response 200:** ```json { "success": true, "data": [ { "uuid": "a1b2c3d4-...", "entity_type": "clinic", "entity_id": 5, "full_name": "علی محمدی", "phone": "09121234567", "job_title": "منشی", "address": null, "national_code": "0012345678", "active": true, "created_at": 1718000000, "updated_at": 1718000000 } ] } ``` --- ## POST /api/v1/staff ایجاد پرسنل جدید. **Permission:** `IS_AUTHENTICATED_FULLY` (ROLE_DOCTOR یا ROLE_CLINIC) **Request Body:** ```json { "full_name": "علی محمدی", "phone": "09121234567", "job_title": "منشی", "address": "تهران، خیابان ولیعصر", "national_code": "0012345678" } ``` | فیلد | نوع | الزامی | |------|-----|--------| | full_name | string | ✅ | | phone | string | ❌ | | job_title | string | ❌ | | address | string | ❌ | | national_code | string(15) — ارقام فارسی به لاتین تبدیل می‌شوند | ❌ | **Response 201:** ```json { "success": true, "data": { "uuid": "a1b2c3d4-...", "entity_type": "clinic", "entity_id": 5, "full_name": "علی محمدی", "phone": "09121234567", "job_title": "منشی", "address": "تهران، خیابان ولیعصر", "national_code": "0012345678", "active": true, "created_at": 1718000000, "updated_at": 1718000000 } } ``` **Errors:** | Code | HTTP | توضیح | |------|------|-------| | ERR_VALIDATION_001 | 422 | full_name خالی است | | ERR_FORBIDDEN_001 | 403 | پروفایل doctor/clinic یافت نشد | --- ## PATCH /api/v1/staff/{uuid} ویرایش اطلاعات پرسنل. **Permission:** `IS_AUTHENTICATED_FULLY` — فقط owner یا ROLE_ADMIN **Request Body (همه فیلدها اختیاری):** ```json { "full_name": "علی محمدی ویرایش‌شده", "phone": "09129999999", "job_title": "منشی ارشد", "address": null, "national_code": null } ``` **Response 200:** همان ساختار staff object **Errors:** | Code | HTTP | توضیح | |------|------|-------| | ERR_STAFF_NOT_FOUND | 404 | پرسنل یافت نشد | | ERR_FORBIDDEN_001 | 403 | دسترسی ندارید | --- ## PATCH /api/v1/staff/{uuid}/toggle تغییر وضعیت فعال/غیرفعال پرسنل (soft toggle — هیچ حذفی انجام نمی‌شود). **Permission:** `IS_AUTHENTICATED_FULLY` — فقط owner یا ROLE_ADMIN **Response 200:** ```json { "success": true, "data": { "uuid": "a1b2c3d4-...", "active": false, ... } } ``` **Errors:** | Code | HTTP | توضیح | |------|------|-------| | ERR_STAFF_NOT_FOUND | 404 | پرسنل یافت نشد | | ERR_FORBIDDEN_001 | 403 | دسترسی ندارید |