openapi: 3.0.3
info:
  title: 'Your App API Documentation'
  description: ''
  version: 1.0.0
servers:
  -
    url: 'http://shofy.test'
tags:
  -
    name: 'Account Deletion'
    description: ''
  -
    name: Address
    description: ''
  -
    name: Ads
    description: ''
  -
    name: Authentication
    description: ''
  -
    name: Blog
    description: ''
  -
    name: Brands
    description: ''
  -
    name: Cart
    description: ''
  -
    name: Checkout
    description: ''
  -
    name: Compare
    description: ''
  -
    name: Contact
    description: ''
  -
    name: Coupons
    description: ''
  -
    name: Currencies
    description: ''
  -
    name: 'Device Tokens'
    description: ''
  -
    name: Downloads
    description: ''
  -
    name: Endpoints
    description: ''
  -
    name: Filters
    description: ''
  -
    name: 'Flash Sale'
    description: ''
  -
    name: Languages
    description: ''
  -
    name: Notifications
    description: ''
  -
    name: 'Order Returns'
    description: ''
  -
    name: Orders
    description: "\nAPIs for order tracking"
  -
    name: Page
    description: ''
  -
    name: 'Product Categories'
    description: ''
  -
    name: Products
    description: ''
  -
    name: Profile
    description: ''
  -
    name: Reviews
    description: ''
  -
    name: 'Simple Slider'
    description: ''
  -
    name: 'Social Login'
    description: ''
  -
    name: Wishlist
    description: ''
paths:
  /api/v1/ecommerce/delete-account:
    post:
      summary: 'Request account deletion'
      operationId: requestAccountDeletion
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data: null
                  message: 'A 6-digit verification code has been sent to your email. Please verify to complete account deletion.'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: 'A 6-digit verification code has been sent to your email. Please verify to complete account deletion.'
      tags:
        - 'Account Deletion'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                reason:
                  type: string
                  description: 'The reason for account deletion (optional).'
                  example: 'No longer need the account'
                  nullable: true
  /api/v1/ecommerce/delete-account/verify:
    post:
      summary: 'Verify and confirm account deletion'
      operationId: verifyAndConfirmAccountDeletion
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data: null
                  message: 'Your account deletion has been confirmed and will be processed shortly.'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: 'Your account deletion has been confirmed and will be processed shortly.'
      tags:
        - 'Account Deletion'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                verification_code:
                  type: string
                  description: 'The 6-digit verification code sent to email.'
                  example: '123456'
              required:
                - verification_code
  /api/v1/ecommerce/addresses:
    get:
      summary: 'Get list of address by customer'
      operationId: getListOfAddressByCustomer
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Address
      security: []
    post:
      summary: 'Create new address for customer'
      operationId: createNewAddressForCustomer
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    id: 1
                    name: 'John Doe'
                    phone: '0123456789'
                    email: john.doe@example.com
                    country: 'United States'
                    state: California
                    city: 'Los Angeles'
                    address: '123 Main St'
                    zip_code: '90001'
                    is_default: true
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      name:
                        type: string
                        example: 'John Doe'
                      phone:
                        type: string
                        example: '0123456789'
                      email:
                        type: string
                        example: john.doe@example.com
                      country:
                        type: string
                        example: 'United States'
                      state:
                        type: string
                        example: California
                      city:
                        type: string
                        example: 'Los Angeles'
                      address:
                        type: string
                        example: '123 Main St'
                      zip_code:
                        type: string
                        example: '90001'
                      is_default:
                        type: boolean
                        example: true
                  message:
                    type: string
                    example: null
      tags:
        - Address
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'The name of the address owner.'
                  example: 'John Doe'
                email:
                  type: string
                  description: 'The email address.'
                  example: john.doe@example.com
                  nullable: true
                phone:
                  type: string
                  description: 'The phone number.'
                  example: '0123456789'
                country:
                  type: string
                  description: 'The country name or country code.'
                  example: 'United States or US'
                  nullable: true
                state:
                  type: string
                  description: 'The state/province name.'
                  example: California
                  nullable: true
                city:
                  type: string
                  description: 'The city name.'
                  example: 'Los Angeles'
                  nullable: true
                address:
                  type: string
                  description: 'The street address.'
                  example: '123 Main St'
                  nullable: true
                is_default:
                  type: boolean
                  description: 'Set as default address.'
                  example: true
                  nullable: true
                zip_code:
                  type: string
                  description: 'The postal/zip code.'
                  example: '90001'
                  nullable: true
              required:
                - name
                - email
                - phone
  '/api/v1/ecommerce/addresses/{id}':
    put:
      summary: 'Update an address'
      operationId: updateAnAddress
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    id: 1
                    name: 'John Doe'
                    phone: '0123456789'
                    email: john.doe@example.com
                    country: 'United States'
                    state: California
                    city: 'Los Angeles'
                    address: '123 Main St'
                    zip_code: '90001'
                    is_default: true
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      name:
                        type: string
                        example: 'John Doe'
                      phone:
                        type: string
                        example: '0123456789'
                      email:
                        type: string
                        example: john.doe@example.com
                      country:
                        type: string
                        example: 'United States'
                      state:
                        type: string
                        example: California
                      city:
                        type: string
                        example: 'Los Angeles'
                      address:
                        type: string
                        example: '123 Main St'
                      zip_code:
                        type: string
                        example: '90001'
                      is_default:
                        type: boolean
                        example: true
                  message:
                    type: string
                    example: null
      tags:
        - Address
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'The name of the address owner.'
                  example: 'John Doe'
                email:
                  type: string
                  description: 'The email address.'
                  example: john.doe@example.com
                phone:
                  type: string
                  description: 'The phone number.'
                  example: '0123456789'
                country:
                  type: string
                  description: 'The country name or country code.'
                  example: 'United States or US'
                state:
                  type: string
                  description: 'The state/province name.'
                  example: California
                city:
                  type: string
                  description: 'The city name.'
                  example: 'Los Angeles'
                address:
                  type: string
                  description: 'The street address.'
                  example: '123 Main St'
                is_default:
                  type: boolean
                  description: 'Set as default address.'
                  example: true
                zip_code:
                  type: string
                  description: 'The postal/zip code.'
                  example: '90001'
                  nullable: true
              required:
                - name
                - email
                - phone
                - state
                - city
                - address
    delete:
      summary: 'Delete an address'
      operationId: deleteAnAddress
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data: null
                  message: 'Address deleted successfully'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: 'Address deleted successfully'
      tags:
        - Address
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the address.'
        example: 1
        required: true
        schema:
          type: integer
  /api/v1/ecommerce/countries:
    get:
      summary: 'Get list of available countries'
      operationId: getListOfAvailableCountries
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    -
                      name: Vietnam
                      code: VN
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: array
                    example:
                      -
                        name: Vietnam
                        code: VN
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          example: Vietnam
                        code:
                          type: string
                          example: VN
                  message:
                    type: string
                    example: null
      tags:
        - Address
      security: []
  /api/v1/ads:
    get:
      summary: 'Get ads'
      operationId: getAds
      description: ''
      parameters:
        -
          in: query
          name: keys
          description: 'Array of ad keys to filter by.'
          example:
            - homepage-banner
            - sidebar-banner
          required: false
          schema:
            type: array
            description: 'Array of ad keys to filter by.'
            example:
              - homepage-banner
              - sidebar-banner
            items:
              type: string
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Ads
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                keys:
                  type: array
                  description: 'Array of ad keys to filter by.'
                  example:
                    - homepage-banner
                    - sidebar-banner
                  items:
                    type: string
      security: []
  /api/v1/register:
    post:
      summary: Register
      operationId: register
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data: null
                  message: 'Registered successfully! We emailed you to verify your account!'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: 'Registered successfully! We emailed you to verify your account!'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    name:
                      - 'The name field is required.'
                    email:
                      - 'The email field is required.'
                    password:
                      - 'The password field is required.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        example:
                          - 'The name field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required.'
                        items:
                          type: string
                      password:
                        type: array
                        example:
                          - 'The password field is required.'
                        items:
                          type: string
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  description: 'The first name of the user. This field is required when <code>name</code> is not present. Must not be greater than 120 characters. Must be at least 2 characters.'
                  example: John
                  nullable: true
                last_name:
                  type: string
                  description: 'The last name of the user. This field is required when <code>name</code> is not present. Must not be greater than 120 characters. Must be at least 2 characters.'
                  example: Smith
                  nullable: true
                name:
                  type: string
                  description: 'The name of the user.'
                  example: consequatur
                  nullable: true
                email:
                  type: string
                  description: 'The email of the user.'
                  example: qkunze@example.com
                password:
                  type: string
                  description: 'The password of user to create.'
                  example: 'O[2UZ5ij-e/dl4m{o,'
                phone:
                  type: string
                  description: 'The phone of the user.'
                  example: consequatur
                  nullable: true
                password_confirmation:
                  type: string
                  description: 'The password confirmation.'
                  example: consequatur
              required:
                - name
                - email
                - password
                - phone
                - password_confirmation
      security: []
  /api/v1/login:
    post:
      summary: Login
      operationId: login
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    token: 1|aF5s7p3xxx1lVL8hkSrPN72m4wPVpTvTs...
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      token:
                        type: string
                        example: 1|aF5s7p3xxx1lVL8hkSrPN72m4wPVpTvTs...
                  message:
                    type: string
                    example: null
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'The email of the user.'
                  example: qkunze@example.com
                password:
                  type: string
                  description: 'The password of user to create.'
                  example: 'O[2UZ5ij-e/dl4m{o,'
              required:
                - email
                - password
      security: []
  /api/v1/email/check:
    post:
      summary: 'Check email existing or not'
      operationId: checkEmailExistingOrNot
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    exists: true
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      exists:
                        type: boolean
                        example: true
                  message:
                    type: string
                    example: null
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'The email of the user.'
                  example: qkunze@example.com
              required:
                - email
      security: []
  /api/v1/password/forgot:
    post:
      summary: 'Forgot password'
      operationId: forgotPassword
      description: 'Send a reset link to the given user.'
      parameters: []
      responses: {  }
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'The email of the user.'
                  example: qkunze@example.com
              required:
                - email
      security: []
  /api/v1/resend-verify-account-email:
    post:
      summary: 'Resend email verification'
      operationId: resendEmailVerification
      description: 'Resend the email verification notification.'
      parameters: []
      responses: {  }
      tags:
        - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'The email of the user.'
                  example: qkunze@example.com
              required:
                - email
      security: []
  /api/v1/logout:
    get:
      summary: Logout
      operationId: logout
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Authentication
  /api/v1/search:
    get:
      summary: 'Search post'
      operationId: searchPost
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    items:
                      -
                        id: 1
                        title: 'Sample Post'
                        slug: sample-post
                        excerpt: 'This is a sample post excerpt'
                    query: sample
                    count: 1
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        example:
                          -
                            id: 1
                            title: 'Sample Post'
                            slug: sample-post
                            excerpt: 'This is a sample post excerpt'
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              example: 1
                            title:
                              type: string
                              example: 'Sample Post'
                            slug:
                              type: string
                              example: sample-post
                            excerpt:
                              type: string
                              example: 'This is a sample post excerpt'
                      query:
                        type: string
                        example: sample
                      count:
                        type: integer
                        example: 1
        400:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'No search result'
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'No search result'
      tags:
        - Blog
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                q:
                  type: string
                  description: 'The search keyword.'
                  example: consequatur
              required:
                - q
      security: []
  /api/v1/posts:
    get:
      summary: 'List posts'
      operationId: listPosts
      description: ''
      parameters:
        -
          in: query
          name: per_page
          description: 'The number of items to return per page (default: 10).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'The number of items to return per page (default: 10).'
            example: 17
        -
          in: query
          name: page
          description: 'The page number to retrieve (default: 1).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'The page number to retrieve (default: 1).'
            example: 17
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    -
                      id: 1
                      title: 'Sample Post'
                      slug: sample-post
                      excerpt: 'This is a sample post excerpt'
                      content: 'Full post content here...'
                      published_at: '2023-01-01T00:00:00.000000Z'
                      author:
                        id: 1
                        name: 'John Doe'
                      categories: []
                      tags: []
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        title: 'Sample Post'
                        slug: sample-post
                        excerpt: 'This is a sample post excerpt'
                        content: 'Full post content here...'
                        published_at: '2023-01-01T00:00:00.000000Z'
                        author:
                          id: 1
                          name: 'John Doe'
                        categories: []
                        tags: []
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        title:
                          type: string
                          example: 'Sample Post'
                        slug:
                          type: string
                          example: sample-post
                        excerpt:
                          type: string
                          example: 'This is a sample post excerpt'
                        content:
                          type: string
                          example: 'Full post content here...'
                        published_at:
                          type: string
                          example: '2023-01-01T00:00:00.000000Z'
                        author:
                          type: object
                          properties:
                            id:
                              type: integer
                              example: 1
                            name:
                              type: string
                              example: 'John Doe'
                        categories:
                          type: array
                          example: []
                        tags:
                          type: array
                          example: []
                  message:
                    type: string
                    example: null
      tags:
        - Blog
      security: []
  /api/v1/categories:
    get:
      summary: 'List categories'
      operationId: listCategories
      description: ''
      parameters:
        -
          in: query
          name: per_page
          description: 'The number of items to return per page (default: 10).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'The number of items to return per page (default: 10).'
            example: 17
        -
          in: query
          name: page
          description: 'The page number to retrieve (default: 1).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'The page number to retrieve (default: 1).'
            example: 17
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    -
                      id: 1
                      name: Technology
                      slug: technology
                      description: 'Latest tech news and updates'
                      created_at: '2023-01-01T00:00:00.000000Z'
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        name: Technology
                        slug: technology
                        description: 'Latest tech news and updates'
                        created_at: '2023-01-01T00:00:00.000000Z'
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        name:
                          type: string
                          example: Technology
                        slug:
                          type: string
                          example: technology
                        description:
                          type: string
                          example: 'Latest tech news and updates'
                        created_at:
                          type: string
                          example: '2023-01-01T00:00:00.000000Z'
                  message:
                    type: string
                    example: null
      tags:
        - Blog
      security: []
  /api/v1/tags:
    get:
      summary: 'List tags'
      operationId: listTags
      description: ''
      parameters:
        -
          in: query
          name: per_page
          description: 'The number of items to return per page (default: 10).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'The number of items to return per page (default: 10).'
            example: 17
        -
          in: query
          name: page
          description: 'The page number to retrieve (default: 1).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'The page number to retrieve (default: 1).'
            example: 17
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    -
                      id: 1
                      name: Laravel
                      slug: laravel
                      description: 'PHP Framework for web development'
                      created_at: '2023-01-01T00:00:00.000000Z'
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        name: Laravel
                        slug: laravel
                        description: 'PHP Framework for web development'
                        created_at: '2023-01-01T00:00:00.000000Z'
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        name:
                          type: string
                          example: Laravel
                        slug:
                          type: string
                          example: laravel
                        description:
                          type: string
                          example: 'PHP Framework for web development'
                        created_at:
                          type: string
                          example: '2023-01-01T00:00:00.000000Z'
                  message:
                    type: string
                    example: null
      tags:
        - Blog
      security: []
  /api/v1/posts/filters:
    get:
      summary: 'Filters posts'
      operationId: filtersPosts
      description: ''
      parameters:
        -
          in: query
          name: page
          description: 'Current page of the collection. Default: 1'
          example: 17
          required: false
          schema:
            type: integer
            description: 'Current page of the collection. Default: 1'
            example: 17
        -
          in: query
          name: per_page
          description: 'Maximum number of items to be returned in result set.Default: 10'
          example: 17
          required: false
          schema:
            type: integer
            description: 'Maximum number of items to be returned in result set.Default: 10'
            example: 17
        -
          in: query
          name: search
          description: 'Limit results to those matching a string.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit results to those matching a string.'
            example: consequatur
        -
          in: query
          name: after
          description: 'Limit response to posts published after a given ISO8601 compliant date.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit response to posts published after a given ISO8601 compliant date.'
            example: consequatur
        -
          in: query
          name: author
          description: 'Limit result set to posts assigned to specific authors.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit result set to posts assigned to specific authors.'
            example: consequatur
        -
          in: query
          name: author_exclude
          description: 'Ensure result set excludes posts assigned to specific authors.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Ensure result set excludes posts assigned to specific authors.'
            example: consequatur
        -
          in: query
          name: before
          description: 'Limit response to posts published before a given ISO8601 compliant date.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit response to posts published before a given ISO8601 compliant date.'
            example: consequatur
        -
          in: query
          name: exclude
          description: 'Ensure result set excludes specific IDs.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Ensure result set excludes specific IDs.'
            example: consequatur
        -
          in: query
          name: include
          description: 'Limit result set to specific IDs.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit result set to specific IDs.'
            example: consequatur
        -
          in: query
          name: order
          description: 'Order sort attribute ascending or descending. Default: desc .One of: asc, desc'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Order sort attribute ascending or descending. Default: desc .One of: asc, desc'
            example: consequatur
        -
          in: query
          name: order_by
          description: 'Sort collection by object attribute. Default: updated_at. One of: author, created_at, updated_at, id,  slug, title'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Sort collection by object attribute. Default: updated_at. One of: author, created_at, updated_at, id,  slug, title'
            example: consequatur
        -
          in: query
          name: categories
          description: 'Limit result set to all items that have the specified term assigned in the categories taxonomy.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit result set to all items that have the specified term assigned in the categories taxonomy.'
            example: consequatur
        -
          in: query
          name: categories_exclude
          description: 'Limit result set to all items except those that have the specified term assigned in the categories taxonomy.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit result set to all items except those that have the specified term assigned in the categories taxonomy.'
            example: consequatur
        -
          in: query
          name: tags
          description: 'Limit result set to all items that have the specified term assigned in the tags taxonomy.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit result set to all items that have the specified term assigned in the tags taxonomy.'
            example: consequatur
        -
          in: query
          name: tags_exclude
          description: 'Limit result set to all items except those that have the specified term assigned in the tags taxonomy.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit result set to all items except those that have the specified term assigned in the tags taxonomy.'
            example: consequatur
        -
          in: query
          name: featured
          description: 'Limit result set to items that are sticky.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit result set to items that are sticky.'
            example: consequatur
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Blog
      security: []
  '/api/v1/posts/{slug}':
    get:
      summary: 'Get post by slug'
      operationId: getPostBySlug
      description: ''
      parameters:
        -
          in: query
          name: slug
          description: 'Find by slug of post.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Find by slug of post.'
            example: consequatur
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Blog
      security: []
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the post.'
        example: consequatur
        required: true
        schema:
          type: string
  /api/v1/categories/filters:
    get:
      summary: 'Filters categories'
      operationId: filtersCategories
      description: ''
      parameters:
        -
          in: query
          name: page
          description: 'Current page of the collection (default: 1).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'Current page of the collection (default: 1).'
            example: 17
        -
          in: query
          name: per_page
          description: 'Maximum number of items to be returned (default: 10).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'Maximum number of items to be returned (default: 10).'
            example: 17
        -
          in: query
          name: search
          description: 'Limit results to those matching a string.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Limit results to those matching a string.'
            example: consequatur
        -
          in: query
          name: order
          description: 'Order sort attribute ascending or descending (default: desc). One of: asc, desc.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Order sort attribute ascending or descending (default: desc). One of: asc, desc.'
            example: consequatur
        -
          in: query
          name: order_by
          description: 'Sort collection by object attribute (default: created_at). One of: created_at, updated_at, id, name.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Sort collection by object attribute (default: created_at). One of: created_at, updated_at, id, name.'
            example: consequatur
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    -
                      id: 1
                      name: Technology
                      slug: technology
                      description: 'Latest tech news and updates'
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        name: Technology
                        slug: technology
                        description: 'Latest tech news and updates'
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        name:
                          type: string
                          example: Technology
                        slug:
                          type: string
                          example: technology
                        description:
                          type: string
                          example: 'Latest tech news and updates'
                  message:
                    type: string
                    example: null
      tags:
        - Blog
      security: []
  '/api/v1/categories/{slug}':
    get:
      summary: 'Get category by slug'
      operationId: getCategoryBySlug
      description: ''
      parameters:
        -
          in: query
          name: slug
          description: 'Find by slug of category.'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Find by slug of category.'
            example: consequatur
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Blog
      security: []
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the category.'
        example: consequatur
        required: true
        schema:
          type: string
  /api/v1/ecommerce/brands:
    get:
      summary: 'Get list of brands'
      operationId: getListOfBrands
      description: ''
      parameters:
        -
          in: query
          name: brands
          description: 'List of brand IDs if you need filter by brands.'
          example: null
          required: false
          schema:
            type: array
            description: 'List of brand IDs if you need filter by brands.'
            example: null
            items:
              type: string
        -
          in: query
          name: page
          description: 'Page number. Default: 1.'
          example: null
          required: false
          schema:
            type: integer
            description: 'Page number. Default: 1.'
            example: null
        -
          in: query
          name: per_page
          description: 'Number of items per page. Default: 16.'
          example: null
          required: false
          schema:
            type: integer
            description: 'Number of items per page. Default: 16.'
            example: null
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Brands
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                brands:
                  type: array
                  description: 'The <code>id</code> of an existing record in the ec_brands table.'
                  example: null
                  items:
                    type: string
                    nullable: true
                is_featured:
                  type: boolean
                  description: 'Filter by featured status.'
                  example: false
                  nullable: true
      security: []
  '/api/v1/ecommerce/brands/{slug}':
    get:
      summary: 'Get brand details by slug'
      operationId: getBrandDetailsBySlug
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Brands
      security: []
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the brand.'
        example: consequatur
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/brands/{id}/products':
    get:
      summary: 'Get products by brand'
      operationId: getProductsByBrand
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Brands
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the brand.'
        example: 1
        required: true
        schema:
          type: integer
  /api/v1/ecommerce/cart:
    post:
      summary: 'Add product to cart'
      operationId: addProductToCart
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Cart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: integer
                  description: 'ID of the product.'
                  example: 1
                qty:
                  type: integer
                  description: 'Quantity of the product. Default: 1.'
                  example: 1
              required:
                - product_id
                - qty
      security: []
  '/api/v1/ecommerce/cart/{id}':
    post:
      summary: 'Add product to cart'
      operationId: addProductToCart
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Cart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: integer
                  description: 'ID of the product.'
                  example: 1
                qty:
                  type: integer
                  description: 'Quantity of the product. Default: 1.'
                  example: 1
              required:
                - product_id
                - qty
      security: []
    put:
      summary: 'Update quantity of a product in cart'
      operationId: updateQuantityOfAProductInCart
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Cart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: integer
                  description: 'ID of the product.'
                  example: 1
                qty:
                  type: integer
                  description: 'Quantity of the product.'
                  example: 1
              required:
                - product_id
                - qty
      security: []
    delete:
      summary: 'Remove a cart item by its ID.'
      operationId: removeACartItemByItsID
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Cart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: string
                  description: 'The ID of the product to remove from the cart. The <code>id</code> of an existing record in the ec_products table.'
                  example: 1
              required:
                - product_id
      security: []
    get:
      summary: 'Get a cart item by id.'
      operationId: getACartItemById
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Cart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                customer_id:
                  type: integer
                  description: 'is ID of the customer.'
                  example: 1
                id:
                  type: string
                  description: 'ID of the cart item.'
                  example: e70c6c88dae8344b03e39bb147eba66a
              required:
                - id
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the cart.'
        example: consequatur
        required: true
        schema:
          type: string
  /api/v1/ecommerce/cart/refresh:
    post:
      summary: 'Refresh cart items'
      operationId: refreshCartItems
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Cart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                products:
                  type: array
                  description: 'List of products with product_id and quantity.'
                  example:
                    - consequatur
                  items:
                    type: string
              required:
                - products
      security: []
  /api/v1/ecommerce/checkout/taxes/calculate:
    post:
      summary: 'Calculate tax for products in cart'
      operationId: calculateTaxForProductsInCart
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  items:
                    -
                      product_id: 1
                      price: 100
                      price_formatted: $100.00
                      quantity: 2
                      tax_rate: 10
                      tax_amount: 20
                      tax_amount_formatted: $20.00
                      subtotal: 200
                      subtotal_formatted: $200.00
                      total: 220
                      total_formatted: $220.00
                  totals:
                    sub_total: 200
                    sub_total_formatted: $200.00
                    tax_amount: 20
                    tax_amount_formatted: $20.00
                    total: 220
                    total_formatted: $220.00
                properties:
                  items:
                    type: array
                    example:
                      -
                        product_id: 1
                        price: 100
                        price_formatted: $100.00
                        quantity: 2
                        tax_rate: 10
                        tax_amount: 20
                        tax_amount_formatted: $20.00
                        subtotal: 200
                        subtotal_formatted: $200.00
                        total: 220
                        total_formatted: $220.00
                    items:
                      type: object
                      properties:
                        product_id:
                          type: integer
                          example: 1
                        price:
                          type: integer
                          example: 100
                        price_formatted:
                          type: string
                          example: $100.00
                        quantity:
                          type: integer
                          example: 2
                        tax_rate:
                          type: integer
                          example: 10
                        tax_amount:
                          type: integer
                          example: 20
                        tax_amount_formatted:
                          type: string
                          example: $20.00
                        subtotal:
                          type: integer
                          example: 200
                        subtotal_formatted:
                          type: string
                          example: $200.00
                        total:
                          type: integer
                          example: 220
                        total_formatted:
                          type: string
                          example: $220.00
                  totals:
                    type: object
                    properties:
                      sub_total:
                        type: integer
                        example: 200
                      sub_total_formatted:
                        type: string
                        example: $200.00
                      tax_amount:
                        type: integer
                        example: 20
                      tax_amount_formatted:
                        type: string
                        example: $20.00
                      total:
                        type: integer
                        example: 220
                      total_formatted:
                        type: string
                        example: $220.00
      tags:
        - Cart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                products:
                  type: array
                  description: 'List of products with id and quantity.'
                  example:
                    - consequatur
                  items:
                    type: string
                country:
                  type: string
                  description: 'Country code.'
                  example: US
                  nullable: true
                state:
                  type: string
                  description: 'State code.'
                  example: CA
                  nullable: true
                city:
                  type: string
                  description: 'City name.'
                  example: 'Los Angeles'
                  nullable: true
                zip_code:
                  type: string
                  description: 'ZIP code.'
                  example: '90001'
                  nullable: true
              required:
                - products
      security: []
  '/api/v1/ecommerce/checkout/cart/{id}':
    get:
      summary: "Process Checkout\n\nProcess the checkout for a specific cart ID. This endpoint restores the cart, generates an order token,\nand redirects the user to the checkout page."
      operationId: processCheckoutProcessTheCheckoutForASpecificCartIDThisEndpointRestoresTheCartGeneratesAnOrderTokenAndRedirectsTheUserToTheCheckoutPage
      description: ''
      parameters: []
      responses:
        302:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example: {  }
                properties: {  }
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Cart not found.'
                properties:
                  message:
                    type: string
                    example: 'Cart not found.'
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Checkout
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the cart to process.'
        example: '12345'
        required: true
        schema:
          type: string
  /api/v1/ecommerce/compare:
    post:
      summary: 'Add product to compare'
      operationId: addProductToCompare
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Compare
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: integer
                  description: 'ID of the product.'
                  example: 1
              required:
                - product_id
      security: []
  '/api/v1/ecommerce/compare/{id}':
    post:
      summary: 'Add product to compare'
      operationId: addProductToCompare
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Compare
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: integer
                  description: 'ID of the product.'
                  example: 1
              required:
                - product_id
      security: []
    delete:
      summary: 'Remove a product from compare list'
      operationId: removeAProductFromCompareList
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Compare
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: string
                  description: 'The ID of the product to remove from the compare list. The <code>id</code> of an existing record in the ec_products table.'
                  example: 1
              required:
                - product_id
      security: []
    get:
      summary: 'Get compare items'
      operationId: getCompareItems
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Compare
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: 'ID of the compare list.'
                  example: e70c6c88dae8344b03e39bb147eba66a
              required:
                - id
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the compare.'
        example: consequatur
        required: true
        schema:
          type: string
  /api/v1/contacts:
    post:
      summary: 'Store a new contact message'
      operationId: storeANewContactMessage
      description: 'Rate limit: 5 requests per minute per IP address'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data: null
                  message: 'We received your message and will contact you soon!'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: 'We received your message and will contact you soon!'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'The given data was invalid.'
                  errors:
                    name:
                      - 'The name field is required.'
                    email:
                      - 'The email field is required.'
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      name:
                        type: array
                        example:
                          - 'The name field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required.'
                        items:
                          type: string
        429:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Too Many Attempts.'
                properties:
                  message:
                    type: string
                    example: 'Too Many Attempts.'
      tags:
        - Contact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: "The sender's name."
                  example: 'John Doe'
                email:
                  type: string
                  description: "The sender's email."
                  example: john@example.com
                content:
                  type: string
                  description: 'The message content.'
                  example: 'I would like to know more about your services.'
                phone:
                  type: string
                  description: "The sender's phone number."
                  example: '+1234567890'
                  nullable: true
                address:
                  type: string
                  description: "The sender's address."
                  example: '123 Main St'
                  nullable: true
                subject:
                  type: string
                  description: 'The subject of the message.'
                  example: 'General Inquiry'
                  nullable: true
                agree_terms_and_policy:
                  type: boolean
                  description: 'Accept terms and policy.'
                  example: true
                contact_custom_fields:
                  type: array
                  description: 'Custom field values.'
                  example:
                    - consequatur
                  items:
                    type: string
              required:
                - name
                - email
                - content
      security: []
  /api/v1/ecommerce/coupons:
    get:
      summary: 'Get all available coupons'
      operationId: getAllAvailableCoupons
      description: ''
      parameters:
        -
          in: query
          name: coupon_ids
          description: 'Optional comma-separated list of coupon IDs to filter by.'
          example: '1,2,3'
          required: false
          schema:
            type: string
            description: 'Optional comma-separated list of coupon IDs to filter by.'
            example: '1,2,3'
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Coupons
      security: []
  /api/v1/ecommerce/coupon/apply:
    post:
      summary: 'Apply coupon code'
      operationId: applyCouponCode
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Coupons
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                coupon_code:
                  type: string
                  description: 'The coupon code.'
                  example: DISCOUNT20
                cart_id:
                  type: string
                  description: 'ID of the cart to apply coupon to.'
                  example: e70c6c88dae8344b03e39bb147eba66a
              required:
                - coupon_code
                - cart_id
      security: []
  /api/v1/ecommerce/coupon/remove:
    post:
      summary: 'Remove coupon code'
      operationId: removeCouponCode
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Coupons
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                cart_id:
                  type: string
                  description: 'ID of the cart to remove coupon from.'
                  example: e70c6c88dae8344b03e39bb147eba66a
      security: []
  /api/v1/ecommerce/currencies:
    get:
      summary: 'Get list of available currencies'
      operationId: getListOfAvailableCurrencies
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    -
                      id: 1
                      title: USD
                      symbol: $
                      is_prefix_symbol: true
                      decimals: 2
                      order: 0
                      is_default: true
                      exchange_rate: 1
                    -
                      id: 2
                      title: EUR
                      symbol: €
                      is_prefix_symbol: false
                      decimals: 2
                      order: 1
                      is_default: false
                      exchange_rate: 0.91
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        title: USD
                        symbol: $
                        is_prefix_symbol: true
                        decimals: 2
                        order: 0
                        is_default: true
                        exchange_rate: 1
                      -
                        id: 2
                        title: EUR
                        symbol: €
                        is_prefix_symbol: false
                        decimals: 2
                        order: 1
                        is_default: false
                        exchange_rate: 0.91
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        title:
                          type: string
                          example: USD
                        symbol:
                          type: string
                          example: $
                        is_prefix_symbol:
                          type: boolean
                          example: true
                        decimals:
                          type: integer
                          example: 2
                        order:
                          type: integer
                          example: 0
                        is_default:
                          type: boolean
                          example: true
                        exchange_rate:
                          type: integer
                          example: 1
                  message:
                    type: string
                    example: null
      tags:
        - Currencies
      security: []
  /api/v1/ecommerce/currencies/current:
    get:
      summary: 'Get current currency'
      operationId: getCurrentCurrency
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    id: 1
                    title: USD
                    symbol: $
                    is_prefix_symbol: true
                    decimals: 2
                    order: 0
                    is_default: true
                    exchange_rate: 1
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      title:
                        type: string
                        example: USD
                      symbol:
                        type: string
                        example: $
                      is_prefix_symbol:
                        type: boolean
                        example: true
                      decimals:
                        type: integer
                        example: 2
                      order:
                        type: integer
                        example: 0
                      is_default:
                        type: boolean
                        example: true
                      exchange_rate:
                        type: integer
                        example: 1
                  message:
                    type: string
                    example: null
      tags:
        - Currencies
      security: []
  /api/v1/device-tokens:
    post:
      summary: 'Register or update device token'
      operationId: registerOrUpdateDeviceToken
      description: 'Register a new device token or update an existing one for push notifications.'
      parameters: []
      responses: {  }
      tags:
        - 'Device Tokens'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  description: 'The FCM device token.'
                  example: consequatur
                platform:
                  type: string
                  description: 'The device platform (android, ios).'
                  example: consequatur
                  nullable: true
                app_version:
                  type: string
                  description: 'The app version.'
                  example: consequatur
                  nullable: true
                device_id:
                  type: string
                  description: 'The unique device identifier.'
                  example: consequatur
                  nullable: true
                user_type:
                  type: string
                  description: 'The user type (customer, admin).'
                  example: consequatur
                  nullable: true
                user_id:
                  type: integer
                  description: 'The user ID.'
                  example: 17
                  nullable: true
              required:
                - token
      security: []
    get:
      summary: "Get user's device tokens"
      operationId: getUsersDeviceTokens
      description: 'Retrieve all device tokens for the authenticated user.'
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Device Tokens'
      security: []
  '/api/v1/device-tokens/{id}':
    put:
      summary: 'Update device token'
      operationId: updateDeviceToken
      description: 'Update an existing device token.'
      parameters: []
      responses: {  }
      tags:
        - 'Device Tokens'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                platform:
                  type: string
                  description: 'The device platform (android, ios).'
                  example: consequatur
                app_version:
                  type: string
                  description: 'The app version.'
                  example: consequatur
                device_id:
                  type: string
                  description: 'The unique device identifier.'
                  example: consequatur
      security: []
    delete:
      summary: 'Delete device token'
      operationId: deleteDeviceToken
      description: 'Delete a device token to stop receiving push notifications.'
      parameters: []
      responses: {  }
      tags:
        - 'Device Tokens'
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the device token.'
        example: '1562'
        required: true
        schema:
          type: string
  /api/v1/device-tokens/by-token:
    delete:
      summary: 'Delete device token by token value'
      operationId: deleteDeviceTokenByTokenValue
      description: 'Delete a device token using the token value.'
      parameters: []
      responses: {  }
      tags:
        - 'Device Tokens'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  description: 'The FCM device token to delete.'
                  example: consequatur
              required:
                - token
      security: []
  '/api/v1/device-tokens/{id}/deactivate':
    post:
      summary: 'Deactivate device token'
      operationId: deactivateDeviceToken
      description: 'Deactivate a device token without deleting it.'
      parameters: []
      responses: {  }
      tags:
        - 'Device Tokens'
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the device token.'
        example: '1562'
        required: true
        schema:
          type: string
  /api/v1/ecommerce/downloads:
    get:
      summary: 'Get list of digital products available for download'
      operationId: getListOfDigitalProductsAvailableForDownload
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Downloads
  '/api/v1/ecommerce/downloads/{id}':
    get:
      summary: 'Download a digital product'
      operationId: downloadADigitalProduct
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Downloads
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the download.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/download/{token}/{order_id}':
    get:
      summary: 'Download a file using a token'
      operationId: downloadAFileUsingAToken
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: token
        description: ''
        example: consequatur
        required: true
        schema:
          type: string
      -
        in: path
        name: order_id
        description: 'The ID of the order.'
        example: consequatur
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/orders/download-proof/{token}/{order_id}':
    get:
      summary: 'Download a proof file using a token'
      operationId: downloadAProofFileUsingAToken
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: token
        description: ''
        example: consequatur
        required: true
        schema:
          type: string
      -
        in: path
        name: order_id
        description: 'The ID of the order.'
        example: consequatur
        required: true
        schema:
          type: string
  /api/v1/ecommerce/filters:
    get:
      summary: 'Get filter data for products'
      operationId: getFilterDataForProducts
      description: ''
      parameters:
        -
          in: query
          name: category
          description: 'Category ID to get filter data for a specific category.'
          example: null
          required: false
          schema:
            type: integer
            description: 'Category ID to get filter data for a specific category.'
            example: null
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Filters
      security: []
  /api/v1/ecommerce/flash-sales:
    get:
      summary: 'Get flash sales'
      operationId: getFlashSales
      description: ''
      parameters:
        -
          in: query
          name: keys
          description: 'Array of flash sale keys to filter by.'
          example: null
          required: false
          schema:
            type: array
            description: 'Array of flash sale keys to filter by.'
            example: null
            items:
              type: string
        -
          in: query
          name: thumbnail_size
          description: 'Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb'
            example: consequatur
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - 'Flash Sale'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                keys:
                  type: array
                  description: 'Array of flash sale keys to filter by.'
                  example: null
                  items:
                    type: string
      security: []
  /api/v1/languages:
    get:
      summary: 'Get list of available languages'
      operationId: getListOfAvailableLanguages
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    -
                      lang_id: 1
                      lang_name: English
                      lang_locale: en
                      lang_code: en_US
                      lang_flag: '<svg ...>'
                      lang_is_default: true
                      lang_is_rtl: false
                      lang_order: 0
                    -
                      lang_id: 2
                      lang_name: Vietnamese
                      lang_locale: vi
                      lang_code: vi
                      lang_flag: '<svg ...>'
                      lang_is_default: false
                      lang_is_rtl: false
                      lang_order: 1
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: array
                    example:
                      -
                        lang_id: 1
                        lang_name: English
                        lang_locale: en
                        lang_code: en_US
                        lang_flag: '<svg ...>'
                        lang_is_default: true
                        lang_is_rtl: false
                        lang_order: 0
                      -
                        lang_id: 2
                        lang_name: Vietnamese
                        lang_locale: vi
                        lang_code: vi
                        lang_flag: '<svg ...>'
                        lang_is_default: false
                        lang_is_rtl: false
                        lang_order: 1
                    items:
                      type: object
                      properties:
                        lang_id:
                          type: integer
                          example: 1
                        lang_name:
                          type: string
                          example: English
                        lang_locale:
                          type: string
                          example: en
                        lang_code:
                          type: string
                          example: en_US
                        lang_flag:
                          type: string
                          example: '<svg ...>'
                        lang_is_default:
                          type: boolean
                          example: true
                        lang_is_rtl:
                          type: boolean
                          example: false
                        lang_order:
                          type: integer
                          example: 0
                  message:
                    type: string
                    example: null
      tags:
        - Languages
      security: []
  /api/v1/languages/current:
    get:
      summary: 'Get current language'
      operationId: getCurrentLanguage
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    lang_id: 1
                    lang_name: English
                    lang_locale: en
                    lang_code: en_US
                    lang_flag: us
                    lang_is_default: true
                    lang_is_rtl: false
                    lang_order: 0
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      lang_id:
                        type: integer
                        example: 1
                      lang_name:
                        type: string
                        example: English
                      lang_locale:
                        type: string
                        example: en
                      lang_code:
                        type: string
                        example: en_US
                      lang_flag:
                        type: string
                        example: us
                      lang_is_default:
                        type: boolean
                        example: true
                      lang_is_rtl:
                        type: boolean
                        example: false
                      lang_order:
                        type: integer
                        example: 0
                  message:
                    type: string
                    example: null
      tags:
        - Languages
      security: []
  /api/v1/notifications:
    get:
      summary: 'Get user notifications'
      operationId: getUserNotifications
      description: 'Retrieve notifications for the authenticated user.'
      parameters:
        -
          in: query
          name: page
          description: 'Page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'Page number for pagination.'
            example: 1
        -
          in: query
          name: per_page
          description: 'Number of notifications per page (max 50).'
          example: 20
          required: false
          schema:
            type: integer
            description: 'Number of notifications per page (max 50).'
            example: 20
        -
          in: query
          name: unread_only
          description: 'Filter to show only unread notifications.'
          example: false
          required: false
          schema:
            type: boolean
            description: 'Filter to show only unread notifications.'
            example: false
        -
          in: query
          name: type
          description: 'Filter by notification type.'
          example: general
          required: false
          schema:
            type: string
            description: 'Filter by notification type.'
            example: general
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Notifications
      security: []
  /api/v1/notifications/stats:
    get:
      summary: 'Get notification statistics'
      operationId: getNotificationStatistics
      description: 'Get notification statistics for the authenticated user.'
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Notifications
      security: []
  /api/v1/notifications/mark-all-read:
    post:
      summary: 'Mark all notifications as read'
      operationId: markAllNotificationsAsRead
      description: 'Mark all notifications as read for the authenticated user.'
      parameters: []
      responses: {  }
      tags:
        - Notifications
      security: []
  '/api/v1/notifications/{id}/read':
    post:
      summary: 'Mark notification as read'
      operationId: markNotificationAsRead
      description: 'Mark a specific notification as read for the authenticated user.'
      parameters: []
      responses: {  }
      tags:
        - Notifications
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the notification.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/notifications/{id}/clicked':
    post:
      summary: 'Mark notification as clicked'
      operationId: markNotificationAsClicked
      description: 'Mark a notification as clicked when user taps on it.'
      parameters: []
      responses: {  }
      tags:
        - Notifications
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the notification.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/notifications/{id}':
    delete:
      summary: 'Delete notification'
      operationId: deleteNotification
      description: "Delete a notification from user's list."
      parameters: []
      responses: {  }
      tags:
        - Notifications
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the notification.'
        example: '1562'
        required: true
        schema:
          type: string
  /api/v1/ecommerce/order-returns:
    get:
      summary: 'Get list of order return requests for the current user'
      operationId: getListOfOrderReturnRequestsForTheCurrentUser
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Order Returns'
    post:
      summary: 'Submit a new order return request'
      operationId: submitANewOrderReturnRequest
      description: ''
      parameters: []
      responses: {  }
      tags:
        - 'Order Returns'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                order_id:
                  type: integer
                  description: 'The ID of the order to return.'
                  example: 1
                return_items:
                  type: array
                  description: 'The items to return with order_item_id, is_return, and qty.'
                  example:
                    - consequatur
                  items:
                    type: string
                reason:
                  type: string
                  description: 'The reason for the return.'
                  example: DAMAGED_PRODUCT
              required:
                - order_id
                - return_items
                - reason
  '/api/v1/ecommerce/order-returns/{id}':
    get:
      summary: 'Get detail of an order return request'
      operationId: getDetailOfAnOrderReturnRequest
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Order Returns'
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the order return.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/orders/{order_id}/returns':
    get:
      summary: 'Get order information for return request'
      operationId: getOrderInformationForReturnRequest
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - 'Order Returns'
    parameters:
      -
        in: path
        name: order_id
        description: 'The ID of the order.'
        example: '1562'
        required: true
        schema:
          type: string
  /api/v1/ecommerce/orders:
    get:
      summary: 'Get list of orders by customer'
      operationId: getListOfOrdersByCustomer
      description: ''
      parameters:
        -
          in: query
          name: status
          description: 'Filter orders by status (pending, processing, completed, canceled).'
          example: completed
          required: false
          schema:
            type: string
            description: 'Filter orders by status (pending, processing, completed, canceled).'
            example: completed
        -
          in: query
          name: shipping_status
          description: 'Filter orders by shipping status (not_shipped, delivering, delivered, canceled).'
          example: delivered
          required: false
          schema:
            type: string
            description: 'Filter orders by shipping status (not_shipped, delivering, delivered, canceled).'
            example: delivered
        -
          in: query
          name: payment_status
          description: 'Filter orders by payment status (pending, completed, refunding, refunded, canceled).'
          example: completed
          required: false
          schema:
            type: string
            description: 'Filter orders by payment status (pending, completed, refunding, refunded, canceled).'
            example: completed
        -
          in: query
          name: per_page
          description: 'Number of orders per page.'
          example: 10
          required: false
          schema:
            type: integer
            description: 'Number of orders per page.'
            example: 10
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Orders
  '/api/v1/ecommerce/orders/{id}':
    get:
      summary: 'Get order detail'
      operationId: getOrderDetail
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Orders
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the order.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/orders/{id}/cancel':
    post:
      summary: 'Cancel an order'
      operationId: cancelAnOrder
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                cancellation_reason:
                  type: string
                  description: 'The reason for cancellation.'
                  example: OTHER
                cancellation_reason_description:
                  type: string
                  description: 'The description of the cancellation reason (required if cancellation_reason is OTHER).'
                  example: 'I found a better deal elsewhere'
                  nullable: true
              required:
                - cancellation_reason
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the order.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/orders/{id}/invoice':
    get:
      summary: 'Print an order invoice'
      operationId: printAnOrderInvoice
      description: ''
      parameters:
        -
          in: query
          name: type
          description: 'Type of response (print or download).'
          example: download
          required: false
          schema:
            type: string
            description: 'Type of response (print or download).'
            example: download
        -
          in: query
          name: format
          description: "Response format (url or pdf). Use 'pdf' for direct PDF content, 'url' for URL response. Default: url"
          example: consequatur
          required: false
          schema:
            type: string
            description: "Response format (url or pdf). Use 'pdf' for direct PDF content, 'url' for URL response. Default: url"
            example: consequatur
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Orders
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the order.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/orders/{id}/upload-proof':
    post:
      summary: 'Upload payment proof for an order'
      operationId: uploadPaymentProofForAnOrder
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Orders
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: 'The payment proof file (jpeg, jpg, png, pdf, max 2MB).'
              required:
                - file
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the order.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/orders/{id}/download-proof':
    get:
      summary: 'Download payment proof for an order'
      operationId: downloadPaymentProofForAnOrder
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Orders
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the order.'
        example: '1562'
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/orders/{id}/confirm-delivery':
    post:
      summary: 'Confirm delivery of an order'
      operationId: confirmDeliveryOfAnOrder
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Orders
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the order.'
        example: '1562'
        required: true
        schema:
          type: string
  /api/v1/ecommerce/orders/tracking:
    post:
      summary: 'Track an order'
      operationId: trackAnOrder
      description: 'Track an order by order code and email/phone'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  message: 'Order found successfully'
                  data:
                    order:
                      id: 1
                      code: ORD-12345
                      status: completed
                      amount: 100.0
                      shipping_amount: 10.0
                      payment_fee: 5.0
                      tax_amount: 5.0
                      sub_total: 90.0
                      discount_amount: 0.0
                      payment_id: 1
                      user_id: 1
                      created_at: '2023-08-10T12:34:56.000000Z'
                      updated_at: '2023-08-10T12:34:56.000000Z'
                      address:
                        id: 1
                        name: 'John Doe'
                        email: customer@example.com
                        phone: '+1234567890'
                        address: '123 Main St'
                        city: 'New York'
                        state: NY
                        country: US
                        zip_code: '10001'
                      products:
                        -
                          id: 1
                          name: 'Product 1'
                          price: 90.0
                          qty: 1
                      histories:
                        -
                          id: 1
                          action: create_order
                          description: 'Order was created'
                          created_at: '2023-08-10T12:34:56.000000Z'
                      shipment:
                        id: 1
                        status: delivered
                        tracking_id: SHIP-12345
                        tracking_link: 'https://example.com/tracking/SHIP-12345'
                      payment:
                        id: 1
                        status: completed
                        payment_channel: stripe
                        amount: 100.0
                properties:
                  error:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Order found successfully'
                  data:
                    type: object
                    properties:
                      order:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 1
                          code:
                            type: string
                            example: ORD-12345
                          status:
                            type: string
                            example: completed
                          amount:
                            type: number
                            example: 100.0
                          shipping_amount:
                            type: number
                            example: 10.0
                          payment_fee:
                            type: number
                            example: 5.0
                          tax_amount:
                            type: number
                            example: 5.0
                          sub_total:
                            type: number
                            example: 90.0
                          discount_amount:
                            type: number
                            example: 0.0
                          payment_id:
                            type: integer
                            example: 1
                          user_id:
                            type: integer
                            example: 1
                          created_at:
                            type: string
                            example: '2023-08-10T12:34:56.000000Z'
                          updated_at:
                            type: string
                            example: '2023-08-10T12:34:56.000000Z'
                          address:
                            type: object
                            properties:
                              id:
                                type: integer
                                example: 1
                              name:
                                type: string
                                example: 'John Doe'
                              email:
                                type: string
                                example: customer@example.com
                              phone:
                                type: string
                                example: '+1234567890'
                              address:
                                type: string
                                example: '123 Main St'
                              city:
                                type: string
                                example: 'New York'
                              state:
                                type: string
                                example: NY
                              country:
                                type: string
                                example: US
                              zip_code:
                                type: string
                                example: '10001'
                          products:
                            type: array
                            example:
                              -
                                id: 1
                                name: 'Product 1'
                                price: 90
                                qty: 1
                            items:
                              type: object
                              properties:
                                id:
                                  type: integer
                                  example: 1
                                name:
                                  type: string
                                  example: 'Product 1'
                                price:
                                  type: number
                                  example: 90.0
                                qty:
                                  type: integer
                                  example: 1
                          histories:
                            type: array
                            example:
                              -
                                id: 1
                                action: create_order
                                description: 'Order was created'
                                created_at: '2023-08-10T12:34:56.000000Z'
                            items:
                              type: object
                              properties:
                                id:
                                  type: integer
                                  example: 1
                                action:
                                  type: string
                                  example: create_order
                                description:
                                  type: string
                                  example: 'Order was created'
                                created_at:
                                  type: string
                                  example: '2023-08-10T12:34:56.000000Z'
                          shipment:
                            type: object
                            properties:
                              id:
                                type: integer
                                example: 1
                              status:
                                type: string
                                example: delivered
                              tracking_id:
                                type: string
                                example: SHIP-12345
                              tracking_link:
                                type: string
                                example: 'https://example.com/tracking/SHIP-12345'
                          payment:
                            type: object
                            properties:
                              id:
                                type: integer
                                example: 1
                              status:
                                type: string
                                example: completed
                              payment_channel:
                                type: string
                                example: stripe
                              amount:
                                type: number
                                example: 100.0
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'Order not found'
                  code: 404
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Order not found'
                  code:
                    type: integer
                    example: 404
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: 'The order code.'
                  example: ORD-12345
                email:
                  type: string
                  description: 'if phone not provided The email associated with the order.'
                  example: customer@example.com
                phone:
                  type: string
                  description: 'if email not provided The phone number associated with the order.'
                  example: '+1234567890'
              required:
                - code
                - email
                - phone
      security: []
  /api/v1/pages:
    get:
      summary: 'List pages'
      operationId: listPages
      description: ''
      parameters:
        -
          in: query
          name: per_page
          description: 'The number of items to return per page (default: 10).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'The number of items to return per page (default: 10).'
            example: 17
        -
          in: query
          name: page
          description: 'The page number to retrieve (default: 1).'
          example: 17
          required: false
          schema:
            type: integer
            description: 'The page number to retrieve (default: 1).'
            example: 17
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    -
                      id: 1
                      title: 'About Us'
                      slug: about-us
                      content: 'This is the about us page content...'
                      published_at: '2023-01-01T00:00:00.000000Z'
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        title: 'About Us'
                        slug: about-us
                        content: 'This is the about us page content...'
                        published_at: '2023-01-01T00:00:00.000000Z'
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        title:
                          type: string
                          example: 'About Us'
                        slug:
                          type: string
                          example: about-us
                        content:
                          type: string
                          example: 'This is the about us page content...'
                        published_at:
                          type: string
                          example: '2023-01-01T00:00:00.000000Z'
                  message:
                    type: string
                    example: null
      tags:
        - Page
      security: []
  '/api/v1/pages/{id}':
    get:
      summary: 'Get page by ID'
      operationId: getPageByID
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    id: 1
                    title: 'About Us'
                    slug: about-us
                    content: 'This is the about us page content...'
                    published_at: '2023-01-01T00:00:00.000000Z'
                  message: null
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 1
                      title:
                        type: string
                        example: 'About Us'
                      slug:
                        type: string
                        example: about-us
                      content:
                        type: string
                        example: 'This is the about us page content...'
                      published_at:
                        type: string
                        example: '2023-01-01T00:00:00.000000Z'
                  message:
                    type: string
                    example: null
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'Not found'
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Not found'
      tags:
        - Page
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the page to retrieve.'
        example: 17
        required: true
        schema:
          type: integer
  /api/v1/ecommerce/product-categories:
    get:
      summary: 'Get list of product categories'
      operationId: getListOfProductCategories
      description: ''
      parameters:
        -
          in: query
          name: categories
          description: 'nullable array List of category IDs if you need filter by categories, (e.g. [1,2,3]).'
          example: null
          required: false
          schema:
            type: string
            description: 'nullable array List of category IDs if you need filter by categories, (e.g. [1,2,3]).'
            example: null
        -
          in: query
          name: page
          description: 'Page number. Default: 1.'
          example: null
          required: false
          schema:
            type: integer
            description: 'Page number. Default: 1.'
            example: null
        -
          in: query
          name: per_page
          description: 'Number of items per page. Default: 16.'
          example: null
          required: false
          schema:
            type: integer
            description: 'Number of items per page. Default: 16.'
            example: null
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - 'Product Categories'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                categories:
                  type: array
                  description: 'The <code>id</code> of an existing record in the ec_product_categories table.'
                  example: null
                  items:
                    type: string
                    nullable: true
                is_featured:
                  type: boolean
                  description: 'Filter by featured status.'
                  example: false
                  nullable: true
      security: []
  '/api/v1/ecommerce/product-categories/{slug}':
    get:
      summary: 'Get product category details by slug'
      operationId: getProductCategoryDetailsBySlug
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - 'Product Categories'
      security: []
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the product category.'
        example: consequatur
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/product-categories/{id}/products':
    get:
      summary: 'Get products by category'
      operationId: getProductsByCategory
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - 'Product Categories'
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the product category.'
        example: '1562'
        required: true
        schema:
          type: string
  /api/v1/ecommerce/products:
    get:
      summary: 'Get list of products'
      operationId: getListOfProducts
      description: ''
      parameters:
        -
          in: query
          name: categories
          description: 'Filter by category IDs.'
          example: null
          required: false
          schema:
            type: array
            description: 'Filter by category IDs.'
            example: null
            items:
              type: string
        -
          in: query
          name: brands
          description: 'Filter by brand IDs.'
          example: null
          required: false
          schema:
            type: array
            description: 'Filter by brand IDs.'
            example: null
            items:
              type: string
        -
          in: query
          name: collections
          description: 'Filter by collection IDs.'
          example: null
          required: false
          schema:
            type: array
            description: 'Filter by collection IDs.'
            example: null
            items:
              type: string
        -
          in: query
          name: q
          description: 'Search term.'
          example: null
          required: false
          schema:
            type: string
            description: 'Search term.'
            example: null
        -
          in: query
          name: sort_by
          description: 'Sort field. Value: default_sorting, date_asc, date_desc, price_asc, price_desc, name_asc, name_desc, rating_asc, rating_desc'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Sort field. Value: default_sorting, date_asc, date_desc, price_asc, price_desc, name_asc, name_desc, rating_asc, rating_desc'
            example: consequatur
        -
          in: query
          name: page
          description: 'The current page.'
          example: null
          required: false
          schema:
            type: integer
            description: 'The current page.'
            example: null
        -
          in: query
          name: per_page
          description: 'Number of items per page.'
          example: null
          required: false
          schema:
            type: integer
            description: 'Number of items per page.'
            example: null
        -
          in: query
          name: discounted_only
          description: 'Filter by discounted only.'
          example: null
          required: false
          schema:
            type: boolean
            description: 'Filter by discounted only.'
            example: null
        -
          in: query
          name: min_price
          description: 'Minimum price.'
          example: null
          required: false
          schema:
            type: integer
            description: 'Minimum price.'
            example: null
        -
          in: query
          name: max_price
          description: 'Maximum price.'
          example: null
          required: false
          schema:
            type: integer
            description: 'Maximum price.'
            example: null
        -
          in: query
          name: price_ranges
          description: 'Price ranges as JSON string.'
          example: '[{"from":10,"to":20},{"from":30,"to":40}]'
          required: false
          schema:
            type: string
            description: 'Price ranges as JSON string.'
            example: '[{"from":10,"to":20},{"from":30,"to":40}]'
        -
          in: query
          name: attributes
          description: 'Attributes as JSON string.'
          example: '[{"id":1,"value":1},{"id":2,"value":2}]'
          required: false
          schema:
            type: string
            description: 'Attributes as JSON string.'
            example: '[{"id":1,"value":1},{"id":2,"value":2}]'
        -
          in: query
          name: thumbnail_size
          description: 'Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb'
            example: consequatur
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Products
      security: []
  '/api/v1/ecommerce/products/{slug}':
    get:
      summary: 'Get product details by slug'
      operationId: getProductDetailsBySlug
      description: ''
      parameters:
        -
          in: query
          name: thumbnail_size
          description: 'Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb'
          example: consequatur
          required: false
          schema:
            type: string
            description: 'Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb'
            example: consequatur
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Products
      security: []
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the product.'
        example: consequatur
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/products/{slug}/related':
    get:
      summary: 'Get related products'
      operationId: getRelatedProducts
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Products
      security: []
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the product.'
        example: consequatur
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/products/{slug}/cross-sale':
    get:
      summary: 'Get cross-sale products for a product'
      operationId: getCrossSaleProductsForAProduct
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Products
      security: []
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the product.'
        example: consequatur
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/products/{slug}/reviews':
    get:
      summary: "Get product's reviews"
      operationId: getProductsReviews
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Products
      security: []
    parameters:
      -
        in: path
        name: slug
        description: 'The slug of the product.'
        example: consequatur
        required: true
        schema:
          type: string
  '/api/v1/ecommerce/product-variation/{id}':
    get:
      summary: 'Get product variation by attributes'
      operationId: getProductVariationByAttributes
      description: ''
      parameters:
        -
          in: query
          name: attributes
          description: 'Array of attribute IDs.'
          example: null
          required: false
          schema:
            type: array
            description: 'Array of attribute IDs.'
            example: null
            items:
              type: string
        -
          in: query
          name: reference_product
          description: 'Reference product slug.'
          example: null
          required: false
          schema:
            type: string
            description: 'Reference product slug.'
            example: null
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Products
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                reference_product:
                  type: string
                  description: ''
                  example: consequatur
                attributes:
                  type: array
                  description: ''
                  example:
                    - consequatur
                  items:
                    type: string
              required:
                - attributes
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the product variation.'
        example: '1562'
        required: true
        schema:
          type: string
  /api/v1/me:
    get:
      summary: 'Get the user profile information.'
      operationId: getTheUserProfileInformation
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Profile
    put:
      summary: 'Update profile'
      operationId: updateProfile
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Profile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  description: 'This field is required when <code>name</code> is not present. Must not be greater than 120 characters. Must be at least 2 characters.'
                  example: vmqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjur
                  nullable: true
                last_name:
                  type: string
                  description: 'This field is required when <code>name</code> is not present. Must not be greater than 120 characters. Must be at least 2 characters.'
                  example: yvojcybzvrbyickznkygloigmkwxphlvazjrcnfbaqywuxhgjjmzuxjubqouzswiwxtrkimfca
                  nullable: true
                name:
                  type: string
                  description: Name.
                  example: consequatur
                  nullable: true
                phone:
                  type: string
                  description: Phone.
                  example: consequatur
                  nullable: true
                dob:
                  type: date
                  description: 'nullable Date of birth (format: Y-m-d).'
                  example: consequatur
                  nullable: true
                gender:
                  type: string
                  description: 'Gender (male, female, other).'
                  example: consequatur
                  nullable: true
                description:
                  type: string
                  description: Description
                  example: 'Dolores dolorum amet iste laborum eius est dolor.'
                  nullable: true
                email:
                  type: string
                  description: Email.
                  example: qkunze@example.com
                  nullable: true
              required:
                - name
                - phone
  /api/v1/update/avatar:
    post:
      summary: 'Update Avatar'
      operationId: updateAvatar
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Profile
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                avatar:
                  type: string
                  format: binary
                  description: 'Avatar file.'
              required:
                - avatar
  /api/v1/update/password:
    put:
      summary: 'Update password'
      operationId: updatePassword
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Profile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                password:
                  type: string
                  description: 'The new password of user.'
                  example: 'O[2UZ5ij-e/dl4m{o,'
                old_password:
                  type: string
                  description: 'The current password of user.'
                  example: consequatur
              required:
                - password
                - old_password
  /api/v1/settings:
    get:
      summary: 'Get user settings'
      operationId: getUserSettings
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Profile
    put:
      summary: 'Update user settings'
      operationId: updateUserSettings
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Profile
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                biometric_enabled:
                  type: boolean
                  description: 'Enable/disable biometric authentication.'
                  example: false
                notification_enabled:
                  type: boolean
                  description: 'Enable/disable notifications.'
                  example: false
                language:
                  type: string
                  description: "User's preferred language."
                  example: consequatur
                currency:
                  type: string
                  description: "User's preferred currency."
                  example: consequatur
                theme:
                  type: string
                  description: "User's preferred theme (light, dark, auto)."
                  example: consequatur
                timezone:
                  type: string
                  description: "User's timezone."
                  example: Europe/Malta
  /api/v1/ecommerce/reviews:
    get:
      summary: 'Get list of reviews for the current user'
      operationId: getListOfReviewsForTheCurrentUser
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  data: null
                  message: Unauthenticated.
                properties:
                  error:
                    type: boolean
                    example: true
                  data:
                    type: string
                    example: null
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Reviews
    post:
      summary: 'Create a new review'
      operationId: createANewReview
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Reviews
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: integer
                  description: 'The ID of the product to review.'
                  example: 1
                star:
                  type: integer
                  description: 'The rating from 1 to 5 stars.'
                  example: 5
                comment:
                  type: string
                  description: 'The review comment.'
                  example: 'This is a great product! I highly recommend it.'
                images:
                  type: array
                  description: 'Array of images for the review (optional).'
                  example: null
                  items:
                    type: string
              required:
                - product_id
                - star
                - comment
  '/api/v1/ecommerce/reviews/{id}':
    delete:
      summary: 'Delete a review'
      operationId: deleteAReview
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Reviews
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the review.'
        example: '1562'
        required: true
        schema:
          type: string
  /api/v1/simple-sliders:
    get:
      summary: 'Get sliders'
      operationId: getSliders
      description: ''
      parameters:
        -
          in: query
          name: keys
          description: 'Array of slider keys to filter by.'
          example:
            - home-slider
            - product-slider
          required: false
          schema:
            type: array
            description: 'Array of slider keys to filter by.'
            example:
              - home-slider
              - product-slider
            items:
              type: string
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - 'Simple Slider'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                keys:
                  type: array
                  description: 'Array of slider keys to filter by.'
                  example:
                    - home-slider
                    - product-slider
                  items:
                    type: string
      security: []
  /api/v1/auth/apple:
    post:
      summary: 'Apple login'
      operationId: appleLogin
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    token: 1|abc123def456...
                    user:
                      id: 1
                      name: 'John Doe'
                      email: john@example.com
                  message: 'Login successful'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      token:
                        type: string
                        example: 1|abc123def456...
                      user:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 1
                          name:
                            type: string
                            example: 'John Doe'
                          email:
                            type: string
                            example: john@example.com
                  message:
                    type: string
                    example: 'Login successful'
        400:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: ''
                    type: object
                    example:
                      error: true
                      message: 'Invalid Apple token'
                    properties:
                      error:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Invalid Apple token'
                  -
                    description: ''
                    type: object
                    example:
                      error: true
                      message: 'Cannot login, no email or Apple ID provided!'
                    properties:
                      error:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Cannot login, no email or Apple ID provided!'
      tags:
        - 'Social Login'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                identityToken:
                  type: string
                  description: 'The Apple identity token received from Apple Sign-In.'
                  example: consequatur
                guard:
                  type: string
                  description: 'optional The guard to use for authentication (default: web).'
                  example: consequatur
              required:
                - identityToken
      security: []
  /api/v1/auth/google:
    post:
      summary: 'Google login'
      operationId: googleLogin
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    token: 1|abc123def456...
                    user:
                      id: 1
                      name: 'John Doe'
                      email: john@example.com
                  message: 'Login successful'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      token:
                        type: string
                        example: 1|abc123def456...
                      user:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 1
                          name:
                            type: string
                            example: 'John Doe'
                          email:
                            type: string
                            example: john@example.com
                  message:
                    type: string
                    example: 'Login successful'
        400:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: ''
                    type: object
                    example:
                      error: true
                      message: 'Invalid Google token'
                    properties:
                      error:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Invalid Google token'
                  -
                    description: ''
                    type: object
                    example:
                      error: true
                      message: 'Google authentication is not properly configured'
                    properties:
                      error:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Google authentication is not properly configured'
      tags:
        - 'Social Login'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                identityToken:
                  type: string
                  description: 'The Google identity token received from Google Sign-In.'
                  example: consequatur
                guard:
                  type: string
                  description: 'optional The guard to use for authentication (default: web).'
                  example: consequatur
              required:
                - identityToken
      security: []
  /api/v1/auth/facebook:
    post:
      summary: 'Facebook login'
      operationId: facebookLogin
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    token: 1|abc123def456...
                    user:
                      id: 1
                      name: 'John Doe'
                      email: john@example.com
                  message: 'Login successful'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      token:
                        type: string
                        example: 1|abc123def456...
                      user:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 1
                          name:
                            type: string
                            example: 'John Doe'
                          email:
                            type: string
                            example: john@example.com
                  message:
                    type: string
                    example: 'Login successful'
        400:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: ''
                    type: object
                    example:
                      error: true
                      message: 'Invalid Facebook token'
                    properties:
                      error:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Invalid Facebook token'
                  -
                    description: ''
                    type: object
                    example:
                      error: true
                      message: 'Facebook authentication is not properly configured'
                    properties:
                      error:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Facebook authentication is not properly configured'
      tags:
        - 'Social Login'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                accessToken:
                  type: string
                  description: 'The Facebook access token received from Facebook Login.'
                  example: consequatur
                guard:
                  type: string
                  description: 'optional The guard to use for authentication (default: web).'
                  example: consequatur
              required:
                - accessToken
      security: []
  /api/v1/auth/x:
    post:
      summary: 'X (Twitter) login'
      operationId: xTwitterLogin
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: false
                  data:
                    token: 1|abc123def456...
                    user:
                      id: 1
                      name: 'John Doe'
                      email: john@example.com
                  message: 'Login successful'
                properties:
                  error:
                    type: boolean
                    example: false
                  data:
                    type: object
                    properties:
                      token:
                        type: string
                        example: 1|abc123def456...
                      user:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 1
                          name:
                            type: string
                            example: 'John Doe'
                          email:
                            type: string
                            example: john@example.com
                  message:
                    type: string
                    example: 'Login successful'
        400:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: ''
                    type: object
                    example:
                      error: true
                      message: 'Invalid X (Twitter) token'
                    properties:
                      error:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'Invalid X (Twitter) token'
                  -
                    description: ''
                    type: object
                    example:
                      error: true
                      message: 'X (Twitter) authentication is not properly configured'
                    properties:
                      error:
                        type: boolean
                        example: true
                      message:
                        type: string
                        example: 'X (Twitter) authentication is not properly configured'
      tags:
        - 'Social Login'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                accessToken:
                  type: string
                  description: 'The X (Twitter) access token received from X OAuth.'
                  example: consequatur
                guard:
                  type: string
                  description: 'optional The guard to use for authentication (default: web).'
                  example: consequatur
              required:
                - accessToken
      security: []
  /api/v1/ecommerce/wishlist:
    post:
      summary: 'Add product to wishlist'
      operationId: addProductToWishlist
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Wishlist
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: integer
                  description: 'ID of the product.'
                  example: 1
              required:
                - product_id
      security: []
  '/api/v1/ecommerce/wishlist/{id}':
    post:
      summary: 'Add product to wishlist'
      operationId: addProductToWishlist
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Wishlist
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: integer
                  description: 'ID of the product.'
                  example: 1
              required:
                - product_id
      security: []
    delete:
      summary: 'Remove a product from wishlist'
      operationId: removeAProductFromWishlist
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Wishlist
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_id:
                  type: string
                  description: 'The ID of the product to remove from the wishlist. The <code>id</code> of an existing record in the ec_products table.'
                  example: 1
              required:
                - product_id
      security: []
    get:
      summary: 'Get wishlist items'
      operationId: getWishlistItems
      description: ''
      parameters: []
      responses:
        503:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  error: true
                  message: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data: null
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'API is currently disabled. Please contact the administrator to enable API access.'
                  data:
                    type: string
                    example: null
      tags:
        - Wishlist
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: 'ID of the wishlist.'
                  example: e70c6c88dae8344b03e39bb147eba66a
              required:
                - id
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the wishlist.'
        example: consequatur
        required: true
        schema:
          type: string
