openapi: 3.0.0
info:
  contact:
    email: support@enad.io
    name: API support
    url: http://enad.io/support
  description: This is the documentation for Public API v1
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: http://enad.io/terms/
  title: Public API
  version: '1.0'
paths:
  /api/v1/omni/:app_id/:market/:locale/products/slug/:slug:
    get:
      description: Fetch product by slug
      parameters:
        - description: The product slug
          in: path
          name: slug
          required: true
          schema:
            type: string
        - description: Filter to only get related information to the market
          in: path
          name: market
          schema:
            type: string
          required: true
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponse-ProductDTOWithBundles'
        '404':
          description: Product not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch product by slug
      tags:
        - Products
  /api/v1/omni/:app_id/:store_group/:market/:locale/brands:
    get:
      description: Fetch all distinct brands for a given app and locale.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 20)'
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: Paginated brands response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponseWithPagignation-array_BrandWithSeries
        '400':
          description: Invalid app ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all brands
      tags:
        - Brands
  /api/v1/omni/:app_id/:store_group/:market/:locale/brands/:brand_id:
    get:
      description: Fetch a single brand and its related products.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Brand ID
          in: path
          name: brand_id
          required: true
          schema:
            type: string
        - description: Only active products
          in: query
          name: only_active
          schema:
            type: boolean
      responses:
        '200':
          description: Brand with products
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponse-BrandWithPaginatedProducts'
        '400':
          description: Invalid app ID or brand ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Brand not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch a brand
      tags:
        - Brands
  /api/v1/omni/:app_id/:store_group/:market/:locale/brands/slug/:slug:
    get:
      description: Fetch a single brand and its related products.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Brand ID
          in: path
          name: brand_id
          required: true
          schema:
            type: string
        - description: Filter only active products
          in: query
          name: only_active
          schema:
            type: boolean
      responses:
        '200':
          description: Brand with products
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponse-BrandWithPaginatedProducts'
        '400':
          description: Invalid app ID or brand ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Brand not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch a brand by slug
      tags:
        - Brands
  /api/v1/omni/:app_id/:store_group/:market/:locale/categories:
    get:
      description: >-
        Returns a list of categories without subcategories, with support for
        pagination and filtering by active status.
      parameters:
        - description: Application ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Locale for translations (e.g., 'sv', 'en')
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Number of items per page (default: 20, max: 100)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Filter to include only active categories (true/false)
          in: query
          name: only_active
          schema:
            type: boolean
        - description: Store group
          in: path
          name: store_group
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponseWithPagignation-array_github_com_enadhq_goomba_internal_pkg_models_CategoryDTO
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Retrieve categories
      tags:
        - Categories
  /api/v1/omni/:app_id/:store_group/:market/:locale/category-tree:
    get:
      description: Retrieves the complete hierarchical category structure for a given app
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Locale for translations
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: StoreGroup
          in: path
          name: store_group
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  $ref: >-
                    #/components/schemas/OkResponse-array_github_com_enadhq_goomba_internal_pkg_models_CategoryDTO
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get full category tree for an app
      tags:
        - Categories
  /api/v1/omni/:app_id/:store_group/:market/:locale/category-tree/:parent_id:
    get:
      description: >-
        Retrieves the category hierarchy starting from a specific parent
        category
      parameters:
        - description: Application ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Parent Category ID
          in: path
          name: parent_id
          required: true
          schema:
            type: string
        - description: Locale for translations
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Market for the categories
          in: path
          name: market
          schema:
            type: string
          required: true
        - description: Store group
          in: path
          name: store_group
          schema:
            type: string
          required: true
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 20) (max: 20)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Filter only active products
          in: query
          name: only_active
          schema:
            type: boolean
        - description: Fetch all child categories products as well
          in: query
          name: include_child_category_products
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-CategoryDTOWithPaginatedProducts
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get category tree from a specific parent
      tags:
        - Categories
  /api/v1/omni/:app_id/:store_group/:market/:locale/category-tree/slugs:
    get:
      description: Fetch all categories slugs
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          schema:
            type: string
          required: true
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 500)'
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: List of product slugs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponseWithPagignation-array_string'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all categories slugs
      tags:
        - Categories
  /api/v1/omni/:app_id/:store_group/:market/:locale/category-tree/uri/:uri:
    get:
      description: Retrieves a category using its slug or translated slug
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Category Slug
          in: path
          name: slug
          required: true
          schema:
            type: string
        - description: Locale for translations
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Market to select products
          in: path
          name: market
          schema:
            type: string
          required: true
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: Store group
          in: path
          name: store_group
          schema:
            type: string
          required: true
        - description: Filter only active products
          in: query
          name: only_active
          schema:
            type: boolean
        - description: 'Items per page (default: 20) (max: 20)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Fetch all child categories products as well
          in: query
          name: include_child_category_products
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-CategoryDTOWithPaginatedProducts
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get category by slug
      tags:
        - Categories
  /api/v1/omni/:app_id/:store_group/:market/:locale/collections:
    get:
      description: Fetch all collections for a given app
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: Store group slug
          in: path
          name: store_group
          schema:
            type: string
          required: true
        - description: Only active collections
          in: query
          name: only_active
          schema:
            type: boolean
        - description: 'Items per page (default: 20, max: 20)'
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: List of collections
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponseWithPagignation-array_github_com_enadhq_goomba_internal_pkg_models_CollectionDTO
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all collections
      tags:
        - Collections
  /api/v1/omni/:app_id/:store_group/:market/:locale/collections/slugs:
    get:
      description: Fetch all collection slugs for a given app
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: Store group slug
          in: path
          name: store_group
          schema:
            type: string
          required: true
        - description: 'Items per page (default: 500, max 500)'
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: List of collection slugs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponseWithPagignation-array_string'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all collection slugs
      tags:
        - Collections
  /api/v1/omni/:app_id/:store_group/:market/:locale/collections/uri/:uri:
    get:
      description: Fetch a single collection by its URI for a given app
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Collection URI
          in: path
          name: uri
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Market slug. e.g `se`
          in: path
          name: market
          schema:
            type: string
          required: true
        - description: Store group slug
          in: path
          name: store_group
          schema:
            type: string
          required: true
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 20, max: 20)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Filter only active products
          in: query
          name: only_active
          schema:
            type: boolean
        - description: Fetch all child categories products as well
          in: query
          name: include_child_collection_products
          schema:
            type: boolean
      responses:
        '200':
          description: Collection with paginated products
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-CollectionDTOWithPaginatedProducts
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Collection not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch a collection by URI
      tags:
        - Collections
  /api/v1/omni/:app_id/:store_group/:market/:locale/facets/{facet_keys}:
    get:
      description: >-
        Fetch available facets like attributes, variant names, and price ranges.
        Facet keys is a comma separated string. Valid keys are: "attributes",
        "attributes[template_key1|template_key2]", "variant_names", "price",
        "tags", "collections", "categories", "brands", "series",
        "variant_with_attributes[template_key1|template_key2]". Product filters
        are optional.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale for translations
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: >-
            Comma-separated list of facet keys (e.g.,
            attributes,attributes[color|size],variant_names,price,tags,collections,categories,brands,series,variant_with_attributes[color|size])
          in: path
          name: facet_keys
          required: true
          schema:
            type: string
        - description: Comma-separated list of category UUIDs to filter products
          in: query
          name: category_ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Comma-separated list of collection UUIDs to filter products
          in: query
          name: collection_ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Comma-separated list of product SKUs to filter products
          in: query
          name: skus
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Full text search on products
          in: query
          name: search
          schema:
            type: string
        - description: Store group slug
          in: path
          name: store_group
          schema:
            type: string
          required: true
        - description: Include variant attributes in the response
          in: query
          name: include_variants
          schema:
            type: boolean
        - description: Only include facets from available products/variants
          in: query
          name: only_available
          schema:
            type: boolean
        - description: >-
            Include products from child categories when filtering by category or
            category_id
          in: query
          name: include_child_category_products
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-github_com_enadhq_goomba_internal_pkg_models_FacetsResponse
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch facets
      tags:
        - Facets
  /api/v1/omni/:app_id/:store_group/:market/:locale/products:
    get:
      description: Fetch all products with pagination and filtering
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: The related product market
          in: path
          name: market
          schema:
            type: string
          required: true
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 50, max: 50)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Filter only active products
          in: query
          name: only_active
          schema:
            type: boolean
        - description: Filter by stock availability
          in: query
          name: in_stock
          schema:
            type: boolean
        - description: >-
            Filter by stock availability in a specific warehouse (by warehouse
            slug)
          in: query
          name: in_stock_in
          schema:
            type: string
        - description: >-
            Sort order. One of created_at_desc, created_at_asc, name_asc,
            name_desc, category_order_asc, category_order_desc,
            collection_order_asc, collection_order_desc, tag_order_asc,
            tag_order_desc, price_asc, price_desc
          in: query
          name: sort
          schema:
            type: string
        - description: Filter by SKUs
          in: query
          name: sku
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by Variant Names
          in: query
          name: variant_name
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter on collections slugs
          in: query
          name: collection
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by tags key. e.g `black-friday`
          in: query
          name: tag
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by product slugs
          in: query
          name: slug
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by brand slug
          in: query
          name: brand
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by serie slug
          in: query
          name: serie
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by category slug
          in: query
          name: category
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by smart list slug
          in: query
          name: smart_list
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by static list slug
          in: query
          name: static_list
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products with these SKUs
          in: query
          name: not_in_sku
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products in these categories (by slug)
          in: query
          name: not_in_category
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products in these collections (by uri)
          in: query
          name: not_in_collection
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products with these tags (by key)
          in: query
          name: not_in_tag
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products with these brands (by slug)
          in: query
          name: not_in_brand
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products with these series (by slug)
          in: query
          name: not_in_serie
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by minimum price (inclusive)
          in: query
          name: price_gte
          schema:
            type: number
        - description: Filter by maximum price (inclusive)
          in: query
          name: price_lte
          schema:
            type: number
        - description: >-
            Filter by attributes (format: template_key/value_key, e.g.,
            color/blue). Product must match all specified attributes.
          in: query
          name: attributes
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Filter by category IDs (UUIDs). Product must be in at least one of
            the specified category IDs.
          in: query
          name: category_id
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products in these category IDs (UUIDs).
          in: query
          name: not_in_category_id
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Full text search on products
          in: query
          name: search
          schema:
            type: string
        - description: >-
            Include products from child categories when filtering by category or
            category_id
          in: query
          name: include_child_category_products
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponseWithPagignation-array_ProductDTOWithShortRelatedProduct
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all products
      tags:
        - Products
  /api/v1/omni/:app_id/:store_group/:market/:locale/products/search:
    get:
      description: >-
        Search products with lightweight response containing only name,
        descriptions, tags, images and attributes
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: The related product market
          in: path
          name: market
          schema:
            type: string
          required: true
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 50, max: 50)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Search query
          in: query
          name: q
          required: true
          schema:
            type: string
        - description: 'Filter by active status only (default: false)'
          in: query
          name: only_active
          schema:
            type: boolean
        - description: Filter by stock availability
          in: query
          name: in_stock
          schema:
            type: boolean
        - description: >-
            Filter by stock availability in a specific warehouse (by warehouse
            slug)
          in: query
          name: in_stock_in
          schema:
            type: string
        - description: 'Sort order. One of name_asc, name_desc, rank (default: rank)'
          in: query
          name: sort
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponseWithPagignation-array_ProductSearchResultDTO
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Search products
      tags:
        - Products
  /api/v1/omni/:app_id/:store_group/:market/:locale/products/sku/:sku:
    get:
      description: Fetch product by sku
      parameters:
        - description: The product sku
          in: path
          name: sku
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Filter to only get related information to the market
          in: path
          name: market
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponse-ProductDTOWithBundles'
        '404':
          description: Product not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch product by sku
      tags:
        - Products
  /api/v1/omni/:app_id/:store_group/:market/:locale/products/skus/:skus:
    get:
      description: >-
        Fetch all products with matching sku, the skus need to be comma
        separated
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Comma separated skus
          in: path
          name: skus
          required: true
          schema:
            type: string
        - description: Filter to only get related information to the market
          in: path
          name: market
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-array_ProductDTOWithShortRelatedProduct
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all products by skus
      tags:
        - Products
  /api/v1/omni/:app_id/:store_group/:market/:locale/products/slugs:
    get:
      description: Fetch all products slugs
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Only active products
          in: query
          name: only_active
          schema:
            type: boolean
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 500)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: >-
            Include products from child categories when filtering by category or
            category_id
          in: query
          name: include_child_category_products
          schema:
            type: boolean
      responses:
        '200':
          description: List of product slugs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponseWithPagignation-array_string'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all products slugs
      tags:
        - Products
  /api/v1/omni/:app_id/:store_group/:market/:locale/redirects:
    get:
      description: Fetch redirects with pagination and filtering by product type.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 20)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Product type (product category collection product_bundle)
          in: query
          name: type
          schema:
            type: string
      responses:
        '200':
          description: Paginated redirects response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponseWithPagignation-array_Redirect'
        '400':
          description: Invalid app ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch redirects
      tags:
        - Redirects
  /api/v1/omni/:app_id/:store_group/:market/:locale/redirects/:item_id:
    get:
      description: Fetch redirects for a specific item ID with pagination.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Item ID
          in: path
          name: item_id
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 20, max: 100)'
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: Paginated redirects response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponseWithPagignation-array_Redirect'
        '400':
          description: Invalid app ID or item ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch redirects by item ID
      tags:
        - Redirects
  /api/v1/omni/:app_id/:store_group/:market/:locale/redirects/old-slug/:old_slug:
    get:
      description: Fetch redirects for a specific old slug with pagination.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Old Slug
          in: path
          name: old_slug
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 20, max: 100)'
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: Paginated redirects response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponseWithPagignation-array_Redirect'
        '400':
          description: Invalid app ID or old slug
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch redirects by old slug
      tags:
        - Redirects
  /api/v1/omni/:app_id/:store_group/:market/:locale/series:
    get:
      description: Fetch all distinct series for a given app and locale.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 50)'
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: Paginated series response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponseWithPagignation-array_SeriesWithBrand
        '400':
          description: Invalid app ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all series
      tags:
        - Series
  /api/v1/omni/:app_id/:store_group/:market/:locale/series/:serie_id:
    get:
      description: Fetch a single serie and its related products.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Serie ID
          in: path
          name: serie_id
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 20)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Only active products
          in: query
          name: only_active
          schema:
            type: boolean
      responses:
        '200':
          description: Serie with products
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-internal_pkg_webserver_v1_SeriesWithPaginatedProducts
        '400':
          description: Invalid app ID or serie ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Serie not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch a serie
      tags:
        - Series
  /api/v1/omni/:app_id/:store_group/:market/:locale/series/slug/:slug:
    get:
      description: Fetch a single serie and its related products.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 20)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Only active products
          in: query
          name: only_active
          schema:
            type: boolean
      responses:
        '200':
          description: Paginated series response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-internal_pkg_webserver_v1_SeriesWithPaginatedProducts
        '400':
          description: Invalid app ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch serie by slug
      tags:
        - Series
  /api/v1/omni/:app_id/:store_group/:market/:locale/tags:
    get:
      description: Fetch all tags for a given app with pagination.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 100, max: 100)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Filter only active tags
          in: query
          name: only_active
          schema:
            type: boolean
      responses:
        '200':
          description: Paginated list of tags
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponseWithPagignation-array_TagDTO'
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all tags
      tags:
        - Tags
  /api/v1/omni/:app_id/:store_group/:market/:locale/tags/{tag_id}:
    get:
      description: >-
        Fetch a single tag by its ID and its related products, ordered by the
        product-tag relationship order.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Tag ID
          in: path
          name: tag_id
          required: true
          schema:
            type: string
        - description: 'Page number for products (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page for products (default: 50, max: 50)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Filter only active products
          in: query
          name: only_active
          schema:
            type: boolean
      responses:
        '200':
          description: Tag with paginated products
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-internal_pkg_webserver_v1_TagDTOWithPaginatedProducts
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Tag not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch tag by ID
      tags:
        - Tags
  /api/v1/omni/:app_id/:store_group/:market/:locale/tags/key/{tag_key}:
    get:
      description: >-
        Fetch a single tag by its key and its related products, ordered by the
        product-tag relationship order.
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Market
          in: path
          name: market
          required: true
          schema:
            type: string
        - description: Locale
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: Tag key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
        - description: 'Page number for products (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page for products (default: 50, max: 50)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Filter only active products
          in: query
          name: only_active
          schema:
            type: boolean
      responses:
        '200':
          description: Tag with paginated products
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponse-internal_pkg_webserver_v1_TagDTOWithPaginatedProducts
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Tag not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch tag by key
      tags:
        - Tags
  /api/v1/omni/:app_id/:store_group/:market/:locale/variants:
    get:
      description: >-
        Fetch all variants with pagination and filtering. Note: Only one filter
        type (sku, tag, slug, brand, smart_list, or static_list) can be used at
        a time
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: The related product market
          in: path
          name: market
          schema:
            type: string
          required: true
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 50, max: 50)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Filter only active products and variants
          in: query
          name: only_active
          schema:
            type: boolean
        - description: Filter by stock availability
          in: query
          name: in_stock
          schema:
            type: boolean
        - description: >-
            Filter by stock availability in a specific warehouse (by warehouse
            slug)
          in: query
          name: in_stock_in
          schema:
            type: string
        - description: >-
            Sort order. One of created_at_desc, created_at_asc, name_asc,
            name_desc, category_order_asc, category_order_desc,
            collection_order_asc, collection_order_desc, tag_order_asc,
            tag_order_desc, variant_number_asc, variant_number_desc,
            variant_name_asc, variant_name_desc, price_asc, price_desc
          in: query
          name: sort
          schema:
            type: string
        - description: Filter by SKUs (parent product)
          in: query
          name: sku
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by Variant Names
          in: query
          name: variant_name
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter on collections slugs (parent product)
          in: query
          name: collection
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by tags key (parent product). e.g `black-friday`
          in: query
          name: tag
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by product slugs (parent product)
          in: query
          name: slug
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by brand slug (parent product)
          in: query
          name: brand
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by serie slug (parent product)
          in: query
          name: serie
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by category slug (parent product)
          in: query
          name: category
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by smart list slug
          in: query
          name: smart_list
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by static list slug
          in: query
          name: static_list
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products with these SKUs (parent product)
          in: query
          name: not_in_sku
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products in these categories (by slug) (parent product)
          in: query
          name: not_in_category
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products in these collections (by uri) (parent product)
          in: query
          name: not_in_collection
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products with these tags (by key) (parent product)
          in: query
          name: not_in_tag
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products with these brands (by slug) (parent product)
          in: query
          name: not_in_brand
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products with these series (by slug) (parent product)
          in: query
          name: not_in_serie
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by minimum price (inclusive)
          in: query
          name: price_gte
          schema:
            type: number
        - description: Filter by maximum price (inclusive)
          in: query
          name: price_lte
          schema:
            type: number
        - description: >-
            Filter by attributes (format: template_key/value_key, e.g.,
            color/blue). Product or Variant must match all specified attributes.
          in: query
          name: attributes
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Filter by category IDs (UUIDs). Product must be in at least one of
            the specified category IDs.
          in: query
          name: category_id
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Exclude products in these category IDs (UUIDs).
          in: query
          name: not_in_category_id
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Find all variants who have a specific attribute template mapped, e.g
            size
          in: query
          name: has_attribute_template
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Full text search on variants
          in: query
          name: search
          schema:
            type: string
        - description: >-
            Group variants by an attribute template key (e.g., 'color'). When
            used, only one variant per product and attribute value is returned.
          in: query
          name: group_by_attribute_template
          schema:
            type: string
        - description: >-
            Return related variants filtered by attribute combinations (e.g.,
            'color', 'color,size'). For single attributes, returns unique
            variants by that attribute within parent products. For two
            attributes, returns all variants in catalog sharing the first
            attribute values with unique second attribute values.
          in: query
          name: related_variants_attr
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponseWithPagignation-array_VariantDTOWithProductInfo
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all variants
      tags:
        - Variants
  /api/v1/omni/:app_id/:store_group/:market/:locale/variants/search:
    get:
      description: >-
        Search variants with lightweight response containing only name,
        descriptions, tags, images and attributes
      parameters:
        - description: App ID
          in: path
          name: app_id
          required: true
          schema:
            type: string
        - description: Store group
          in: path
          name: store_group
          required: true
          schema:
            type: string
        - description: Alpha 2 country code. e.g `se`
          in: path
          name: locale
          required: true
          schema:
            type: string
        - description: The related product market
          in: path
          name: market
          schema:
            type: string
          required: true
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 50, max: 50)'
          in: query
          name: per_page
          schema:
            type: integer
        - description: Search query
          in: query
          name: q
          required: true
          schema:
            type: string
        - description: 'Filter by active status only (default: false)'
          in: query
          name: only_active
          schema:
            type: boolean
        - description: Filter by stock availability
          in: query
          name: in_stock
          schema:
            type: boolean
        - description: >-
            Filter by stock availability in a specific warehouse (by warehouse
            slug)
          in: query
          name: in_stock_in
          schema:
            type: string
        - description: 'Sort order. One of name_asc, name_desc, rank (default: rank)'
          in: query
          name: sort
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OkResponseWithPagignation-array_VariantSearchResultDTO
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - BearerAuth: []
      summary: Search variants
      tags:
        - Variants
servers:
  - url: //shopper-cdn.enad.io
components:
  securitySchemes:
    BearerAuth:
      description: Type "Bearer" followed by a space and a token.
      in: header
      name: Authorization
      type: apiKey
  schemas:
    Address:
      description: >-
        Address represents a physical location with detailed address
        information.
      properties:
        city:
          type: string
        country:
          type: string
        postal_code:
          type: string
        region:
          type: string
        street_address:
          type: string
      type: object
    AttributeDTO:
      description: >-
        AttributeDTO represents the data transfer object for an attribute with
        its values.
      properties:
        description:
          type: string
        id:
          type: string
        key:
          type: string
        name:
          type: string
        values:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeValueDTO'
            type: array
          type: object
      type: object
    AttributeValueDTO:
      description: >-
        AttributeValueDTO represents the data transfer object for an attribute
        value with type information.
      properties:
        type:
          type: string
        value:
          type: string
      type: object
    Brand:
      description: Brand represents a product brand
      properties:
        cover_url:
          type: string
        description:
          type: string
        id:
          type: string
        logo_url:
          type: string
        name:
          type: string
        slug:
          type: string
      required:
        - id
        - name
        - slug
      type: object
    BrandDTO:
      description: BrandDTO represents the data transfer object for a brand.
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
      type: object
    BrandWithPaginatedProducts:
      properties:
        cover_url:
          type: string
        description:
          type: string
        id:
          type: string
        logo_url:
          type: string
        name:
          type: string
        products:
          $ref: >-
            #/components/schemas/OkResponseWithPagignation-array_ProductDTOWithShortRelatedProduct
        series:
          items:
            $ref: '#/components/schemas/Series'
          type: array
        slug:
          type: string
      required:
        - id
        - name
        - slug
      type: object
    BrandWithSeries:
      description: BrandWithSeries represents a product brand with its associated series.
      properties:
        cover_url:
          type: string
        description:
          type: string
        id:
          type: string
        logo_url:
          type: string
        name:
          type: string
        series:
          items:
            $ref: '#/components/schemas/Series'
          type: array
        slug:
          type: string
      required:
        - id
        - name
        - slug
      type: object
    BundleDTO:
      description: BundleDTO represents the data transfer object for a bundle.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        description:
          type: string
        discounts:
          $ref: '#/components/schemas/DiscountDTO'
        id:
          type: string
        item_rules:
          items:
            $ref: '#/components/schemas/BundleItemRuleDTO'
          type: array
        name:
          type: string
        products:
          items:
            $ref: '#/components/schemas/ProductDTO'
          type: array
        valid_date_range:
          $ref: '#/components/schemas/DateRange'
      type: object
    BundleItemRuleDTO:
      description: >-
        BundleItemRuleDTO represents the data transfer object for bundle item
        rules.
      properties:
        exclude_discounted_prices:
          type: boolean
        exclude_full_prices:
          type: boolean
        id:
          type: string
        item_rules:
          $ref: '#/components/schemas/DiscountDTO'
        product_skus:
          items:
            type: string
          type: array
        quantity:
          type: integer
      type: object
    CategoryDTOWithPaginatedProducts:
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        full_path_name:
          items:
            type: string
          type: array
        full_uri_translations:
          additionalProperties:
            type: string
          type: object
        id:
          type: string
        name:
          type: string
        parent_id:
          type: string
        products:
          $ref: >-
            #/components/schemas/OkResponseWithPagignation-array_ProductDTOWithShortRelatedProduct
        redirects:
          additionalProperties:
            type: string
          type: object
        slug_translations:
          additionalProperties:
            type: string
          type: object
        sort_order:
          type: integer
        status:
          type: string
        sub_categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CategoryDTO
          type: array
        uri:
          type: string
      type: object
    CollectionDTOWithPaginatedProducts:
      properties:
        children:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CollectionDTO
          type: array
        id:
          type: string
        parent_id:
          type: string
        products:
          $ref: >-
            #/components/schemas/OkResponseWithPagignation-array_ProductDTOWithShortRelatedProduct
        title:
          type: string
        uri:
          type: string
      type: object
    DateRange:
      description: DateRange represents a time period with start and end dates.
      properties:
        from:
          type: string
        to:
          type: string
      type: object
    Dimensions:
      description: >-
        Dimensions represents the physical measurements of a product or its
        packaging.
      properties:
        capacity_milliliter:
          type: integer
        depth:
          type: integer
        diameter:
          type: integer
        height:
          type: integer
        length:
          type: integer
        weight:
          type: integer
        width:
          type: integer
      type: object
    DiscountDTO:
      description: DiscountDTO represents the data transfer object for discounts.
      properties:
        fixed_discounts:
          additionalProperties:
            format: float64
            type: number
          type: object
        percentage:
          type: integer
        type:
          type: string
      type: object
    ErrorMessage:
      description: ErrorMessage is the response for a ErrorMessage
      properties:
        message:
          type: string
      type: object
    FileDTO:
      description: FileDTO represents the data transfer object for a file.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        title:
          type: string
        type:
          type: string
        url:
          type: string
      type: object
    FilterTag:
      description: FilterTag represents the data transfer object for a tag
      properties:
        id:
          type: string
        key:
          type: string
        name:
          type: string
      type: object
    ImageDTO:
      description: ImageDTO represents the data transfer object for an image.
      properties:
        alt:
          type: string
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        blurhash:
          type: string
        sort:
          type: integer
        title:
          type: string
        url:
          type: string
      type: object
    MarketPriceDTO:
      description: >-
        MarketPriceDTO extends MarketPrice with additional tax-related
        information.
      properties:
        base_price_amount:
          type: number
        country_code:
          type: string
        country_codes:
          items:
            type: string
          type: array
        currency:
          type: string
        id:
          type: string
        market_id:
          type: string
        market_slug:
          type: string
        on_sale:
          type: boolean
        reference_price_amount:
          type: number
        sale_end_timestamp:
          type: string
        sale_price_amount:
          type: number
        sale_start_timestamp:
          type: string
      type: object
    OkResponse-BrandWithPaginatedProducts:
      properties:
        data:
          $ref: '#/components/schemas/BrandWithPaginatedProducts'
      type: object
    OkResponse-CategoryDTOWithPaginatedProducts:
      properties:
        data:
          $ref: '#/components/schemas/CategoryDTOWithPaginatedProducts'
      type: object
    OkResponse-CollectionDTOWithPaginatedProducts:
      properties:
        data:
          $ref: '#/components/schemas/CollectionDTOWithPaginatedProducts'
      type: object
    OkResponse-ProductDTOWithBundles:
      properties:
        data:
          $ref: '#/components/schemas/ProductDTOWithBundles'
      type: object
    OkResponse-array_ProductDTOWithShortRelatedProduct:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ProductDTOWithShortRelatedProduct'
          type: array
      type: object
    OkResponse-array_github_com_enadhq_goomba_internal_pkg_models_CategoryDTO:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CategoryDTO
          type: array
      type: object
    OkResponse-github_com_enadhq_goomba_internal_pkg_models_FacetsResponse:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.FacetsResponse
      type: object
    OkResponse-internal_pkg_webserver_v1_SeriesWithPaginatedProducts:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.SeriesWithPaginatedProducts
      type: object
    OkResponse-internal_pkg_webserver_v1_TagDTOWithPaginatedProducts:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.TagDTOWithPaginatedProducts
      type: object
    OkResponseWithPagignation-array_BrandWithSeries:
      properties:
        data:
          items:
            $ref: '#/components/schemas/BrandWithSeries'
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_ProductDTOWithShortRelatedProduct:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ProductDTOWithShortRelatedProduct'
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_ProductSearchResultDTO:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ProductSearchResultDTO'
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_Redirect:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Redirect'
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_SeriesWithBrand:
      properties:
        data:
          items:
            $ref: '#/components/schemas/SeriesWithBrand'
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_TagDTO:
      properties:
        data:
          items:
            $ref: '#/components/schemas/TagDTO'
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_VariantDTOWithProductInfo:
      properties:
        data:
          items:
            $ref: '#/components/schemas/VariantDTOWithProductInfo'
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_VariantSearchResultDTO:
      properties:
        data:
          items:
            $ref: '#/components/schemas/VariantSearchResultDTO'
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_github_com_enadhq_goomba_internal_pkg_models_CategoryDTO:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CategoryDTO
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_github_com_enadhq_goomba_internal_pkg_models_CollectionDTO:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CollectionDTO
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    OkResponseWithPagignation-array_string:
      properties:
        data:
          items:
            type: string
          type: array
        page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    ProductBrand:
      description: ProductBrand represents a brand with an optional series.
      properties:
        name:
          type: string
        series:
          $ref: '#/components/schemas/ProductSeries'
        slug:
          type: string
      type: object
    ProductCollectionDTO:
      description: >-
        ProductCollectionDTO represents the data transfer object for a
        collection.
      properties:
        children:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CollectionDTO
          type: array
        id:
          type: string
        order:
          type: integer
        parent_id:
          type: string
        title:
          type: string
        uri:
          type: string
      type: object
    ProductDTO:
      description: >-
        ProductDTO represents the product data transfer object with all
        necessary fields for API responses.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        brands:
          $ref: '#/components/schemas/ProductBrand'
        categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.ProductCategoryDTO
          type: array
        collections:
          items:
            $ref: '#/components/schemas/ProductCollectionDTO'
          type: array
        created_at:
          type: string
        custom_fields:
          additionalProperties:
            type: string
          type: object
        description:
          type: string
        files:
          items:
            $ref: '#/components/schemas/FileDTO'
          type: array
        html_description:
          type: string
        html_short_description:
          type: string
        id:
          type: string
        images:
          items:
            $ref: '#/components/schemas/ImageDTO'
          type: array
        in_stock:
          type: boolean
        is_active:
          type: boolean
        meta_description:
          type: string
        meta_title:
          type: string
        product_name:
          type: string
        product_number:
          type: string
        rank:
          type: number
        redirects:
          additionalProperties:
            type: string
          type: object
        short_description:
          type: string
        slug:
          type: string
        slug_translations:
          additionalProperties:
            type: string
          type: object
        status:
          type: string
        tags:
          items:
            $ref: '#/components/schemas/ProductTagDTO'
          type: array
        third_party_links:
          items:
            $ref: '#/components/schemas/ThirdPartyLinkDTO'
          type: array
        updated_at:
          type: string
        variants:
          items:
            $ref: '#/components/schemas/VariantDTO'
          type: array
        videos:
          items:
            $ref: '#/components/schemas/VideoDTO'
          type: array
      type: object
    ProductDTOWithBundles:
      description: ProductDTOWithBundles extends ProductDTO to include associated bundles.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        brands:
          $ref: '#/components/schemas/ProductBrand'
        bundles:
          items:
            $ref: '#/components/schemas/BundleDTO'
          type: array
        categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.ProductCategoryDTO
          type: array
        collections:
          items:
            $ref: '#/components/schemas/ProductCollectionDTO'
          type: array
        created_at:
          type: string
        custom_fields:
          additionalProperties:
            type: string
          type: object
        description:
          type: string
        files:
          items:
            $ref: '#/components/schemas/FileDTO'
          type: array
        html_description:
          type: string
        html_short_description:
          type: string
        id:
          type: string
        images:
          items:
            $ref: '#/components/schemas/ImageDTO'
          type: array
        in_stock:
          type: boolean
        is_active:
          type: boolean
        meta_description:
          type: string
        meta_title:
          type: string
        product_name:
          type: string
        product_number:
          type: string
        rank:
          type: number
        redirects:
          additionalProperties:
            type: string
          type: object
        related_products:
          items:
            $ref: '#/components/schemas/ProductRelationsDTO'
          type: array
        short_description:
          type: string
        slug:
          type: string
        slug_translations:
          additionalProperties:
            type: string
          type: object
        status:
          type: string
        tags:
          items:
            $ref: '#/components/schemas/ProductTagDTO'
          type: array
        third_party_links:
          items:
            $ref: '#/components/schemas/ThirdPartyLinkDTO'
          type: array
        updated_at:
          type: string
        variants:
          items:
            $ref: '#/components/schemas/VariantDTO'
          type: array
        videos:
          items:
            $ref: '#/components/schemas/VideoDTO'
          type: array
      type: object
    ProductDTOWithRelatedProductSummary:
      description: ProductDTOWithBundles extends ProductDTO to related product summary
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        id:
          type: string
        image:
          type: string
        product_name:
          type: string
        product_number:
          type: string
        slug:
          type: string
        type:
          type: string
      type: object
    ProductDTOWithShortRelatedProduct:
      description: ProductDTOWithBundles extends ProductDTO to include associated bundles.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        brands:
          $ref: '#/components/schemas/ProductBrand'
        categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.ProductCategoryDTO
          type: array
        collections:
          items:
            $ref: '#/components/schemas/ProductCollectionDTO'
          type: array
        created_at:
          type: string
        custom_fields:
          additionalProperties:
            type: string
          type: object
        description:
          type: string
        files:
          items:
            $ref: '#/components/schemas/FileDTO'
          type: array
        html_description:
          type: string
        html_short_description:
          type: string
        id:
          type: string
        images:
          items:
            $ref: '#/components/schemas/ImageDTO'
          type: array
        in_stock:
          type: boolean
        is_active:
          type: boolean
        meta_description:
          type: string
        meta_title:
          type: string
        product_name:
          type: string
        product_number:
          type: string
        rank:
          type: number
        redirects:
          additionalProperties:
            type: string
          type: object
        related_products:
          items:
            $ref: '#/components/schemas/ProductDTOWithRelatedProductSummary'
          type: array
        short_description:
          type: string
        slug:
          type: string
        slug_translations:
          additionalProperties:
            type: string
          type: object
        status:
          type: string
        tags:
          items:
            $ref: '#/components/schemas/ProductTagDTO'
          type: array
        third_party_links:
          items:
            $ref: '#/components/schemas/ThirdPartyLinkDTO'
          type: array
        updated_at:
          type: string
        variants:
          items:
            $ref: '#/components/schemas/VariantDTO'
          type: array
        videos:
          items:
            $ref: '#/components/schemas/VideoDTO'
          type: array
      type: object
    ProductInventoryWithInformation:
      description: >-
        ProductInventoryWithInformation represents inventory data along with its
        warehouse information.
      properties:
        inventory_date:
          type: string
        quantity:
          type: integer
        warehouse:
          $ref: '#/components/schemas/Warehouse'
      type: object
    ProductRelationsDTO:
      description: >-
        ProductRelationsDTO represents the relationship between products in its
        data transfer object form.
      properties:
        direction:
          type: string
        id:
          type: string
        main_product:
          type: string
        products:
          items:
            $ref: '#/components/schemas/ProductDTO'
          type: array
        title:
          type: string
        type:
          type: string
      type: object
    ProductSearchResultDTO:
      description: >-
        ProductSearchResultDTO represents a lightweight search result for
        products.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        brand:
          $ref: '#/components/schemas/ProductBrand'
        id:
          type: string
        images:
          items:
            $ref: '#/components/schemas/ImageDTO'
          type: array
        prices:
          items:
            $ref: '#/components/schemas/VariantPricesDTO'
          type: array
        product_name:
          type: string
        product_number:
          type: string
        rank:
          type: number
        tags:
          items:
            $ref: '#/components/schemas/ProductTagDTO'
          type: array
        videos:
          items:
            $ref: '#/components/schemas/VideoDTO'
          type: array
      type: object
    ProductSeries:
      description: ProductSeries represents a series within a product brand.
      properties:
        name:
          type: string
        slug:
          type: string
      type: object
    ProductTagDTO:
      description: >-
        ProductTagDTO represents the data transfer object for a tag with
        simplified market information.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        created_at:
          type: string
        filterable:
          type: boolean
        id:
          type: string
        key:
          type: string
        name:
          type: string
        order:
          type: integer
        status:
          type: string
        updated_at:
          type: string
      type: object
    Redirect:
      description: >-
        Redirect represents URL redirection rules for various item types in the
        system.
      properties:
        id:
          type: string
        item_id:
          type: string
        locale:
          type: string
        new_slug:
          type: string
        old_slug:
          type: string
        redirect_type:
          type: string
      type: object
    Series:
      description: Series represents a product series within a brand.
      properties:
        cover_url:
          type: string
        description:
          type: string
        id:
          type: string
        logo_url:
          type: string
        name:
          type: string
        slug:
          type: string
      required:
        - id
        - name
        - slug
      type: object
    SeriesDTO:
      description: SeriesDTO represents the data transfer object for a series.
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
      type: object
    SeriesWithBrand:
      description: >-
        Series represents a product series within a brand which also includes
        the brand
      properties:
        brand:
          $ref: '#/components/schemas/Brand'
        cover_url:
          type: string
        description:
          type: string
        id:
          type: string
        logo_url:
          type: string
        name:
          type: string
        slug:
          type: string
      required:
        - id
        - name
        - slug
      type: object
    TagDTO:
      description: >-
        TagDTO represents the data transfer object for a tag with simplified
        market information.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        created_at:
          type: string
        filterable:
          type: boolean
        id:
          type: string
        key:
          type: string
        name:
          type: string
        status:
          type: string
        updated_at:
          type: string
      type: object
    ThirdPartyLinkDTO:
      description: >-
        ThirdPartyLinkDTO represents a third-party link in its data transfer
        object form.
      properties:
        id:
          type: string
        title:
          type: string
        type:
          type: string
        url:
          type: string
      type: object
    VariantDTO:
      description: VariantDTO represents the data transfer object for a product variant.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        custom_fields:
          additionalProperties:
            type: string
          type: object
        description:
          type: string
        dimensions:
          $ref: '#/components/schemas/Dimensions'
        id:
          type: string
        image_url:
          type: string
        images:
          items:
            $ref: '#/components/schemas/ImageDTO'
          type: array
        inventories:
          items:
            $ref: '#/components/schemas/ProductInventoryWithInformation'
          type: array
        is_active:
          type: boolean
        packaging_dimensions:
          $ref: '#/components/schemas/Dimensions'
        prices:
          items:
            $ref: '#/components/schemas/VariantPricesDTO'
          type: array
        shipping_attributes:
          items:
            type: string
          type: array
        tags:
          items:
            $ref: '#/components/schemas/TagDTO'
          type: array
        validate_stock:
          type: boolean
        variant_name:
          type: string
        variant_number:
          type: string
        videos:
          items:
            $ref: '#/components/schemas/VideoDTO'
          type: array
      type: object
    VariantDTOWithProductInfo:
      description: >-
        VariantDTOWithProductInfo extends VariantDTO to include information from
        its parent product.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        brands:
          $ref: '#/components/schemas/ProductBrand'
        categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.ProductCategoryDTO
          type: array
        collections:
          items:
            $ref: '#/components/schemas/ProductCollectionDTO'
          type: array
        created_at:
          type: string
        custom_fields:
          additionalProperties:
            type: string
          type: object
        description:
          type: string
        dimensions:
          $ref: '#/components/schemas/Dimensions'
        files:
          items:
            $ref: '#/components/schemas/FileDTO'
          type: array
        html_description:
          type: string
        html_short_description:
          type: string
        id:
          type: string
        image_url:
          type: string
        images:
          items:
            $ref: '#/components/schemas/ImageDTO'
          type: array
        inventories:
          items:
            $ref: '#/components/schemas/ProductInventoryWithInformation'
          type: array
        is_active:
          type: boolean
        meta_description:
          type: string
        meta_title:
          type: string
        packaging_dimensions:
          $ref: '#/components/schemas/Dimensions'
        parent_attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        prices:
          items:
            $ref: '#/components/schemas/VariantPricesDTO'
          type: array
        product_name:
          type: string
        product_number:
          type: string
        rank:
          type: number
        redirects:
          additionalProperties:
            type: string
          type: object
        related_variants:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.RelatedVariant
          type: array
        shipping_attributes:
          items:
            type: string
          type: array
        short_description:
          type: string
        slug:
          type: string
        slug_translations:
          additionalProperties:
            type: string
          type: object
        status:
          type: string
        tags:
          items:
            $ref: '#/components/schemas/TagDTO'
          type: array
        third_party_links:
          items:
            $ref: '#/components/schemas/ThirdPartyLinkDTO'
          type: array
        updated_at:
          type: string
        validate_stock:
          type: boolean
        variant_name:
          type: string
        variant_number:
          type: string
        videos:
          items:
            $ref: '#/components/schemas/VideoDTO'
          type: array
      type: object
    VariantPricesDTO:
      description: >-
        VariantPricesDTO extends VariantPrices with additional store group
        information.
      properties:
        channel_type:
          $ref: >-
            #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.ChannelType
        country_of_sale:
          type: string
        markets:
          items:
            $ref: '#/components/schemas/MarketPriceDTO'
          type: array
        store_group_description:
          type: string
        store_group_id:
          type: string
        store_group_name:
          type: string
        store_group_slug:
          type: string
      type: object
    VariantSearchResultDTO:
      description: >-
        VariantSearchResultDTO represents a lightweight search result for
        variants.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        brand:
          $ref: '#/components/schemas/ProductBrand'
        id:
          type: string
        images:
          items:
            $ref: '#/components/schemas/ImageDTO'
          type: array
        prices:
          items:
            $ref: '#/components/schemas/VariantPricesDTO'
          type: array
        product_id:
          type: string
        product_name:
          type: string
        product_number:
          type: string
        rank:
          type: number
        tags:
          items:
            $ref: '#/components/schemas/TagDTO'
          type: array
        variant_name:
          type: string
        variant_number:
          type: string
        videos:
          items:
            $ref: '#/components/schemas/VideoDTO'
          type: array
      type: object
    VideoDTO:
      description: VideoDTO represents the data transfer object for a video.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        description:
          type: string
        title:
          type: string
        url:
          type: string
      type: object
    Warehouse:
      description: Warehouse represents a storage facility for product inventory.
      properties:
        address:
          $ref: '#/components/schemas/Address'
        description:
          type: string
        id:
          type: string
        name:
          type: string
      type: object
    github_com_enadhq_goomba_internal_pkg_models.CategoryDTO:
      description: CategoryDTO represents the data transfer object for a category.
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        full_path_name:
          items:
            type: string
          type: array
        full_uri_translations:
          additionalProperties:
            type: string
          type: object
        id:
          type: string
        name:
          type: string
        parent_id:
          type: string
        redirects:
          additionalProperties:
            type: string
          type: object
        slug_translations:
          additionalProperties:
            type: string
          type: object
        sort_order:
          type: integer
        status:
          type: string
        sub_categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CategoryDTO
          type: array
        uri:
          type: string
      type: object
    github_com_enadhq_goomba_internal_pkg_models.ChannelType:
      enum:
        - B2B
        - B2C
      type: string
      x-enum-varnames:
        - B2B
        - B2C
    github_com_enadhq_goomba_internal_pkg_models.CollectionDTO:
      description: CollectionDTO represents the data transfer object for a collection.
      properties:
        children:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CollectionDTO
          type: array
        id:
          type: string
        parent_id:
          type: string
        title:
          type: string
        uri:
          type: string
      type: object
    github_com_enadhq_goomba_internal_pkg_models.FacetPriceRange:
      properties:
        max:
          type: number
        min:
          type: number
      type: object
    github_com_enadhq_goomba_internal_pkg_models.FacetVariantWithAttributes:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeDTO'
          type: object
        variant_name:
          type: string
        variant_number:
          type: string
      type: object
    github_com_enadhq_goomba_internal_pkg_models.FacetsResponse:
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        brands:
          items:
            $ref: '#/components/schemas/BrandDTO'
          type: array
        categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CategoryDTO
          type: array
        collections:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CollectionDTO
          type: array
        price_range:
          $ref: >-
            #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.FacetPriceRange
        series:
          items:
            $ref: '#/components/schemas/SeriesDTO'
          type: array
        tags:
          items:
            $ref: '#/components/schemas/FilterTag'
          type: array
        variant_names:
          items:
            type: string
          type: array
        variant_with_attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.FacetVariantWithAttributes
          type: array
      type: object
    github_com_enadhq_goomba_internal_pkg_models.ProductCategoryDTO:
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        full_path_name:
          items:
            type: string
          type: array
        full_uri_translations:
          additionalProperties:
            type: string
          type: object
        id:
          type: string
        name:
          type: string
        order:
          type: integer
        parent_id:
          type: string
        redirects:
          additionalProperties:
            type: string
          type: object
        slug_translations:
          additionalProperties:
            type: string
          type: object
        sort_order:
          type: integer
        status:
          type: string
        sub_categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_goomba_internal_pkg_models.CategoryDTO
          type: array
        uri:
          type: string
      type: object
    github_com_enadhq_goomba_internal_pkg_models.RelatedVariant:
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        image_url:
          type: string
        images:
          items:
            $ref: '#/components/schemas/ImageDTO'
          type: array
        inventories:
          items:
            $ref: '#/components/schemas/ProductInventoryWithInformation'
          type: array
        is_active:
          type: boolean
        prices:
          items:
            $ref: '#/components/schemas/VariantPricesDTO'
          type: array
        tags:
          items:
            $ref: '#/components/schemas/TagDTO'
          type: array
        validate_stock:
          type: boolean
        variant_id:
          type: string
        variant_name:
          type: string
        variant_number:
          type: string
        videos:
          items:
            $ref: '#/components/schemas/VideoDTO'
          type: array
      type: object
    internal_pkg_webserver_v1.SeriesWithPaginatedProducts:
      properties:
        brand:
          $ref: '#/components/schemas/Brand'
        cover_url:
          type: string
        description:
          type: string
        id:
          type: string
        logo_url:
          type: string
        name:
          type: string
        products:
          $ref: >-
            #/components/schemas/OkResponseWithPagignation-array_ProductDTOWithShortRelatedProduct
        slug:
          type: string
      required:
        - id
        - name
        - slug
      type: object
    internal_pkg_webserver_v1.TagDTOWithPaginatedProducts:
      properties:
        attributes:
          additionalProperties:
            items:
              $ref: '#/components/schemas/AttributeDTO'
            type: array
          type: object
        created_at:
          type: string
        filterable:
          type: boolean
        id:
          type: string
        key:
          type: string
        name:
          type: string
        products:
          $ref: >-
            #/components/schemas/OkResponseWithPagignation-array_ProductDTOWithShortRelatedProduct
        status:
          type: string
        updated_at:
          type: string
      type: object
