canina/swagger.yml
2026-08-06 22:27:56 +03:30

3162 lines
94 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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