openapi: 3.0.0 paths: /api/contact: post: operationId: ContactController_submitContact parameters: [] responses: '201': description: '' tags: - Contact /api/contact/info: get: operationId: ContactController_getContactInfo parameters: [] responses: '200': description: '' tags: - Contact put: operationId: ContactController_updateContactInfo parameters: [] responses: '200': description: '' tags: - Contact /api/contact/submissions: get: operationId: ContactController_getAllSubmissions parameters: - name: page required: true in: query schema: type: string - name: limit required: true in: query schema: type: string - name: status required: true in: query schema: type: string responses: '200': description: '' tags: - Contact /api/contact/submissions/{id}: put: operationId: ContactController_updateSubmissionStatus parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' tags: - Contact /api/products: get: operationId: ProductsController_findAll parameters: - name: page required: false in: query description: شماره صفحه (شروع از ۱) schema: minimum: 1 default: 1 type: number - name: limit required: false in: query description: تعداد آیتم‌ها در هر صفحه schema: minimum: 1 default: 10 type: number - name: sortBy required: false in: query description: فیلد برای مرتب‌سازی schema: default: createdAt type: string - name: sortOrder required: false in: query description: جهت مرتب‌سازی (asc/desc) schema: default: desc type: string enum: - asc - desc - name: search required: false in: query description: عبارت جستجو schema: type: string - name: category required: false in: query description: فیلتر بر اساس اسلاگ دسته‌بندی schema: type: string - name: petType required: false in: query description: فیلتر بر اساس نوع حیوان schema: type: string enum: - سگ - گربه - all - name: symptom required: false in: query description: فیلتر بر اساس یک علامت درمانی خاص schema: type: string - name: requiresRx required: false in: query description: فیلتر داروی نیازمند نسخه (true/false) schema: type: string - name: minPrice required: false in: query description: حداقل قیمت (تومان) schema: type: string - name: maxPrice required: false in: query description: حداکثر قیمت (تومان) schema: type: string responses: '200': description: لیست محصولات متناسب با فیلترها (دسته، پت و جستجو) content: application/json: schema: example: data: - id: a1b2c3d4-1234-5678-abcd-ef1234567890 artNo: canhydrox-gag name: Canhydrox GAG (کنهیدروکس) scientificTagline: برای تقویت مفاصل و استخوان‌ها description: کنهیدروکس محصولی بی‌نظیر برای مفاصل و سیستم حرکتی سگ‌ها... shortDescription: تقویت مفاصل و غضروف‌ها category: سیستم حرکتی و مفاصل categorySlug: joints priceValue: '1750000.00' priceDisplay: ۱,۷۵۰,۰۰۰ تومان unit: عدد قرص packageSize: '120.00' dosageLogic: یک قرص به ازای هر ۱۰ کیلوگرم وزن بدن سگ suitableFor: سگ imageUrl: https://example.com/canhydrox.png createdAt: '2026-05-26T18:10:00.000Z' ingredients: [] symptoms: [] meta: total: 1 page: 1 lastPage: 1 limit: 10 '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای داخلی سرور code: SERVER_ERROR details: {} summary: لیست و فیلتر محصولات tags: - Products - مدیریت محصولات دارویی /api/products/filters: get: operationId: ProductsController_getActiveFilters parameters: [] responses: '200': description: لیست فیلترهای پویا استخراج شده از دیتابیس content: application/json: schema: example: categories: - id: '1' name: مفاصل و استخوان slug: joints symptoms: - لنگش - ریزش مو petTypes: - سگ - گربه - هر دو '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای داخلی سرور code: SERVER_ERROR details: {} summary: دریافت فیلترهای فعال محصولات (دسته، علائم، نوع پت) tags: - Products - مدیریت محصولات دارویی /api/products/navigation-filters: get: operationId: ProductsController_getNavigationFilters parameters: [] responses: '200': description: ساختار درختی فیلترها و تگ‌های درمانی واقعی متصل به محصولات content: application/json: schema: example: - id: '1' name: مفاصل و استخوان slug: joints symptoms: - درد مفاصل - لنگش '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای داخلی سرور code: SERVER_ERROR details: {} summary: دریافت فیلترها و راهکارهای ناوبری (دسته با علائم مربوطه) tags: - Products - مدیریت محصولات دارویی /api/products/{id}: get: operationId: ProductsController_findOne parameters: - name: id required: true in: path schema: type: string responses: '200': description: اطلاعات کامل محصول شامل مواد تشکیل‌دهنده و علائم مرتبط content: application/json: schema: example: id: a1b2c3d4-1234-5678-abcd-ef1234567890 artNo: canhydrox-gag name: Canhydrox GAG (کنهیدروکس) scientificTagline: برای تقویت مفاصل و استخوان‌ها description: کنهیدروکس محصولی بی‌نظیر برای مفاصل... shortDescription: تقویت مفاصل و غضروف‌ها category: سیستم حرکتی و مفاصل categorySlug: joints priceValue: '1750000.00' priceDisplay: ۱,۷۵۰,۰۰۰ تومان unit: عدد قرص packageSize: '120.00' dosageLogic: یک قرص به ازای هر ۱۰ کیلوگرم وزن بدن سگ suitableFor: سگ imageUrl: https://example.com/canhydrox.png createdAt: '2026-05-26T18:10:00.000Z' ingredients: - productId: a1b2c3d4-1234-5678-abcd-ef1234567890 ingredient: صدف لب‌سبز symptoms: - productId: a1b2c3d4-1234-5678-abcd-ef1234567890 symptom: لنگیدن '404': description: محصول با شناسه ارسال شده پیدا نشد content: application/json: schema: example: success: false message: Product with ID a1b2c3d4-1234-5678-abcd-ef1234567890 not found code: NOT_FOUND details: {} '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای داخلی سرور code: SERVER_ERROR details: {} summary: دریافت اطلاعات محصول با شناسه یکتا (ID) tags: - Products - مدیریت محصولات دارویی /api/users/profile: get: operationId: UsersController_getProfile parameters: [] responses: '200': description: مشخصات کامل کاربر به همراه آدرس‌ها و اطلاعات حیوانات خانگی content: application/json: schema: example: id: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 firstName: کاربر lastName: جدید email: 09123456789@temp.local mobile: '09123456789' role: User_PetOwner walletBalance: '1500000.00' charityDonationTotal: '25000.00' addresses: [] pets: [] createdAt: '2026-05-26T15:20:00.000Z' updatedAt: '2026-05-26T15:20:00.000Z' '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: دریافت پروفایل کاربر فعلی tags: - Users - مدیریت کاربران و آدرس‌ها patch: operationId: UsersController_updateProfile parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateProfileDto' responses: '200': description: پروفایل با موفقیت ویرایش شد content: application/json: schema: example: id: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 firstName: علی lastName: احمدی email: ali@example.com mobile: '09123456789' role: User_PetOwner walletBalance: '1500000.00' charityDonationTotal: '25000.00' '400': description: خطا در صحت‌سنجی فیلدهای ورودی content: application/json: schema: example: success: false message: ایمیل نامعتبر است code: BAD_REQUEST details: message: - ایمیل نامعتبر است '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: ویرایش پروفایل کاربر فعلی tags: - Users - مدیریت کاربران و آدرس‌ها /api/users/addresses: post: operationId: UsersController_addAddress parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddressDto' responses: '201': description: آدرس جدید با موفقیت ایجاد شد content: application/json: schema: example: id: b5a6c7d8-1234-5678-abcd-ef1234567890 userId: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 title: خانه receptorName: علی احمدی phone: '09123456789' province: تهران city: تهران detail: خیابان آزادی، کوچه مریم، پلاک ۱۰ zipCode: '1456789012' isDefault: false createdAt: '2026-05-26T18:00:00.000Z' '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: ایجاد آدرس جدید برای کاربر tags: - Users - مدیریت کاربران و آدرس‌ها /api/users/addresses/{addressId}: patch: operationId: UsersController_updateAddress parameters: - name: addressId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddressDto' responses: '200': description: آدرس با موفقیت ویرایش شد content: application/json: schema: example: id: b5a6c7d8-1234-5678-abcd-ef1234567890 userId: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 title: دفتر کار receptorName: علی احمدی phone: '09123456789' province: تهران city: تهران detail: خیابان ولیعصر، برج سپهر، طبقه ۴ zipCode: '1456789012' isDefault: false createdAt: '2026-05-26T18:00:00.000Z' '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: ویرایش آدرس کاربر tags: - Users - مدیریت کاربران و آدرس‌ها delete: operationId: UsersController_deleteAddress parameters: - name: addressId required: true in: path schema: type: string responses: '200': description: آدرس با موفقیت حذف شد content: application/json: schema: example: success: true message: آدرس با موفقیت حذف شد '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: حذف آدرس کاربر tags: - Users - مدیریت کاربران و آدرس‌ها /api/users/addresses/{addressId}/default: patch: operationId: UsersController_setDefaultAddress parameters: - name: addressId required: true in: path schema: type: string responses: '200': description: آدرس به عنوان پیش‌فرض ثبت شد content: application/json: schema: example: success: true message: آدرس پیش‌فرض با موفقیت تغییر کرد '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: انتخاب آدرس به عنوان پیش‌فرض tags: - Users - مدیریت کاربران و آدرس‌ها /api/users/wallet/top-up: post: operationId: UsersController_topUpWallet parameters: [] responses: '201': description: کیف پول با موفقیت شارژ شد content: application/json: schema: example: id: txn-uuid userId: user-uuid amount: '500000.00' type: deposit status: completed description: شارژ کیف پول createdAt: '2026-07-11T08:00:00.000Z' '400': description: مبلغ نامعتبر است '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: شارژ کیف پول کاربر tags: - Users - مدیریت کاربران و آدرس‌ها /api/auth/send-otp: post: operationId: AuthController_sendOtp parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SendOtpDto' responses: '200': description: کد با موفقیت به شماره تلفن همراه پیامک شد content: application/json: schema: example: success: true message: کد تایید با موفقیت به شماره شما پیامک شد. '400': description: فرمت شماره تلفن همراه نامعتبر است content: application/json: schema: example: success: false message: شماره موبایل نامعتبر است code: BAD_REQUEST details: message: - شماره موبایل نامعتبر است '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای ناشناخته در سرور رخ داده است code: SERVER_ERROR details: {} summary: ارسال کد تایید پیامکی (OTP) tags: - Auth - احراز هویت /api/auth/verify-otp: post: operationId: AuthController_verifyOtp parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VerifyOtpDto' responses: '200': description: ورود موفق به همراه توکن دسترسی JWT و اطلاعات کاربر content: application/json: schema: example: success: true data: user: id: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 firstName: کاربر lastName: جدید email: 09123456789@temp.local mobile: '09123456789' role: User_PetOwner walletBalance: '0.00' charityDonationTotal: '0.00' createdAt: '2026-05-26T15:20:00.000Z' updatedAt: '2026-05-26T15:20:00.000Z' accessToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... '400': description: کد تایید اشتباه یا منقضی شده است content: application/json: schema: example: success: false message: کد تایید اشتباه است code: OTP_INVALID details: {} '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای ناشناخته در سرور رخ داده است code: SERVER_ERROR details: {} summary: تایید کد پیامکی و ورود/ثبت‌نام کاربر tags: - Auth - احراز هویت /api/auth/register: post: operationId: AuthController_register parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RegisterDto' responses: '200': description: کاربر با موفقیت ثبت‌نام شد '400': description: اطلاعات ثبت‌نام نامعتبر است یا کاربر از قبل وجود دارد '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای ناشناخته در سرور رخ داده است code: SERVER_ERROR details: {} summary: ثبت‌نام با ایمیل/موبایل و رمز عبور tags: - Auth - احراز هویت /api/auth/login: post: operationId: AuthController_login parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LoginDto' responses: '200': description: ورود موفق به همراه توکن دسترسی '400': description: نام کاربری یا رمز عبور اشتباه است '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای ناشناخته در سرور رخ داده است code: SERVER_ERROR details: {} summary: ورود با موبایل و رمز عبور tags: - Auth - احراز هویت /api/auth/admin-login: post: operationId: AuthController_adminLogin parameters: [] responses: '200': description: ورود موفق ادمین به همراه توکن '400': description: اطلاعات ورود ادمین اشتباه است '500': description: خطای داخلی سرور content: application/json: schema: example: success: false message: خطای ناشناخته در سرور رخ داده است code: SERVER_ERROR details: {} summary: ورود ادمین به پنل مدیریت tags: - Auth - احراز هویت /api/pets: post: operationId: PetsController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePetDto' responses: '201': description: حیوان خانگی جدید با موفقیت ثبت شد content: application/json: schema: example: id: c7b8d9e0-1234-5678-abcd-ef1234567890 userId: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 name: بادی type: سگ breed: ژرمن شپرد age: 3 weight: '25.50' activityLevel: متوسط imageUrl: null createdAt: '2026-05-26T18:10:00.000Z' '400': description: خطا در صحت‌سنجی فیلدهای ورودی content: application/json: schema: example: success: false message: نوع حیوان خانگی اجباری است code: BAD_REQUEST details: {} '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: ثبت حیوان خانگی جدید tags: - Pets - مدیریت حیوانات خانگی get: operationId: PetsController_findAll parameters: - name: page required: false in: query description: شماره صفحه (شروع از ۱) schema: minimum: 1 default: 1 type: number - name: limit required: false in: query description: تعداد آیتم‌ها در هر صفحه schema: minimum: 1 default: 10 type: number - name: sortBy required: false in: query description: فیلد برای مرتب‌سازی schema: default: createdAt type: string - name: sortOrder required: false in: query description: جهت مرتب‌سازی (asc/desc) schema: default: desc type: string enum: - asc - desc - name: search required: false in: query description: عبارت جستجو schema: type: string responses: '200': description: آرایه‌ای از حیوانات خانگی ثبت شده کاربر (صفحه‌بندی شده) content: application/json: schema: example: data: - id: c7b8d9e0-1234-5678-abcd-ef1234567890 userId: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 name: بادی type: سگ breed: ژرمن شپرد age: 3 weight: '25.50' activityLevel: متوسط imageUrl: null createdAt: '2026-05-26T18:10:00.000Z' meta: total: 1 page: 1 lastPage: 1 limit: 10 '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: لیست حیوانات خانگی کاربر فعلی tags: - Pets - مدیریت حیوانات خانگی /api/pets/{id}: get: operationId: PetsController_findOne parameters: - name: id required: true in: path schema: type: string responses: '200': description: اطلاعات کامل حیوان خانگی مشخص شده با ID content: application/json: schema: example: id: c7b8d9e0-1234-5678-abcd-ef1234567890 userId: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 name: بادی type: سگ breed: ژرمن شپرد age: 3 weight: '25.50' activityLevel: متوسط imageUrl: null medicalConditions: [] reminders: [] healthLogs: [] createdAt: '2026-05-26T18:10:00.000Z' '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} '404': description: حیوان خانگی پیدا نشد یا متعلق به کاربر جاری نیست content: application/json: schema: example: success: false message: Pet not found or unauthorized code: NOT_FOUND details: {} security: - bearer: [] summary: دریافت جزئیات کامل یک حیوان خانگی tags: - Pets - مدیریت حیوانات خانگی patch: operationId: PetsController_update parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePetDto' responses: '200': description: اطلاعات حیوان خانگی با موفقیت به‌روزرسانی شد content: application/json: schema: example: id: c7b8d9e0-1234-5678-abcd-ef1234567890 name: بادی قهرمان type: سگ breed: ژرمن شپرد age: 4 weight: '26.00' activityLevel: زیاد '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} '404': description: حیوان خانگی یافت نشد content: application/json: schema: example: success: false message: Pet not found code: NOT_FOUND details: {} security: - bearer: [] summary: بروزرسانی اطلاعات حیوان خانگی tags: - Pets - مدیریت حیوانات خانگی delete: operationId: PetsController_remove parameters: - name: id required: true in: path schema: type: string responses: '200': description: حیوان خانگی با موفقیت حذف شد content: application/json: schema: example: success: true message: حیوان خانگی با موفقیت حذف شد '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} '404': description: حیوان خانگی یافت نشد content: application/json: schema: example: success: false message: Pet not found code: NOT_FOUND details: {} security: - bearer: [] summary: حذف حیوان خانگی tags: - Pets - مدیریت حیوانات خانگی /api/pets/{petId}/reminders: post: operationId: PetsController_addReminder parameters: - name: petId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateReminderDto' responses: '201': description: '' '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: ثبت یادآور جدید برای پت tags: - Pets - مدیریت حیوانات خانگی /api/pets/{petId}/reminders/{reminderId}/toggle: post: operationId: PetsController_toggleReminder parameters: - name: petId required: true in: path schema: type: string - name: reminderId required: true in: path schema: type: string responses: '201': description: '' '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: تغییر وضعیت انجام یادآور در یک تاریخ خاص tags: - Pets - مدیریت حیوانات خانگی /api/pets/{petId}/health-logs: post: operationId: PetsController_addHealthLog parameters: - name: petId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateHealthLogDto' responses: '201': description: '' '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: ثبت لاگ سلامت جدید برای پت tags: - Pets - مدیریت حیوانات خانگی /api/orders: post: operationId: OrdersController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateOrderDto' responses: '201': description: سفارش با موفقیت ثبت شد content: application/json: schema: example: id: e1d2c3b4-1234-5678-abcd-ef1234567890 userId: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 couponId: null totalAmount: '3500000.00' charityDonation: '10000.00' status: processing trackingNumber: null createdAt: '2026-05-26T18:10:00.000Z' '400': description: اعتبارسنجی اقلام سبد خرید با خطا مواجه شد content: application/json: schema: example: success: false message: سبد خرید نمی‌تواند خالی باشد code: BAD_REQUEST details: {} '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: ثبت سفارش جدید tags: - Orders - مدیریت سفارش‌ها get: operationId: OrdersController_findAll parameters: - name: page required: false in: query description: شماره صفحه (شروع از ۱) schema: minimum: 1 default: 1 type: number - name: limit required: false in: query description: تعداد آیتم‌ها در هر صفحه schema: minimum: 1 default: 10 type: number - name: sortBy required: false in: query description: فیلد برای مرتب‌سازی schema: default: createdAt type: string - name: sortOrder required: false in: query description: جهت مرتب‌سازی (asc/desc) schema: default: desc type: string enum: - asc - desc - name: search required: false in: query description: عبارت جستجو schema: type: string responses: '200': description: آرایه‌ای از سفارش‌های ثبت شده کاربر (صفحه‌بندی شده) content: application/json: schema: example: data: - id: e1d2c3b4-1234-5678-abcd-ef1234567890 userId: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 totalAmount: '3500000.00' charityDonation: '10000.00' status: processing createdAt: '2026-05-26T18:10:00.000Z' meta: total: 1 page: 1 lastPage: 1 limit: 10 '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: لیست سفارش‌های کاربر فعلی tags: - Orders - مدیریت سفارش‌ها /api/orders/validate-coupon: post: operationId: OrdersController_validateCoupon parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ValidateCouponDto' responses: '200': description: نتیجه اعتبارسنجی کد تخفیف content: application/json: schema: example: valid: true couponId: abc-123 code: CANINO10 type: percent discountValue: 175000 message: کد تخفیف اعمال شد — ۱۷۵,۰۰۰ تومان تخفیف '400': description: کد تخفیف نامعتبر، منقضی، یا شرایط آن برقرار نیست '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} security: - bearer: [] summary: اعتبارسنجی کد تخفیف و محاسبه میزان تخفیف tags: - Orders - مدیریت سفارش‌ها /api/orders/{id}: get: operationId: OrdersController_findOne parameters: - name: id required: true in: path schema: type: string responses: '200': description: اطلاعات کامل سفارش مشخص شده به همراه اقلام سفارش content: application/json: schema: example: id: e1d2c3b4-1234-5678-abcd-ef1234567890 userId: d8c4e428-cd2f-4c55-bfa3-dfa312bb6480 totalAmount: '3500000.00' charityDonation: '10000.00' status: processing trackingNumber: TRK-987654321 createdAt: '2026-05-26T18:10:00.000Z' orderItems: - id: item-1 quantity: 2 product: id: a1b2c3d4-1234-5678-abcd-ef1234567890 name: Canhydrox GAG (کنهیدروکس) priceDisplay: ۱,۷۵۰,۰۰۰ تومان imageUrl: https://example.com/canhydrox.png '401': description: عدم احراز هویت - توکن معتبر نیست یا ارسال نشده است content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED details: {} '404': description: سفارش یافت نشد یا متعلق به کاربر فعلی نیست content: application/json: schema: example: success: false message: Order not found code: NOT_FOUND details: {} security: - bearer: [] summary: دریافت جزئیات یک سفارش خاص tags: - Orders - مدیریت سفارش‌ها /api/settings/ui-texts: get: operationId: SettingsController_getUiTexts parameters: [] responses: '200': description: یک آبجکت کلید-مقدار حاوی تمامی متون، شعارها و برچسب‌های دکمه‌ها content: application/json: schema: example: hero_badge: تخصص دارویی از آلمان hero_title: تخصص آلمانی در خدمت سلامت پت‌های خانگی hero_desc: بیش از ۴۰ سال تجربه نوآورانه... summary: دریافت تمامی متون و پیکربندی‌های رابط کاربری tags: - Settings - تنظیمات متون پویا و واژه‌نامه علمی /api/settings/ui-texts/{key}: patch: operationId: SettingsController_updateUiText parameters: - name: key required: true in: path schema: type: string responses: '200': description: متن با موفقیت به‌روزرسانی شد content: application/json: schema: example: key: hero_badge value: تخصص دارویی ممتاز از آلمان '401': description: عدم دسترسی به دلیل عدم احراز هویت content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED security: - bearer: [] summary: ویرایش متن یک کلید در رابط کاربری (نیازمند توکن) tags: - Settings - تنظیمات متون پویا و واژه‌نامه علمی /api/settings/scientific-terms: get: operationId: SettingsController_getScientificTerms parameters: [] responses: '200': description: لیست کامل اصطلاحات علمی به همراه تعاریف و شناسه‌ها content: application/json: schema: example: - key: green-mussel term: صدف لب‌سبز (Perna Canaliculus) definition: این صدف بومی سواحل بکر نیوزیلند است... wikiId: general summary: دریافت تمامی اصطلاحات واژه‌نامه علمی tags: - Settings - تنظیمات متون پویا و واژه‌نامه علمی /api/settings/scientific-terms/{key}: put: operationId: SettingsController_upsertScientificTerm parameters: - name: key required: true in: path schema: type: string responses: '200': description: اصطلاح علمی ثبت یا ویرایش شد content: application/json: schema: example: key: green-mussel term: صدف لب‌سبز اصل نیوزیلند definition: این صدف بومی سواحل بکر نیوزیلند است... wikiId: general '401': description: عدم دسترسی content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED security: - bearer: [] summary: ثبت یا ویرایش یک اصطلاح علمی (نیازمند توکن) tags: - Settings - تنظیمات متون پویا و واژه‌نامه علمی delete: operationId: SettingsController_deleteScientificTerm parameters: - name: key required: true in: path schema: type: string responses: '200': description: اصطلاح علمی حذف شد content: application/json: schema: example: success: true message: Scientific term successfully deleted '401': description: عدم دسترسی content: application/json: schema: example: success: false message: Unauthorized code: UNAUTHORIZED security: - bearer: [] summary: حذف یک اصطلاح علمی (نیازمند توکن) tags: - Settings - تنظیمات متون پویا و واژه‌نامه علمی /api/admin/dashboard/stats: get: operationId: AdminController_getDashboardStats parameters: [] responses: '200': description: '' security: - bearer: [] summary: دریافت آمار کلی داشبورد tags: - Admin - پنل مدیریت /api/admin/users: get: operationId: AdminController_getUsers parameters: - name: page required: false in: query description: شماره صفحه schema: type: string - name: limit required: false in: query description: تعداد آیتم‌ها schema: type: string - name: search required: false in: query description: جستجو در نام یا ایمیل schema: type: string - name: role required: false in: query description: فیلتر بر اساس نقش کاربر schema: type: string responses: '200': description: '' security: - bearer: [] summary: لیست کاربران tags: - Admin - پنل مدیریت /api/admin/users/{id}/role: put: operationId: AdminController_updateUserRole parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: تغییر نقش کاربر tags: - Admin - پنل مدیریت /api/admin/users/{id}/wallet-adjust: post: operationId: AdminController_adjustWallet parameters: - name: id required: true in: path schema: type: string responses: '201': description: '' security: - bearer: [] summary: شارژ یا کسر مستقیم کیف پول کاربر توسط ادمین tags: - Admin - پنل مدیریت /api/admin/products: get: operationId: AdminController_getProducts parameters: - name: page required: false in: query description: شماره صفحه schema: type: string - name: limit required: false in: query description: تعداد آیتم‌ها schema: type: string - name: search required: false in: query description: جستجو schema: type: string - name: categoryId required: false in: query description: شناسه دسته‌بندی schema: type: string responses: '200': description: '' security: - bearer: [] summary: لیست محصولات (مدیریت) tags: - Admin - پنل مدیریت post: operationId: AdminController_createProduct parameters: [] responses: '201': description: '' security: - bearer: [] summary: ایجاد محصول جدید tags: - Admin - پنل مدیریت /api/admin/products/{id}: put: operationId: AdminController_updateProduct parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش محصول tags: - Admin - پنل مدیریت delete: operationId: AdminController_deleteProduct parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف محصول tags: - Admin - پنل مدیریت /api/admin/orders: get: operationId: AdminController_getOrders parameters: - name: page required: false in: query description: شماره صفحه schema: type: string - name: limit required: false in: query description: تعداد آیتم‌ها schema: type: string - name: search required: false in: query description: جستجو schema: type: string - name: status required: false in: query description: وضعیت سفارش schema: type: string responses: '200': description: '' security: - bearer: [] summary: لیست سفارش‌ها tags: - Admin - پنل مدیریت /api/admin/orders/{id}/status: put: operationId: AdminController_updateOrderStatus parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: تغییر وضعیت و کد رهگیری سفارش tags: - Admin - پنل مدیریت /api/admin/coupons: get: operationId: AdminController_getCoupons parameters: - name: search required: false in: query description: جستجو schema: {} - name: limit required: false in: query description: تعداد آیتم‌ها schema: {} - name: page required: false in: query description: شماره صفحه schema: {} responses: '200': description: '' security: - bearer: [] summary: لیست کد تخفیف‌ها tags: - Admin - پنل مدیریت post: operationId: AdminController_createCoupon parameters: [] responses: '201': description: '' security: - bearer: [] summary: ایجاد کد تخفیف جدید tags: - Admin - پنل مدیریت /api/admin/coupons/{id}: put: operationId: AdminController_updateCoupon parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش کد تخفیف tags: - Admin - پنل مدیریت delete: operationId: AdminController_deleteCoupon parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف کد تخفیف tags: - Admin - پنل مدیریت /api/admin/coupons/{id}/toggle: put: operationId: AdminController_toggleCoupon parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: فعال/غیرفعال کردن کد تخفیف tags: - Admin - پنل مدیریت /api/admin/settings: get: operationId: AdminController_getSettings parameters: [] responses: '200': description: '' security: - bearer: [] summary: دریافت تنظیمات tags: - Admin - پنل مدیریت put: operationId: AdminController_updateSettings parameters: [] responses: '200': description: '' security: - bearer: [] summary: ذخیره تنظیمات tags: - Admin - پنل مدیریت /api/admin/pets: get: operationId: PetsController_getPets parameters: - name: search required: false in: query description: جستجو schema: {} - name: limit required: false in: query description: تعداد آیتم‌ها schema: {} - name: page required: false in: query description: شماره صفحه schema: {} responses: '200': description: '' security: - bearer: [] summary: لیست حیوانات خانگی tags: - Admin - مدیریت حیوانات خانگی /api/admin/doctors: get: operationId: AdminController_getDoctors parameters: [] responses: '200': description: '' security: - bearer: [] summary: لیست پزشکان و متخصصان tags: - Admin - پنل مدیریت post: operationId: AdminController_createDoctor parameters: [] responses: '201': description: '' security: - bearer: [] summary: افزودن پزشک جدید tags: - Admin - پنل مدیریت /api/admin/doctors/{id}: put: operationId: AdminController_updateDoctor parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش اطلاعات پزشک tags: - Admin - پنل مدیریت delete: operationId: AdminController_deleteDoctor parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف پزشک tags: - Admin - پنل مدیریت /api/admin/reports: get: operationId: ReportsController_getReports parameters: [] responses: '200': description: '' security: - bearer: [] summary: دریافت گزارشات داشبورد tags: - Admin - گزارشات /api/admin/media: get: operationId: MediaController_getAllMedia parameters: [] responses: '200': description: '' security: - bearer: [] summary: لیست فایل‌های رسانه tags: - Admin - مدیریت رسانه (تصاویر) /api/admin/media/upload: post: operationId: MediaController_uploadFile parameters: [] responses: '201': description: '' security: - bearer: [] summary: آپلود فایل جدید tags: - Admin - مدیریت رسانه (تصاویر) /api/admin/media/{id}: delete: operationId: MediaController_deleteMedia parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف فایل tags: - Admin - مدیریت رسانه (تصاویر) put: operationId: MediaController_updateMedia parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش متادیتای سئوی فایل (Alt, Title, Description, Caption) tags: - Admin - مدیریت رسانه (تصاویر) /api/admin/categories: get: operationId: CategoriesController_getCategories parameters: - name: search required: false in: query description: جستجو در نام schema: {} - name: limit required: false in: query description: تعداد آیتم‌ها schema: {} - name: page required: false in: query description: شماره صفحه schema: {} responses: '200': description: '' security: - bearer: [] summary: لیست دسته‌بندی‌ها (با صفحه‌بندی) tags: - Admin - مدیریت دسته‌بندی‌ها post: operationId: CategoriesController_createCategory parameters: [] responses: '201': description: '' security: - bearer: [] summary: ایجاد دسته‌بندی جدید tags: - Admin - مدیریت دسته‌بندی‌ها /api/admin/categories/all: get: operationId: CategoriesController_getAllCategoriesRaw parameters: [] responses: '200': description: '' security: - bearer: [] summary: لیست تمام دسته‌بندی‌ها (بدون صفحه‌بندی) tags: - Admin - مدیریت دسته‌بندی‌ها /api/admin/categories/{id}: put: operationId: CategoriesController_updateCategory parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش دسته‌بندی tags: - Admin - مدیریت دسته‌بندی‌ها delete: operationId: CategoriesController_deleteCategory parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف دسته‌بندی tags: - Admin - مدیریت دسته‌بندی‌ها /api/admin/blogs: get: operationId: BlogsController_getBlogs parameters: - name: search required: false in: query description: جستجو schema: {} - name: limit required: false in: query description: تعداد آیتم‌ها schema: {} - name: page required: false in: query description: شماره صفحه schema: {} responses: '200': description: '' security: - bearer: [] summary: لیست مقالات tags: - Admin - مدیریت مقالات (بلاگ) post: operationId: BlogsController_createBlog parameters: [] responses: '201': description: '' security: - bearer: [] summary: ایجاد مقاله جدید tags: - Admin - مدیریت مقالات (بلاگ) /api/admin/blogs/{id}: put: operationId: BlogsController_updateBlog parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش مقاله tags: - Admin - مدیریت مقالات (بلاگ) delete: operationId: BlogsController_deleteBlog parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف مقاله tags: - Admin - مدیریت مقالات (بلاگ) /api/admin/wiki: get: operationId: WikiController_getTerms parameters: - name: search required: false in: query description: جستجو schema: {} - name: limit required: false in: query description: تعداد آیتم‌ها schema: {} - name: page required: false in: query description: شماره صفحه schema: {} responses: '200': description: '' security: - bearer: [] summary: لیست اصطلاحات دانشنامه tags: - Admin - مدیریت دانشنامه (اصطلاحات علمی) post: operationId: WikiController_createTerm parameters: [] responses: '201': description: '' security: - bearer: [] summary: ایجاد اصطلاح جدید tags: - Admin - مدیریت دانشنامه (اصطلاحات علمی) /api/admin/wiki/{key}: put: operationId: WikiController_updateTerm parameters: - name: key required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش اصطلاح tags: - Admin - مدیریت دانشنامه (اصطلاحات علمی) delete: operationId: WikiController_deleteTerm parameters: - name: key required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف اصطلاح tags: - Admin - مدیریت دانشنامه (اصطلاحات علمی) /api/admin/pets/{id}: delete: operationId: PetsController_deletePet parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف حیوان خانگی tags: - Admin - مدیریت حیوانات خانگی /api/home: get: operationId: HomeController_getHomeData parameters: [] responses: '200': description: اطلاعات ویترین، بنرها، پرفروش‌ترین‌ها، وبلاگ و غیره '500': description: خطای داخلی سرور summary: دریافت اطلاعات صفحه اصلی tags: - Home - صفحه اصلی /api/blogs: get: operationId: BlogsController_findAll parameters: - name: page required: false in: query description: شماره صفحه (شروع از ۱) schema: minimum: 1 default: 1 type: number - name: limit required: false in: query description: تعداد آیتم‌ها در هر صفحه schema: minimum: 1 default: 10 type: number - name: sortBy required: false in: query description: فیلد برای مرتب‌سازی schema: default: createdAt type: string - name: sortOrder required: false in: query description: جهت مرتب‌سازی (asc/desc) schema: default: desc type: string enum: - asc - desc - name: search required: false in: query description: عبارت جستجو schema: type: string responses: '200': description: لیست مقالات منتشر شده (صفحه‌بندی شده) '500': description: خطای داخلی سرور summary: دریافت لیست مقالات مجله سلامت tags: - Blogs - مجله سلامت /api/blogs/{slug}: get: operationId: BlogsController_findOne parameters: - name: slug required: true in: path schema: type: string responses: '200': description: اطلاعات کامل مقاله '404': description: مقاله یافت نشد '500': description: خطای داخلی سرور summary: دریافت مقاله با اسلاگ (Slug) tags: - Blogs - مجله سلامت /api/wiki: get: operationId: WikiController_findAll parameters: - name: page required: false in: query description: شماره صفحه (شروع از ۱) schema: minimum: 1 default: 1 type: number - name: limit required: false in: query description: تعداد آیتم‌ها در هر صفحه schema: minimum: 1 default: 10 type: number - name: sortBy required: false in: query description: فیلد برای مرتب‌سازی schema: default: createdAt type: string - name: sortOrder required: false in: query description: جهت مرتب‌سازی (asc/desc) schema: default: desc type: string enum: - asc - desc - name: search required: false in: query description: عبارت جستجو schema: type: string responses: '200': description: لیست کلمات به همراه توضیحات (صفحه‌بندی شده) '500': description: خطای داخلی سرور summary: دریافت تمام کلمات دانشنامه tags: - Wiki - دانشنامه ترکیبات /api/wiki/{key}: get: operationId: WikiController_findOne parameters: - name: key required: true in: path schema: type: string responses: '200': description: اطلاعات کامل ترکیب علمی '404': description: ترکیب علمی یافت نشد '500': description: خطای داخلی سرور summary: دریافت ترکیب علمی با کلید tags: - Wiki - دانشنامه ترکیبات /api/seo/sitemap: get: operationId: SeoController_getSitemap parameters: [] responses: '200': description: '' summary: دریافت لیست لینک‌های نقشه سایت (Sitemap) tags: - SEO & Metadata /api/seo/product-schema/{idOrSlug}: get: operationId: SeoController_getProductSchema parameters: - name: idOrSlug required: true in: path schema: type: string responses: '200': description: '' summary: دریافت متادیتای ساختاریافته Schema.org JSON-LD محصول tags: - SEO & Metadata /api/admin/cms/hero-banners: get: operationId: CmsController_getHeroBanners parameters: [] responses: '200': description: '' security: - bearer: [] summary: لیست تمام بنرهای هیرو tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره post: operationId: CmsController_createHeroBanner parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateHeroBannerDto' responses: '201': description: '' security: - bearer: [] summary: ایجاد بنر جدید هیرو tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره /api/admin/cms/hero-banners/{id}: put: operationId: CmsController_updateHeroBanner parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش بنر هیرو tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره delete: operationId: CmsController_deleteHeroBanner parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف بنر هیرو tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره /api/admin/cms/vet-testimonials: get: operationId: CmsController_getVetTestimonials parameters: [] responses: '200': description: '' security: - bearer: [] summary: لیست تمام نظرات دامپزشکان tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره post: operationId: CmsController_createVetTestimonial parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateVetTestimonialDto' responses: '201': description: '' security: - bearer: [] summary: ایجاد نظر دامپزشک جدید tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره /api/admin/cms/vet-testimonials/{id}: put: operationId: CmsController_updateVetTestimonial parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش نظر دامپزشک tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره delete: operationId: CmsController_deleteVetTestimonial parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف نظر دامپزشک tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره /api/admin/cms/smart-advisor-rules: get: operationId: CmsController_getSmartAdvisorRules parameters: [] responses: '200': description: '' security: - bearer: [] summary: لیست قوانین دستیار هوشمند سلامت tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره post: operationId: CmsController_createSmartAdvisorRule parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateSmartAdvisorRuleDto' responses: '201': description: '' security: - bearer: [] summary: ایجاد قانون مشاوره هوشمند جدید tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره /api/admin/cms/smart-advisor-rules/{id}: put: operationId: CmsController_updateSmartAdvisorRule parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش قانون مشاوره هوشمند tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره delete: operationId: CmsController_deleteSmartAdvisorRule parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف قانون مشاوره هوشمند tags: - CMS - مدیریت بنرها، نظرات دامپزشکان و قوانین مشاوره /api/wholesale/apply: post: operationId: WholesaleController_applyForWholesale parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WholesaleApplyDto' responses: '201': description: '' security: - bearer: [] summary: ثبت درخواست همکاری عمده‌فروشی (ارسال پروانه کلینیک/داروخانه) tags: - Wholesale - عمده‌فروشی B2B /api/wholesale/requests: get: operationId: WholesaleController_getWholesaleRequests parameters: [] responses: '200': description: '' security: - bearer: [] summary: لیست تمام درخواست‌های همکاری عمده‌فروشی (مخصوص ادمین) tags: - Wholesale - عمده‌فروشی B2B /api/wholesale/approve/{userId}: put: operationId: WholesaleController_approveWholesaleRequest parameters: - name: userId required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: تایید درخواست و ارتقا به خریدار عمده (User_Wholesale) tags: - Wholesale - عمده‌فروشی B2B /api/wholesale/reject/{userId}: put: operationId: WholesaleController_rejectWholesaleRequest parameters: - name: userId required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: رد درخواست همکاری عمده‌فروشی tags: - Wholesale - عمده‌فروشی B2B /api/videos: get: operationId: VideosController_findAll parameters: - name: featured required: false in: query schema: {} - name: search required: false in: query schema: {} - name: limit required: false in: query schema: {} - name: page required: false in: query schema: {} responses: '200': description: '' summary: دریافت لیست ویدئوها (عمومی) tags: - Videos - مشاوره ویدئویی و آکادمی post: operationId: VideosController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateVideoDto' responses: '201': description: '' security: - bearer: [] summary: افزودن ویدئوی جدید (ادمین) tags: - Videos - مشاوره ویدئویی و آکادمی /api/videos/{id}: get: operationId: VideosController_findOne parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' summary: دریافت جزئیات یک ویدئو tags: - Videos - مشاوره ویدئویی و آکادمی put: operationId: VideosController_update parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: ویرایش ویدئو (ادمین) tags: - Videos - مشاوره ویدئویی و آکادمی delete: operationId: VideosController_remove parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' security: - bearer: [] summary: حذف ویدئو (ادمین) tags: - Videos - مشاوره ویدئویی و آکادمی info: title: Canino Iran API description: API Documentation for Canino Iran Pet Health & Supplement Platform version: 1.0.0 contact: {} tags: [] servers: [] components: securitySchemes: bearer: scheme: bearer bearerFormat: JWT type: http schemas: UpdateProfileDto: type: object properties: firstName: type: string description: نام کاربر lastName: type: string description: نام خانوادگی کاربر email: type: string description: ایمیل کاربر mobile: type: string description: شماره موبایل کاربر AddressDto: type: object properties: title: type: string description: عنوان آدرس (مثلا خانه، کار) receptorName: type: string description: نام تحویل‌گیرنده phone: type: string description: شماره تلفن گیرنده province: type: string description: استان city: type: string description: شهر detail: type: string description: جزئیات آدرس پستی zipCode: type: string description: کد پستی isDefault: type: boolean description: انتخاب به عنوان آدرس پیش‌فرض required: - title - receptorName - phone - province - city - detail - zipCode SendOtpDto: type: object properties: phoneNumber: type: string description: شماره موبایل کاربر example: '09123456789' required: - phoneNumber VerifyOtpDto: type: object properties: phoneNumber: type: string description: شماره موبایل کاربر example: '09123456789' code: type: string description: کد تایید پیامک شده example: '12345' required: - phoneNumber - code RegisterDto: type: object properties: firstName: type: string description: نام example: علی lastName: type: string description: نام خانوادگی example: رضایی email: type: string description: ایمیل (اختیاری) example: ali@example.com mobile: type: string description: شماره موبایل example: '09123456789' password: type: string description: رمز عبور example: password123 required: - firstName - lastName - mobile - password LoginDto: type: object properties: mobile: type: string description: شماره موبایل example: '09123456789' password: type: string description: رمز عبور example: password123 required: - mobile - password CreatePetDto: type: object properties: name: type: string description: نام حیوان خانگی example: بادی type: type: string description: نوع (سگ/گربه) example: سگ breed: type: string description: نژاد example: ژرمن شپرد weight: type: number description: وزن (کیلوگرم) example: 25.5 age: type: number description: سن (سال) example: 3 activityLevel: type: string description: سطح فعالیت example: متوسط medicalConditions: description: سوابق پزشکی type: array items: type: string required: - name - type UpdatePetDto: type: object properties: name: type: string description: نام حیوان خانگی example: بادی type: type: string description: نوع (سگ/گربه) example: سگ breed: type: string description: نژاد example: ژرمن شپرد weight: type: number description: وزن (کیلوگرم) example: 25.5 age: type: number description: سن (سال) example: 3 activityLevel: type: string description: سطح فعالیت example: متوسط medicalConditions: description: سوابق پزشکی type: array items: type: string CreateReminderDto: type: object properties: title: type: string description: عنوان یادآور example: قرص کلسیم time: type: string description: 'زمان یادآور (مثال: 08:30)' example: '08:30' frequency: type: string description: دوره زمانی (روزانه / هفتگی) example: روزانه productId: type: string description: شناسه محصول مربوطه example: a1b2c3d4-1234-5678-abcd-ef1234567890 required: - title - time - frequency CreateHealthLogDto: type: object properties: appetite: type: string description: وضعیت اشتها example: عالی energy: type: string description: وضعیت انرژی example: نرمال digestion: type: string description: وضعیت گوارش example: نرمال note: type: string description: یادداشت یا توضیح اضافی example: امروز فعالیت خوبی داشت. required: - appetite - energy - digestion OrderItemDto: type: object properties: productId: type: string description: ID محصول quantity: type: number description: تعداد محصول required: - productId - quantity CreateOrderDto: type: object properties: petId: type: string description: ID حیوان خانگی مرتبط couponCode: type: string description: کد تخفیف (اختیاری) prescriptionUrl: type: string description: آدرس/شناسه تصویر نسخه پزشکی (برای داروهای نیازمند نسخه) charityDonation: type: number description: مبلغ کمک به پناهگاه حیوانات (ردپای مهربانی) isRefill: type: boolean description: فعالسازی تمدید خودکار سفارش paymentMethod: type: string description: روش پرداخت (online, wallet) refillIntervalDays: type: number description: دوره زمانی تمدید خودکار (روز) shippingAddress: type: string description: آدرس تحویل گیرنده items: description: لیست اقلام سفارش type: array items: $ref: '#/components/schemas/OrderItemDto' required: - items ValidateCouponDto: type: object properties: {} CreateHeroBannerDto: type: object properties: title: type: string description: عنوان اصلی بنر subtitle: type: string description: زیرعنوان بنر imageUrl: type: string description: آدرس تصویر بنر buttonText: type: string description: متن دکمه buttonLink: type: string description: لینک دکمه order: type: number description: ترتیب نمایش isActive: type: boolean description: فعال/غیرفعال required: - title - imageUrl CreateVetTestimonialDto: type: object properties: vetName: type: string description: نام دامپزشک clinicName: type: string description: نام کلینیک imageUrl: type: string description: تصویر دامپزشک quote: type: string description: متن نظر و تجربه دامپزشک rating: type: number description: امتیاز (۱ تا ۵) order: type: number description: ترتیب نمایش isActive: type: boolean description: فعال/غیرفعال required: - vetName - quote CreateSmartAdvisorRuleDto: type: object properties: condition: type: string description: شرایط انتخاب (علائم یا حالت بالینی) targetPetType: type: string description: نوع پت هدف (سگ/گربه/هر دو) recommendedProduct: type: string description: شناسه محصول پیشنهادی reason: type: string description: علت و منطق پزشکی تجویز required: - condition - recommendedProduct - reason WholesaleApplyDto: type: object properties: businessName: type: string description: نام مجموعه / کلینیک / داروخانه licenseNumber: type: string description: شماره پروانه کسب / نظام دامپزشکی licenseDocumentUrl: type: string description: آدرس تصویر/فایل پروانه کسب notes: type: string description: توضیحات تکمیلی required: - businessName - licenseNumber CreateVideoDto: type: object properties: title: type: string description: عنوان ویدئوی آموزشی example: نحوه آماده‌سازی کانی‌هیدروکس GAG doctor: type: string description: نام دکتر/ارائه‌دهنده example: دکتر کلاوس هنینگ duration: type: string description: مدت زمان ویدئو example: ۰۲:۳۰ thumbnail: type: string description: آدرس تصویر کاور example: https://example.com/thumb.jpg videoUrl: type: string description: آدرس فایل ویدئو example: https://example.com/video.mp4 description: type: string description: توضیحات تکمیلی ویدئو isFeatured: type: boolean description: آیا ویدئوی ویژه/صفحه اصلی است؟ example: true required: - title - doctor - videoUrl