swagger: '2.0'
info:
  title: Sevinhost API
  description: api.sevinhost
  termsOfService: https://www.sevintm.com
  contact:
    email: alirezaazarakhsh20@gmail.com
  license:
    name: BSD License
  version: v1
host: crms.sevinhost.ir
schemes:
- http
basePath: /api
consumes:
- application/json
produces:
- application/json
securityDefinitions:
  Basic:
    type: basic
security:
- Basic: []
paths:
  /about-us/features/:
    get:
      operationId: بخش چرا ما را انتخاب کنید - ویژگی‌ها
      description: بازمی‌گرداند یک شیء شامل `description` و `items` (آیکون‌ها و عنوان‌ها).
      parameters: []
      responses:
        '200':
          description: Features payload
      tags:
      - درباره ما
    parameters: []
  /about-us/statistic/:
    get:
      operationId: لیست آمار درباره ما
      description: |-
        این endpoint فهرستی از آیتم‌های آماری (Statistics) صفحه درباره ما را بازمی‌گرداند. هر آیتم شامل:
        - `icon`: نام/کد آیکون به صورت متن (رشته).
        - `title`: عنوان آیتم آماری (رشته).
        - `number`: مقدار عددی نمایش داده‌شده (عدد).
        - `duration`: مدت زمان انیمیشن/پر شدن به میلی‌ثانیه (عدد، ms).
      parameters: []
      responses:
        '200':
          description: فهرست آیتم‌های آماری
          schema:
            type: array
            items:
              type: object
              properties:
                icon:
                  description: نام یا کد آیکون به صورت متن
                  type: string
                title:
                  description: عنوان آیتم آماری
                  type: string
                number:
                  description: مقدار عددی نمایش داده‌شده
                  type: integer
                duration:
                  description: مدت زمان انیمیشن به میلی‌ثانیه (ms)
                  type: integer
            example:
            - icon: fas fa-chart-line
              title: تعداد مشتریان
              number: 1200
              duration: 1000
            - icon: fas fa-server
              title: سرورهای فعال
              number: 24
              duration: 800
      tags:
      - درباره ما
    parameters: []
  /about-us/story/:
    get:
      operationId: استوری درباره ما
      description: |-
        این endpoint یک شیء تکی مربوط به بخش «استوری» صفحه درباره ما را بازمی‌گرداند. فیلدها به شرح زیر هستند:
        - `description`: متن توضیحات استوری (رشته).
        - `image`: شیئی حاوی `url` (آدرس کامل تصویر) و `isActive` (بولین، مشخص می‌کند تصویر به‌عنوان رسانه فعال استفاده شود).
        - `video`: شیئی شامل `url` (آدرس فایل ویدیویی)، `poster` (آدرس کاور/پوستر ویدیو) و `isActive` (بولین، مشخص می‌کند ویدیو فعال است).
        توجه: مدل سطح برنامه از فعال بودن هم‌زمان تصویر و ویدیو جلوگیری می‌کند؛ بنابراین همزمان هر دو `isActive` صحیح نخواهند بود. فرانت‌اند باید با توجه به مقدار `isActive` نمایش مناسب (تصویر یا ویدیو) را انجام دهد.
      parameters: []
      responses:
        '200':
          description: استوری با موفقیت دریافت شد
          schema:
            type: object
            properties:
              description:
                description: متن توضیحات استوری
                type: string
              image:
                description: اطلاعات تصویر استوری (در صورت وجود)
                type: object
                properties:
                  url:
                    description: آدرس کامل تصویر (قابل استفاده در تگ <img> یا background)
                    type: string
                    format: uri
                  isActive:
                    description: اگر true باشد تصویر به‌عنوان رسانه استوری فعال است
                    type: boolean
              video:
                description: اطلاعات ویدیوی استوری (در صورت وجود)
                type: object
                properties:
                  url:
                    description: آدرس فایل ویدیویی (mp4 یا مشابه)
                    type: string
                    format: uri
                  poster:
                    description: آدرس تصویر کاور/پوستر ویدیو
                    type: string
                    format: uri
                  isActive:
                    description: اگر true باشد ویدیو به‌عنوان رسانه استوری فعال است
                    type: boolean
            example:
              description: ما با عشق و تلاش محصولاتی می‌سازیم که کسب‌وکار شما را قدرتمند
                می‌کند.
              image:
                url: https://cdn.example.com/media/about/story/hero.jpg
                isActive: true
              video:
                url: https://cdn.example.com/media/about/videos/intro.mp4
                poster: https://cdn.example.com/media/about/videos/intro-poster.jpg
                isActive: false
        '404':
          description: استوری پیدا نشد
          schema:
            type: object
            properties:
              detail:
                description: پیغام خطا
                type: string
      tags:
      - درباره ما
    parameters: []
  /auth/logout/:
    post:
      operationId: خروج از حساب کاربری
      description: خروج کاربر و باطل کردن Refresh Token
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - احراز هویت
    parameters: []
  /auth/otp/send/:
    post:
      operationId: ارسال کد تأیید
      description: ارسال کد تأیید به شماره موبایل
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/SendOTP'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/SendOTP'
      tags:
      - احراز هویت
    parameters: []
  /auth/otp/verify/:
    post:
      operationId: تأیید کد و دریافت توکن
      description: |-
        تأیید کد OTP و صدور Access + Refresh Token
        فقط حساب محلی ساخته می‌شود. هیچ داده‌ی فیک و هیچ کلاینت WHMCS ساخته نمی‌شود.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/VerifyOTP'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/VerifyOTP'
      tags:
      - احراز هویت
    parameters: []
  /auth/profile/complete/:
    post:
      operationId: تکمیل پروفایل و ساخت اکانت WHMCS
      description: |-
        تکمیل پروفایل کاربر + ساخت کلاینت در WHMCS
        فقط برای کاربران لاگین‌شده که هنوز whmcs_client_id ندارند.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/CompleteProfile'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/CompleteProfile'
      tags:
      - احراز هویت
    parameters: []
  /auth/token/refresh/:
    post:
      operationId: auth_token_refresh_create
      description: دریافت Access Token جدید با استفاده از Refresh Token
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/TokenRefresh'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/TokenRefresh'
      tags:
      - auth
    parameters: []
  /auth/whmcs/login/:
    post:
      operationId: ورود کاربر WHMCS و دریافت لینک SSO
      description: ورود مستقیم با ایمیل و رمز عبور WHMCS + دریافت لینک SSO
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/WHMCSLogin'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/WHMCSLogin'
      tags:
      - احراز هویت
    parameters: []
  /auth/whmcs/sso/:
    get:
      operationId: ساخت لینک ورود به پنل WHMCS (SSO)
      description: |-
        ساخت لینک یک‌بارمصرف ورود به پنل WHMCS
        فقط برای کاربران لاگین‌شده در سیستم خودمان
      parameters:
      - name: destination
        in: query
        required: false
        type: string
        x-nullable: true
      - name: service_id
        in: query
        required: false
        type: integer
        x-nullable: true
      responses:
        '200':
          description: ''
      tags:
      - احراز هویت
    parameters: []
  /coming-soon/:
    get:
      operationId: دریافت صفحه به‌زودی
      description: دریافت اطلاعات صفحه کامینگ‌سون، صرف‌نظر از فعال یا غیرفعال بودن
        آن.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ComingSoon'
      tags:
      - به زودی
    parameters: []
  /config/announcement-banner/:
    get:
      operationId: بنر اطلاع‌رسانی
      description: این API برای دریافت بنر اطلاع‌رسانی فعال است.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/AnnouncementBanner'
      tags:
      - صفحه اصلی
    parameters: []
  /config/auth-links/:
    get:
      operationId: لینک‌های احراز هویت
      description: این API برای دریافت لینک‌های ورود و ثبت‌نام است.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/AuthLinks'
      tags:
      - پیکربندی
    parameters: []
  /config/comment/:
    get:
      operationId: نظرات شرکت
      description: این API فهرستی از نظرات شرکت‌ها را برای صفحه درباره ما برمی‌گرداند.
        هر آیتم مطابق با تایپ `Comment` است.
      parameters: []
      responses:
        '200':
          description: فهرست نظرات شرکت‌ها
          schema:
            type: array
            items:
              type: object
              properties:
                logo:
                  description: آدرس لوگو
                  type: string
                  format: uri
                title:
                  description: نام شرکت
                  type: string
                subtitle:
                  description: نام مدیرعامل
                  type: string
                description:
                  description: متن پیام/نظر
                  type: string
      tags:
      - پیکربندی
    parameters: []
  /config/licenses/:
    get:
      operationId: لیست مجوزها و اینماد
      description: این API برای دریافت لیست مجوزها و کد اینماد است.
      parameters: []
      responses:
        '200':
          description: لیست مجوزها و اینماد
          examples:
            application/json:
              licenses:
              - image: http://crms.sevinhost.com/media/licenses/77_937_01_01.jpg
                link: http://sevinhost.ir
                title: مجوز شماره ۱
              - image: http://crms.sevinhost.com/media/licenses/4ae3e132-822a-4687-9dee-ef00786d07d5.jpg
                link: http://sevinhost.com
                title: مجوز شماره ۲
              enamad: <script>...</script>
      tags:
      - پیکربندی
    parameters: []
  /config/logo/:
    get:
      operationId: لوگوهای سایت
      description: این API برای دریافت لوگوهای سایت می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/SiteLogo'
      tags:
      - پیکربندی
    parameters: []
  /config/main-menu/:
    get:
      operationId: منوی اصلی
      description: این API برای دریافت منوی اصلی با ساختار مگامنو است.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/MainMenu'
      tags:
      - پیکربندی
    parameters: []
  /config/mega-menu-categories/:
    get:
      operationId: دسته‌بندی‌های مگامنو
      description: این API برای دریافت دسته‌بندی‌های مگا منو می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/MegaMenuCategory'
      tags:
      - پیکربندی
    parameters: []
  /config/mega-menu-items/:
    get:
      operationId: آیتم‌های مگامنو
      description: این API برای دریافت آیتم‌های مگا منو می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/MegaMenuItem'
      tags:
      - پیکربندی
    parameters: []
  /config/mega-subcategories/:
    get:
      operationId: زیردسته‌های مگامنو
      description: این API برای دریافت زیردسته‌بندی‌های مگا منو می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/MegaSubCategory'
      tags:
      - پیکربندی
    parameters: []
  /config/menu/:
    get:
      operationId: آیتم‌های منوی هدر
      description: این API برای دریافت آیتم‌های منوی بالای سایت است.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/HeaderMenuItem'
      tags:
      - پیکربندی
    parameters: []
  /config/site-sliders/:
    get:
      operationId: اسلایدر سایت
      description: این API برای دریافت اسلایدرهای سایت است.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/SiteSlider'
      tags:
      - پیکربندی
    parameters: []
  /config/social-media/:
    get:
      operationId: شبکه‌های اجتماعی
      description: |2

         لیست کامل شبکه‌های اجتماعی سایت

        این API برای نمایش لینک‌های شبکه‌های اجتماعی در فوتر، هدر یا
        صفحه تماس استفاده می‌شود.

        **خروجی شامل:**
        - شناسه (id)
        - نوع شبکه اجتماعی (type)
        - آیکون (src) - URL تصویر آیکون
        - لینک (link) - لینک کامل صفحه

        **پاسخ بدون صفحه‌بندی**
      parameters: []
      responses:
        '200':
          description: لیست شبکه‌های اجتماعی با موفقیت دریافت شد
          schema:
            type: array
            items:
              $ref: '#/definitions/SocialMedia'
      tags:
      - پیکربندی
    parameters: []
  /contact-us/contact/:
    get:
      operationId: دریافت جعبه‌های اطلاعات تماس
      description: |2

        دریافت لیست کامل جعبه‌های اطلاعات تماس
      parameters: []
      responses:
        '200':
          description: لیست جعبه‌های اطلاعات با موفقیت دریافت شد
          schema:
            type: array
            items:
              $ref: '#/definitions/ContactInfoBox'
      tags:
      - تماس با ما
    parameters: []
  /contact-us/response-hours/:
    get:
      operationId: دریافت ساعات پاسخگویی
      description: |2

        دریافت ساعات کاری و پاسخگویی دپارتمان‌ها
      parameters: []
      responses:
        '200':
          description: لیست ساعات پاسخگویی با موفقیت دریافت شد
          schema:
            type: array
            items:
              $ref: '#/definitions/ContactResponseHour'
      tags:
      - تماس با ما
    parameters: []
  /contact-us/send-ticket/:
    post:
      operationId: ارسال پیام تماس
      description: |2

        ارسال پیام از طریق فرم تماس با ما
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ContactFormMessage'
      responses:
        '201':
          description: پیام با موفقیت ثبت و ذخیره شد
          schema:
            $ref: '#/definitions/ContactFormMessage'
        '400':
          description: خطا در اعتبارسنجی داده‌ها
      tags:
      - تماس با ما
    parameters: []
  /footer/access-links/:
    get:
      operationId: دسته‌بندی لینک‌های فوتر
      description: این API برای دریافت دسته‌بندی‌های لینک‌های فوتر است.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/FooterLinkCategory'
      tags:
      - فوتر
    parameters: []
  /footer/contact/:
    get:
      operationId: راه های ارتباطی فوتر
      description: این API برای دریافت راه های ارتباطی فوتر سایت شامل شماره تلفن،
        ایمیل و آدرس است.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/SiteFooterInfo'
      tags:
      - فوتر
    parameters: []
  /home-config/company-logo/:
    get:
      operationId: لوگوهای شرکت‌ها
      description: این API برای دریافت اطلاعات لوگوهای شرکت‌ها می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/CompanyLogo'
      tags:
      - صفحه اصلی
    parameters: []
  /home-config/company-reviews/:
    get:
      operationId: نظرات شرکت‌ها
      description: این API برای دریافت نظرات شرکت‌ها با پاجینیشن است.
      parameters:
      - name: page
        in: query
        description: A page number within the paginated result set.
        required: false
        type: integer
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/CompanyReview'
      tags:
      - صفحه اصلی
    parameters: []
  /home-config/faq/:
    get:
      operationId: سوالات متداول
      description: این API برای دریافت اطلاعات سوالات متداول می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/FAQ'
      tags:
      - صفحه اصلی
    parameters: []
  /home-config/feature/:
    get:
      operationId: بخش ویژگی‌ها
      description: این API برای دریافت اطلاعات بخش ویژگی‌ها (Feature Section) در صفحه
        اصلی می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/FeatureSection'
      tags:
      - صفحه اصلی
    parameters: []
  /home-config/question-answer/:
    get:
      operationId: دریافت سوالات متداول
      description: |2

        دریافت لیست کامل سوالات متداول (FAQ)

        این API تمامی سوالات متداول و پاسخ‌های آن‌ها را بازمی‌گرداند.

        **خروجی شامل:**
        - `id`: شناسه رکورد
        - `question`: متن سوال
        - `answer`: متن پاسخ
        - `icon`: نام یا کلاس آیکون به صورت متن (توجه: آیکون به‌صورت فایل یا URL ذخیره نمی‌شود)

        **پاسخ بدون صفحه‌بندی:** بله — تمامی سوالات در یک پاسخ بازگردانده می‌شوند
      parameters:
      - name: search
        in: query
        description: جستجو در متن سوال (فیلتر بر اساس وجود رشته در فیلد `question`)
        required: false
        type: string
      responses:
        '200':
          description: لیست سوالات متداول با موفقیت دریافت شد
          schema:
            type: array
            items:
              $ref: '#/definitions/QuestionAnswer'
      tags:
      - صفحه هاست
    parameters: []
  /home-config/section1/:
    get:
      operationId: سکشن اول صفحه اصلی
      description: این API برای دریافت اطلاعات سکشن اول در صفحه اصلی می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/HomeSection1'
      tags:
      - صفحه اصلی
    parameters: []
  /home-config/service/:
    get:
      operationId: بخش خدمات
      description: این API برای دریافت اطلاعات بخش خدمات (Service Section) در صفحه
        اصلی می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/ServiceSection'
      tags:
      - صفحه اصلی
    parameters: []
  /home-config/why-sevinhost/:
    get:
      operationId: دریافت چرا سِوین هاست
      description: این API برای دریافت اطلاعات بخش چرا سِوین هاست (Why Sevinhost)
        می‌باشد.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/WhySevinHost'
      tags:
      - صفحه اصلی
    parameters: []
  /host-detail/advantages/{slug}/:
    get:
      operationId: مزایا
      description: این API لیست مزایای یک صفحه هاست را بر اساس اسلاگ برمی‌گرداند.
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - صفحه داخلی هاست
    parameters:
    - name: slug
      in: path
      required: true
      type: string
  /host-detail/faq/{slug}/:
    get:
      operationId: بنر و سوالات متداول
      description: این API تصویر بنر پرسش و لیست سوالات متداول یک صفحه هاست را بر
        اساس اسلاگ برمی‌گرداند.
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - صفحه داخلی هاست
    parameters:
    - name: slug
      in: path
      required: true
      type: string
  /host-detail/introduction/{slug}/:
    get:
      operationId: معرفی
      description: این API هدر یک صفحه هاست را بر اساس اسلاگ برمی‌گرداند، شامل عنوان،
        توضیحات و تصویر.
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - صفحه داخلی هاست
    parameters:
    - name: slug
      in: path
      required: true
      type: string
  /host-detail/packages/{slug}/:
    get:
      operationId: پکیج‌ها
      description: |2

        دریافت لیست پکیج‌های هاست بدون صفحه‌بندی

        این API تمامی پکیج‌های هاست را برمی‌گرداند. هر پکیج شامل عنوان، لیست ویژگی‌ها و لیست متغیرهای قیمت‌گذاری است.

        **ساختار خروجی هر پکیج:**
        - title: عنوان پکیج (string)
        - category: دسته‌بندی پکیج (string)
        - datacenter: دیتاسنتر (string)
        - storage_type: نوع فضا (string)
        - link: لینک پکیج (string)
        - control_panel: کنترل پنل (string)
        - features: لیست ویژگی‌ها (array of objects)
          - title: عنوان ویژگی (string)
          - value: مقدار ویژگی (string)
          - icon: آیکون ویژگی (string, optional)
        - variables: لیست قیمت‌گذاری‌ها (array of objects)
          - duration: مدت زمان (integer: 1=ماهانه, 3=سه ماهه, 6=شش ماهه, 12=یک ساله)
          - discount: درصد تخفیف (integer, default 0)
          - price: قیمت (decimal)

        **پاسخ با صفحه‌بندی:** خیر
      parameters: []
      responses:
        '200':
          description: لیست پکیج‌های هاست با موفقیت دریافت شد
          examples:
            application/json:
            - title: پکیج پایه
              category: هاست اشتراکی
              datacenter: ایران
              storage_type: اشتراکی
              link: https://example.com/package1
              control_panel: cPanel
              features:
              - title: فضا
                value: 10 GB
                icon: fas fa-hdd
              - title: پهنای باند
                value: 100 GB
                icon: fas fa-tachometer-alt
              variables:
              - duration: 1
                discount: 10
                price: 100000
              - duration: 3
                discount: 0
                price: 200000
              - duration: 6
                discount: 15
                price: 0
            - title: پکیج حرفه‌ای
              category: هاست اختصاصی
              datacenter: آلمان
              storage_type: اختصاصی
              link: https://example.com/package2
              control_panel: Plesk
              features:
              - title: فضا
                value: 50 GB
                icon: fas fa-hdd
              variables:
              - duration: 1
                discount: 0
                price: 200000
              - duration: 12
                discount: 20
                price: 500000
      tags:
      - صفحه داخلی هاست
    parameters:
    - name: slug
      in: path
      required: true
      type: string
  /host/banner/:
    get:
      operationId: بنر صفحه سایت
      description: |2

        اطلاعات بنر اصلی صفحه سایت (آبجکت، نه لیست)

        **خروجی شامل:**
        - image: URL تصویر بنر (پشتیبانی از GIF/SVG/PNG/JPG)
        - link: لینک مقصد بنر
      parameters: []
      responses:
        '200':
          description: بنر سایت با موفقیت دریافت شد
          schema:
            $ref: '#/definitions/Banner'
      tags:
      - صفحه هاست
    parameters: []
  /host/categories/:
    get:
      operationId: 'دسته‌بندی‌های هاست '
      description: |2

        دریافت لیست دسته‌بندی‌های هاست به صورت آرایه‌ای از اشیاء `Product`.

        هر آیتم از ساختار زیر پیروی می‌کند:

        type categories = {
          image: string;
          title: {
            fa: string;
            en: string;
          };
          price: string;
          description: string;
          slug: string;
        };

        این API بدون صفحه‌بندی تمام دسته‌بندی‌ها را بازمی‌گرداند.
      parameters: []
      responses:
        '200':
          description: لیست دسته‌بندی‌های هاست (Product) با موفقیت دریافت شد
          schema:
            type: array
            items:
              type: object
              properties:
                image:
                  description: URL تصویر (لوگو)
                  type: string
                title:
                  type: object
                  properties:
                    fa:
                      type: string
                    en:
                      type: string
                price:
                  description: قیمت به صورت عدد (int یا float) یا رشتهٔ خالی اگر مقدار
                    موجود نباشد
                  type: number
                description:
                  type: string
                slug:
                  description: اسلاگ (شناسه یکتا)
                  type: string
          examples:
            application/json:
            - image: http://localhost:8000/media/hostcategory/logos/example.png
              title:
                fa: هاست لینوکس
                en: Linux Hosting
              price: '199000'
              description: یک توضیح کوتاه درباره این دسته‌بندی هاست
              slug: linux-hosting
      tags:
      - صفحه هاست
    parameters: []
  /host/features/:
    get:
      operationId: ویژگی‌های سِوین هاست
      description: |2

        لیست کامل ویژگی‌های سرویس سِوین‌هاست

        این API برای نمایش تمامی ویژگی‌ها و خصوصیات سرویس میزبانی وب
        سِوین‌هاست استفاده می‌شود.

        **خروجی شامل:**
        - شناسه (id)
        - آیکون (icon) - نام/کلاس آیکون به صورت متن
        - عنوان (title)
        - زیرعنوان (subtitle)

        **پاسخ بدون صفحه‌بندی:** بله — حداکثر 8 آیتم بازگردانده می‌شود
      parameters: []
      responses:
        '200':
          description: لیست ویژگی‌های سِوین‌هاست با موفقیت دریافت شد
          schema:
            type: array
            items:
              $ref: '#/definitions/SevinHostAdvantageList'
      tags:
      - صفحه هاست
    parameters: []
  /host/filter-countries/{slug}/:
    get:
      operationId: کشورهای فیلتر
      description: دریافت کشورهای موجود برای فیلتر دسته‌بندی هاست
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/HostingCountry'
      tags:
      - صفحه داخلی هاست
    parameters:
    - name: slug
      in: path
      required: true
      type: string
  /host/filter-duration/{slug}/:
    get:
      operationId: مدت زمان‌های فیلتر
      description: دریافت مدت زمان‌های موجود برای فیلتر دسته‌بندی هاست
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/Duration'
      tags:
      - صفحه داخلی هاست
    parameters:
    - name: slug
      in: path
      required: true
      type: string
  /host/fq/:
    get:
      operationId: دریافت سوالات متداول
      description: |2

        دریافت لیست کامل سوالات متداول (FAQ)

        این API تمامی سوالات متداول و پاسخ‌های آن‌ها را بازمی‌گرداند.

        **خروجی شامل:**
        - `id`: شناسه رکورد
        - `question`: متن سوال
        - `answer`: متن پاسخ
        - `icon`: نام یا کلاس آیکون به صورت متن (توجه: آیکون به‌صورت فایل یا URL ذخیره نمی‌شود)

        **پاسخ بدون صفحه‌بندی:** بله — تمامی سوالات در یک پاسخ بازگردانده می‌شوند
      parameters:
      - name: search
        in: query
        description: جستجو در متن سوال (فیلتر بر اساس وجود رشته در فیلد `question`)
        required: false
        type: string
      responses:
        '200':
          description: لیست سوالات متداول با موفقیت دریافت شد
          schema:
            type: array
            items:
              $ref: '#/definitions/QuestionAnswer'
      tags:
      - صفحه هاست
    parameters: []
  /host/intro-sections/:
    get:
      operationId: بخش‌های معرفی
      description: |2

        لیست بخش‌های معرفی صفحه هاست

        این API برای نمایش بخش‌های معرفی و توضیحات مربوط به سرویس‌ها
        و امکانات سایت استفاده می‌شود.

        **خروجی شامل:**
        - شناسه (id)
        - عنوان (title)
        - توضیحات (description)
        - تصویر (image) - URL تصویر
        **پاسخ بدون صفحه‌بندی:** بله — تمامی آیتم‌ها بازگردانده می‌شوند
      parameters: []
      responses:
        '200':
          description: لیست بخش‌های معرفی با موفقیت دریافت شد
          schema:
            type: array
            items:
              $ref: '#/definitions/IntroductionSectionList'
      tags:
      - صفحه هاست
    parameters: []
  /host/introduction/:
    get:
      operationId: معرفی صفحه هاست
      description: |2

         اطلاعات معرفی صفحه هاست

        این API یک شیء واحد شامل عنوان، توضیحات و تصویر معرفی صفحه هاست را
        برمی‌گرداند (لیست یا صفحه‌بندی بازگردانده نمی‌شود).

        **خروجی شامل:**
        - عنوان (title)
        - توضیحات (description)
        - تصویر (image)
      parameters: []
      responses:
        '200':
          description: معرفی صفحه هاست با موفقیت دریافت شد
          schema:
            $ref: '#/definitions/SectionPageTitle'
      tags:
      - صفحه هاست
    parameters: []
  /packages/packages/:
    get:
      operationId: دریافت پکیج‌ها
      description: دریافت اطلاعات پکیج‌ها
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/Package'
      tags:
      - پکیج‌ها
    parameters: []
  /ruls/terms/:
    get:
      operationId: دریافت صفحه شرایط و سوالات متداول
      description: دریافت کل صفحه شرایط + سوالات متداول
      parameters: []
      responses:
        '200':
          description: صفحه شرایط با موفقیت دریافت شد
          schema:
            $ref: '#/definitions/TermsPageConfig'
        '404':
          description: تنظیمات صفحه شرایط یافت نشد
      tags:
      - قوانین و مقررات
    parameters: []
definitions:
  SendOTP:
    required:
    - phone
    type: object
    properties:
      phone:
        title: Phone
        type: string
        maxLength: 11
        minLength: 11
  VerifyOTP:
    required:
    - phone
    - code
    type: object
    properties:
      phone:
        title: Phone
        type: string
        maxLength: 11
        minLength: 11
      code:
        title: Code
        type: string
        maxLength: 4
        minLength: 4
  CompleteProfile:
    required:
    - firstname
    - lastname
    - email
    type: object
    properties:
      firstname:
        title: Firstname
        type: string
        maxLength: 50
        minLength: 1
      lastname:
        title: Lastname
        type: string
        maxLength: 50
        minLength: 1
      email:
        title: Email
        type: string
        format: email
        minLength: 1
  TokenRefresh:
    required:
    - refresh
    type: object
    properties:
      refresh:
        title: Refresh
        type: string
        minLength: 1
      access:
        title: Access
        type: string
        readOnly: true
        minLength: 1
  WHMCSLogin:
    required:
    - email
    - password
    type: object
    properties:
      email:
        title: Email
        type: string
        format: email
        minLength: 1
      password:
        title: Password
        type: string
        maxLength: 255
        minLength: 1
      product_id:
        title: Product id
        type: integer
        x-nullable: true
      destination:
        title: Destination
        type: string
        x-nullable: true
  ComingSoon:
    type: object
    properties:
      date:
        title: Date
        type: string
        readOnly: true
      background:
        title: Background
        type: string
        readOnly: true
      logo:
        title: Logo
        type: string
        readOnly: true
      is_active:
        title: فعال
        type: boolean
  AnnouncementBanner:
    type: object
    properties:
      is_active:
        title: فعال؟
        type: boolean
      image:
        title: تصویر بنر
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      gif:
        title: فایل GIF
        type: string
        readOnly: true
        x-nullable: true
        format: uri
  AuthLinks:
    required:
    - title
    - auth_link
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      auth_link:
        title: لینک احراز هویت
        type: string
        format: uri
        maxLength: 200
        minLength: 1
  SiteLogo:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      updated_at:
        title: Updated at
        type: string
        format: date-time
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        x-nullable: true
      logo:
        title: لوگو
        type: string
        readOnly: true
        format: uri
  MainMenu:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      is_mega_menu:
        title: فعال‌سازی مگامنو
        type: boolean
      categories:
        title: Categories
        type: string
        readOnly: true
  MegaMenuCategory:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      subtitle:
        title: زیرعنوان
        type: string
        maxLength: 255
        x-nullable: true
      icon:
        title: آیکون
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      subcategories:
        title: Subcategories
        type: string
        readOnly: true
  MegaMenuItem:
    required:
    - title
    - url
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      url:
        title: لینک
        type: string
        format: uri
        maxLength: 200
        minLength: 1
  MegaSubCategory:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      items:
        title: Items
        type: string
        readOnly: true
  HeaderMenuItem:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      link:
        title: لینک
        type: string
        format: uri
        maxLength: 200
        x-nullable: true
      internal_link:
        title: لینک داخلی
        type: string
        maxLength: 200
        x-nullable: true
      parent_menu:
        title: منوی والد
        type: integer
        x-nullable: true
  SiteSlider:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      image:
        title: تصویر اسلایدر
        type: string
        readOnly: true
        format: uri
  SocialMedia:
    required:
    - type
    - link
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      type:
        title: Type
        type: string
        minLength: 1
      src:
        title: Src
        type: string
        readOnly: true
        format: uri
      link:
        title: لینک
        description: لینک کامل صفحه شبکه اجتماعی
        type: string
        format: uri
        maxLength: 200
        minLength: 1
  ContactInfoBox:
    required:
    - icon
    - title
    - subtitle
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      icon:
        title: آیکون (متن)
        type: string
        maxLength: 100
        minLength: 1
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      subtitle:
        title: زیرعنوان
        type: string
        maxLength: 255
        minLength: 1
      link:
        title: لینک
        type: string
        maxLength: 255
        x-nullable: true
      name_link:
        title: نام لینک
        type: string
        maxLength: 255
        x-nullable: true
  ContactResponseHour:
    required:
    - workingDays
    - ticketHours
    - telephoneHours
    type: object
    properties:
      department:
        title: Department
        type: string
        readOnly: true
      workingDays:
        title: Workingdays
        type: string
        minLength: 1
      ticketHours:
        title: Tickethours
        type: string
        minLength: 1
      telephoneHours:
        title: Telephonehours
        type: string
        minLength: 1
  ContactFormMessage:
    required:
    - subject
    - full_name
    - phone_number
    - email
    - message
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      subject:
        title: موضوع
        type: string
        maxLength: 255
        minLength: 1
      full_name:
        title: نام و نام خانوادگی
        type: string
        maxLength: 255
        minLength: 1
      phone_number:
        title: شماره تماس
        type: string
        maxLength: 20
        minLength: 1
      email:
        title: ایمیل
        type: string
        format: email
        maxLength: 254
        minLength: 1
      message:
        title: پیام
        type: string
        minLength: 1
      created_at:
        title: Created at
        type: string
        format: date-time
        readOnly: true
  FooterLinkItem:
    required:
    - title
    - url
    - category
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      url:
        title: لینک
        type: string
        format: uri
        maxLength: 200
        minLength: 1
      category:
        title: دسته‌بندی
        type: integer
  FooterLinkCategory:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      links:
        type: array
        items:
          $ref: '#/definitions/FooterLinkItem'
        readOnly: true
  SiteFooterInfo:
    type: object
    properties:
      telephone:
        title: شماره تماس
        description: شماره تماس برای ارتباط
        type: string
        maxLength: 20
        x-nullable: true
      email:
        title: ایمیل
        description: آدرس ایمیل تماس
        type: string
        format: email
        maxLength: 254
        x-nullable: true
      address:
        title: آدرس
        description: مکان فیزیکی کسب‌وکار
        type: string
        maxLength: 255
        x-nullable: true
  CompanyLogo:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      logo:
        title: لوگو
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      logo_url:
        title: Logo url
        type: string
        readOnly: true
  CompanyReview:
    required:
    - title
    - subtitle
    - description
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      logo_url:
        title: Logo url
        type: string
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      subtitle:
        title: زیرعنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: توضیحات
        type: string
        minLength: 1
  FAQ:
    required:
    - question
    - answer
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      icon_url:
        title: Icon url
        type: string
        readOnly: true
      hover_icon_url:
        title: Hover icon url
        type: string
        readOnly: true
      question:
        title: سوال
        type: string
        maxLength: 255
        minLength: 1
      answer:
        title: پاسخ
        type: string
        minLength: 1
  FeatureSection:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      icon_url:
        title: Icon url
        type: string
        readOnly: true
      hover_icon_url:
        title: Hover icon url
        type: string
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      subtitle:
        title: زیرعنوان
        type: string
        maxLength: 255
  QuestionAnswer:
    required:
    - question
    - answer
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      icon:
        title: Icon
        type: string
        readOnly: true
      question:
        title: سوال
        type: string
        maxLength: 255
        minLength: 1
      answer:
        title: پاسخ
        type: string
        minLength: 1
  HomeSection1:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      subtitle:
        title: زیرعنوان
        type: string
        maxLength: 255
      description:
        title: توضیحات
        type: string
      image_url:
        title: Image url
        type: string
        readOnly: true
  ServiceSection:
    required:
    - number
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      number:
        title: شماره
        type: integer
        maximum: 2147483647
        minimum: -2147483648
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      image_url:
        title: Image url
        type: string
        readOnly: true
  WhySevinHost:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      subtitle:
        title: زیرعنوان
        type: string
        maxLength: 255
      icon_url:
        title: Icon url
        type: string
        readOnly: true
  Banner:
    required:
    - link
    type: object
    properties:
      image:
        title: Image
        type: string
        readOnly: true
      link:
        title: لینک
        type: string
        maxLength: 2000
        minLength: 1
  SevinHostAdvantageList:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      icon:
        title: Icon
        type: string
        readOnly: true
      title:
        title: Title
        type: string
        readOnly: true
      subtitle:
        title: Subtitle
        type: string
        readOnly: true
  HostingCountry:
    required:
    - name
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: نام کشور
        type: string
        maxLength: 100
        minLength: 1
      code:
        title: کد کشور
        description: 'کد کشور رو از این لینک بردارید: https://catamphetamine.gitlab.io/country-flag-icons/3x2/'
        type: string
        maxLength: 10
        x-nullable: true
  Duration:
    required:
    - value
    - label
    type: object
    properties:
      value:
        title: Value
        type: integer
      label:
        title: Label
        type: string
        minLength: 1
  IntroductionSectionList:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: Description
        type: string
        readOnly: true
      image:
        title: Image
        type: string
        readOnly: true
  SectionPageTitle:
    required:
    - title
    type: object
    properties:
      title:
        title: عنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: توضیحات
        type: string
        maxLength: 255
      image:
        title: Image
        type: string
        readOnly: true
  Package:
    required:
    - name
    - subtitle
    - description
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: نام پکیج
        type: string
        maxLength: 255
        minLength: 1
      subtitle:
        title: زیرعنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: توضیحات
        type: string
        minLength: 1
      icon:
        title: آیکون
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      external_link:
        title: لینک خارجی
        type: string
        format: uri
        maxLength: 200
        x-nullable: true
      internal_link:
        title: لینک داخلی
        type: string
        maxLength: 255
        x-nullable: true
  TermsFAQItem:
    required:
    - icon
    - question
    - answer
    type: object
    properties:
      icon:
        title: آیکون (متنی)
        type: string
        maxLength: 255
        minLength: 1
      question:
        title: سوال
        type: string
        minLength: 1
      answer:
        title: پاسخ
        type: string
        minLength: 1
  TermsPageConfig:
    required:
    - description_subtitle
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      description_subtitle:
        title: متن توضیحات
        type: string
        minLength: 1
      faq_items:
        type: array
        items:
          $ref: '#/definitions/TermsFAQItem'
        readOnly: true
