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/:team_slug/:app_slug/attributes:
    get:
      description: Fetch all attribute templates and the related attributes
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Filter on attribute templates for different type of resources
          in: query
          name: resources
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Search for attribute templates
          in: query
          name: search
          schema:
            type: string
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of  `created_at`, `name` and `type`
            (Default is `created_at`)
          in: query
          name: sort-key
          schema:
            type: string
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Filter the result on template key
          in: query
          name: template_key
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Amount of products per page. Minimum 0 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: Attributes templates and corresponding attributes
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeTemplateList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get attribute templates
      tags:
        - Attribute Templates
    post:
      description: >-
        Create an attribute template. A template is something which describe the
        structure of the attribute. For instance can you define a attribute with
        2 image fields and 1 text field. This template is later on used to
        create attributes with values which can be tied to tags, categories and
        products. It's not possible to create fields where the key is one of
        `key`, `name` and `description` as they are reserved keywords
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputAttributeTemplate
        description: Attribute data
        required: true
      responses:
        '200':
          description: Attributes
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeTemplate
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create attribute template
      tags:
        - Attribute Templates
  /api/v1/:team_slug/:app_slug/attributes/:attribute_template_key:
    delete:
      description: Delete an attribute template and its corresponding fields.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Key of the attribute template
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Attribute deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeTemplateString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete attribute template
      tags:
        - Attribute Templates
    get:
      description: Fetch all attribute templates and the related attributes
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Search for attributes within a template
          in: query
          name: search
          schema:
            type: string
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of  `created_at`, `name` and `type`
            (Default is `created_at`)
          in: query
          name: sort-key
          schema:
            type: string
      responses:
        '200':
          description: Attributes template and corresponding attributes
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeTemplate
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get attribute template
      tags:
        - Attribute Templates
    patch:
      description: >-
        Update an attribute template. If a field already exist with the key
        provided won't it be created again
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Key of the attribute template
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.UpdateAttributeTemplatePayload
        description: Attribute data
        required: true
      responses:
        '200':
          description: Attribute template
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeTemplate
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update attribute template
      tags:
        - Attribute Templates
    post:
      description: >-
        Creates an attribute using the provided template. The template fields
        will be used to validate the input. e.g if the template contains a
        `image` field will we check if the provided field is a image or not.
        This means that the input fields on this endpoint depends on the fields
        you add for the template
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                key:
                  description: >-
                    Used to update the key for the attribute. Leave blank if you
                    don't want to update the key
                  type: string
                name:
                  description: VariantName for the attribute
                  type: string
                description:
                  description: Description for the attribute
                  type: string
      responses:
        '200':
          description: Attributes
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttribute
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create attribute
      tags:
        - Attributes
  /api/v1/:team_slug/:app_slug/attributes/:attribute_template_key/:attribute_key:
    delete:
      description: Delete a attribute
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Attribute key
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Attribute, it's values and fields
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeWithFields
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete attribute
      tags:
        - Attributes
    get:
      description: Fetches single attribute, it corresponding values
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Attribute key
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Attribute, it's values and fields
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeWithFields
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get attribute
      tags:
        - Attributes
    patch:
      description: >-
        Creates an attribute using the provided template. The template fields
        will be used to validate the input. e.g if the template contains a
        `image` field will we check if the provided field is a image or not.
        This means that the input fields on this endpoint depends on the fields
        you add for the template
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Attribute key
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                key:
                  description: >-
                    Unique key for the attribute. This needs to be unique per
                    template.
                  type: string
                name:
                  description: VariantName for the attribute
                  type: string
                description:
                  description: Description for the attribute
                  type: string
      responses:
        '200':
          description: Attributes
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeWithFields
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update attribute
      tags:
        - Attributes
  /api/v1/:team_slug/:app_slug/attributes/:attribute_template_key/:attribute_key/field/:field_key:
    delete:
      description: Delete a attribute value
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Attribute key
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
        - description: Field key, e.g `size`
          in: path
          name: field_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Attribute value deleted ok response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete attribute value
      tags:
        - Attributes
  /api/v1/:team_slug/:app_slug/attributes/:attribute_template_key/:attribute_key/link/:attribute_template_key_2:/:attribute_key_2:
    delete:
      description: Removes the link between 2 attributes
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Key of the attribute template
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Key of the attribute template you want to link to
          in: path
          name: attribute_template_key_2
          required: true
          schema:
            type: string
        - description: Key of the attribute
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
        - description: Key of the attribute you want to link to
          in: path
          name: attribute_key_2
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Attribute link deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeWithFields
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete attribute link
      tags:
        - Attributes
    put:
      description: >-
        Link 1 attribute to another attribute which means that if 1 of the
        attribute is added to a product will the other one also be added
        automatically.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Key of the attribute template
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Key of the attribute template you want to link to
          in: path
          name: attribute_template_key_2
          required: true
          schema:
            type: string
        - description: Key of the attribute
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
        - description: Key of the attribute you want to link to
          in: path
          name: attribute_key_2
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Attribute link created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeWithFields
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Link attribute
      tags:
        - Attributes
  /api/v1/:team_slug/:app_slug/attributes/:attribute_template_key/:attribute_key/relationship:
    delete:
      description: >-
        Delete attribute relationship between an attribute and an item such as
        an tag or product
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Key of the attribute template
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Key of the attribute
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputAttributeRelationshipField
        description: Items IDs you want to remove a relationship with
        required: true
      responses:
        '200':
          description: Attribute relationship created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete attribute relationship
      tags:
        - Attributes
    put:
      description: >-
        Create attribute relationship between an attribute and an item such as
        an tag or product
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Key of the attribute template
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Key of the attribute
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputAttributeRelationshipField
        description: Items IDs you want to create a relationship with
        required: true
      responses:
        '200':
          description: Attribute relationship created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create attribute relationship
      tags:
        - Attributes
  /api/v1/:team_slug/:app_slug/attributes/:attribute_template_key/bulk:
    patch:
      description: >-
        Patches multiple attributes for a specific attribute template in a
        single request. Only the provided fields will be updated.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPatchAttributesPayload
        description: Attributes to patch
        required: true
      responses:
        '200':
          description: Attributes patched successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPatchAttributes
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Attribute template not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk patch attributes
      tags:
        - Attributes
        - Bulk
    post:
      description: >-
        Creates multiple attributes for a specific attribute template in a
        single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateAttributesPayload
        description: Attributes to create
        required: true
      responses:
        '200':
          description: Attributes created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateAttributes
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Attribute template not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk create attributes
      tags:
        - Attributes
        - Bulk
  /api/v1/:team_slug/:app_slug/attributes/:attribute_template_key/field:
    put:
      description: >-
        Creates or updates an attribute template field and adds it to the
        attribute template. If the key already exist will it overwrite the name
        and type of the field
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: New or updated field
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeTemplateString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create or attribute template field
      tags:
        - Attribute Template Fields
  /api/v1/:team_slug/:app_slug/attributes/:attribute_template_key/field/:attribute_template_field_key:
    delete:
      description: >-
        Delete an attribute template field. This also removes all the values
        associated with this field in attributes
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Attribute template field key
          in: path
          name: attribute_template_field_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Attribute template field deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeTemplateString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete attribute template field
      tags:
        - Attribute Template Fields
  /api/v1/:team_slug/:app_slug/attributes/bulk:
    post:
      description: Creates multiple attribute templates in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateAttributeTemplatesPayload
        description: Attribute templates to create
        required: true
      responses:
        '200':
          description: Templates created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateAttributeTemplates
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk create attribute templates
      tags:
        - Attribute Templates
        - Bulk
  /api/v1/:team_slug/:app_slug/attributes/relationships/bulk:
    delete:
      description: >-
        Deletes relationships between multiple attributes and multiple items in
        a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyAttributeRelationshipsPayload
        description: Attribute and item relationships to delete
        required: true
      responses:
        '200':
          description: Relationships removed successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkRemoveAttributeRelationships
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk remove attribute relationships
      tags:
        - Attributes
        - Bulk
    post:
      description: >-
        Creates relationships between multiple attributes and multiple items in
        a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyAttributeRelationshipsPayload
        description: Attribute and item relationships to create
        required: true
      responses:
        '200':
          description: Relationships added successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkAddAttributeRelationships
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk add attribute relationships
      tags:
        - Attributes
        - Bulk
  /api/v1/:team_slug/:app_slug/attributes/values:
    get:
      description: >-
        Fetch all attributes for the current application. Supports pagination,
        filtering by attribute template keys, and searching by attribute name.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: >-
            Filter attributes by template keys (e.g.,
            template_key=color&template_key=size)
          in: query
          name: template_key
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Search term to filter attributes by name
          in: query
          name: search
          schema:
            type: string
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of `name`, `created_at`,
            `updated_at`, `key`. Default `created_at`
          in: query
          name: sort-key
          schema:
            type: string
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Amount of attributes per page. Minimum 1 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: A list of attributes with pagination details
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseAttributeList
        '400':
          description: Invalid request (e.g., bad pagination parameters, invalid sort key)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get application attributes
      tags:
        - Attributes
  /api/v1/:team_slug/:app_slug/brands:
    get:
      description: fetches all brands
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Name of brand used for filtering
          in: query
          name: name
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
        - description: Number of items per page (max 100)
          in: query
          name: per-page
          schema:
            type: integer
        - description: What key to sort on. One of name, created_at or updated_at
          in: query
          name: sort-key
          schema:
            type: string
        - description: Sort order, one of desc or asc
          in: query
          name: sort-order
          schema:
            type: string
      responses:
        '200':
          description: Brands returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.BrandResponse'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: fetches all brands
      tags:
        - Brands
    post:
      description: Creates a brand
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.BrandRequest'
      responses:
        '200':
          description: Brand created succesfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.BrandResponse'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create brand
      tags:
        - Brands
  /api/v1/:team_slug/:app_slug/brands/:brand_id:
    delete:
      description: deletes a brand
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: brand_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Brand deleted succesfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMessage
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: deletes a brand
      tags:
        - Brands
    get:
      description: fetches a brand
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: brand_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Brand returned succesfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.BrandResponse'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: fetches a brand
      tags:
        - Brands
    put:
      description: updats a brand
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: brand_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.BrandRequest'
      responses:
        '200':
          description: Brand updated succesfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.BrandResponse'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: updates a brand
      tags:
        - Brands
  /api/v1/:team_slug/:app_slug/brands/:brand_id/series:
    get:
      description: retrieves all series of a brand
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: brand_id
          required: true
          schema:
            type: string
        - description: Name of series used for filtering
          in: query
          name: name
          schema:
            type: string
      responses:
        '200':
          description: Series retrieved succesfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.SeriesResponseList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: retrieves all series of a brand
      tags:
        - Brands
    post:
      description: creates a series of a brand
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: brand_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.BrandSeriesRequest
      responses:
        '200':
          description: Series created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.SeriesResponse'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: creates a series of a brand
      tags:
        - Brands
  /api/v1/:team_slug/:app_slug/brands/:brand_id/series/:series_id:
    delete:
      description: >-
        Deletes a series of a brand. All product linked to the series, will be
        moved to the parent (brand)
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: brand_id
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: series_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Series deleted succesfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMessage
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Deletes a series of a brand
      tags:
        - Brands
    get:
      description: retrives a series of a brand
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: brand_id
          required: true
          schema:
            type: string
        - description: Id of series
          in: path
          name: series_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Series retrieved succesfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.SeriesResponse'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: retrives a series of a brand
      tags:
        - Brands
    put:
      description: updates a series of a brand
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: brand_id
          required: true
          schema:
            type: string
        - description: Id of brand
          in: path
          name: series_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.BrandSeriesRequest
      responses:
        '200':
          description: Series updated succesfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.SeriesResponse'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: updates a series of a brand
      tags:
        - Brands
  /api/v1/:team_slug/:app_slug/bundle-groups:
    get:
      description: Lists all product bundle groups which exists in the app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Search on bundle group name
          in: query
          name: search
          schema:
            type: string
      responses:
        '200':
          description: Product bundle group lists
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroupList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get all product bundle groups
      tags:
        - Product Bundle Groups
    post:
      description: Creates a product bundle group and applies the provided discounts
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateProductBundleGroupPayload
        description: Product bundle group data
        required: true
      responses:
        '200':
          description: Product created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create product bundle group
      tags:
        - Product Bundle Groups
  /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id:
    delete:
      description: Delete product bundle group
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle group UUID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Bundle deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroupDeleted
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete product bundle group
      tags:
        - Product Bundle Groups
    get:
      description: Get product bundle group
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle group UUID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
        - description: Search on bundle name
          in: query
          name: search
          schema:
            type: string
      responses:
        '200':
          description: Product bundle group
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get product bundle group
      tags:
        - Product Bundle Groups
    patch:
      description: Updates a product bundle group
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle group UUID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.CreateProductBundlePayload
      responses:
        '200':
          description: Product created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update product bundle group
      tags:
        - Product Bundle Groups
  /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id/bundles:
    post:
      description: >-
        Creates a product bundle and adds it to the bundle group. Product
        bundles are treated as normal products in different channels
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle group id
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.CreateProductBundlePayload
      responses:
        '200':
          description: Product bundle created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundle
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create product bundle
      tags:
        - Product Bundles
  /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id/bundles/:bundle_id:
    delete:
      description: Delete product bundle
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle group UUID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
        - description: Product bundle UUID
          in: path
          name: product_bundle_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Bundle deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleDeleted
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete product bundle
      tags:
        - Product Bundles
    get:
      description: Get product bundle
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle UUID
          in: path
          name: product_bundle_id
          required: true
          schema:
            type: string
        - description: Product bundle group UUID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundle
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get product bundle
      tags:
        - Product Bundles
    patch:
      description: Updates a product bundle
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle group id
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.CreateProductBundlePayload
      responses:
        '200':
          description: Product bundle created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundle
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Updates product bundle
      tags:
        - Product Bundles
  /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id/bundles/:bundle_id/rules:
    get:
      description: Gets all bundle rules for a specified bundle
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Bundle ID
          in: path
          name: bundle_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of bundle rules
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleRules
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Bundle not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get all bundle rules
      tags:
        - Bundle Rules
    post:
      description: Creates a new bundle rule with specified products and discount settings
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Bundle ID
          in: path
          name: bundle_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateBundleRulePayload
        description: Bundle rule configuration
        required: true
      responses:
        '200':
          description: Bundle rule created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleRule
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Bundle not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create bundle rule
      tags:
        - Bundle Rules
  /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id/bundles/:bundle_id/rules/:rule_id:
    delete:
      description: Deletes an existing bundle rule
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Rule ID
          in: path
          name: rule_id
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Bundle rule deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.Message'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Bundle rule not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete bundle rule
      tags:
        - Bundle Rules
    get:
      description: Gets a bundle rule by ID
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Rule ID
          in: path
          name: rule_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Bundle rule
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleRule
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Bundle rule not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get bundle rule
      tags:
        - Bundle Rules
    put:
      description: >-
        Updates an existing bundle rule with specified products and discount
        settings
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Rule ID
          in: path
          name: rule_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.UpdateBundlePayload
        description: Bundle rule configuration
        required: true
      responses:
        '200':
          description: Bundle rule updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleRule
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Bundle rule not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update bundle rule
      tags:
        - Bundle Rules
  /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id/markets/:market_slug:
    delete:
      deprecated: true
      description: Removed market from product bundle group
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle group ID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated product bundle group
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove market from product bundle group
      tags:
        - Product Bundle Groups
      x-alt-ref:
        endpoint: >-
          DELETE
          /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id/store-groups/:store_group/markets/:market_slug
    put:
      deprecated: true
      description: >-
        Adds a sales market to the product bundle group. The market is used to
        let other systems know which makrets the bundle is available in
      parameters:
        - description: Product bundle group ID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated product
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add market to product bundle group
      tags:
        - Product Bundle Groups
      x-alt-ref:
        endpoint: >-
          PUT
          /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id/store-groups/:store_group/markets/:market_slug
  /api/v1/:team_slug/:app_slug/bundle-groups/:bundle_group_id/store-groups/:store_group/markets/:market_slug:
    delete:
      description: Removed store group market from product bundle group
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product bundle group ID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
        - description: Store group slug
          in: path
          name: store_group
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated product bundle group
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove store group market from product bundle group
      tags:
        - Product Bundle Groups
    put:
      description: >-
        Adds a sales store group market to the product bundle group. The market
        is used to let other systems know which makrets the bundle is available
        in
      parameters:
        - description: Product bundle group ID
          in: path
          name: product_bundle_group_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
        - description: Store group slug
          in: path
          name: store_group
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated product
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductBundleGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add store group market to product bundle group
      tags:
        - Product Bundle Groups
  /api/v1/:team_slug/:app_slug/categories:
    get:
      description: Lists all categories
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Search on category name
          in: query
          name: search
          schema:
            type: string
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Amount of products per page. Minimum 0 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of `name`, `sort_order`,
            `created-at`, `updated-at` (Default is `created-at`)
          in: query
          name: sort-key
          schema:
            type: string
      responses:
        '200':
          description: Categories list
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseCategoryList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Lists all categories
      tags:
        - Categories
    post:
      description: Creates a category
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputCategory'
        description: Category data
        required: true
      responses:
        '200':
          description: The category
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseCategory
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create category
      tags:
        - Categories
  /api/v1/:team_slug/:app_slug/categories/:category_id:
    delete:
      description: Deletes a category
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Category ID
          in: path
          name: category_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The category
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseCategoryRemove
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Deletes a category
      tags:
        - Categories
    get:
      description: Get a category
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Category ID
          in: path
          name: category_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The category
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseCategory
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get a category
      tags:
        - Categories
    patch:
      description: >-
        Updates a category, only updates the information that is given. But if
        no parent ID is givent, it will be set as null and be interpeted as a
        root category
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Category ID
          in: path
          name: category_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputUpdateCategory
        description: Category data
        required: true
      responses:
        '200':
          description: The category
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseCategory
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update category
      tags:
        - Categories
  /api/v1/:team_slug/:app_slug/categories/:category_id/products:
    get:
      description: Gets products from a category
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID for category
          in: path
          name: category_id
          required: true
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
        - description: Number of items per page
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: Got a list of all products from category
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets products from a category
      tags:
        - Categories
  /api/v1/:team_slug/:app_slug/categories/bulk:
    delete:
      description: >-
        Deletes multiple categories by their IDs. This is a recursive operation
        and will delete all children of the given categories.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteCategoriesPayload
        description: Category IDs to delete
        required: true
      responses:
        '200':
          description: Categories deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteCategories
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete categories
      tags:
        - Categories
        - Bulk
    patch:
      description: Updates multiple categories in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPatchCategoriesPayload
        description: Categories data to update
        required: true
      responses:
        '200':
          description: Categories updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPatchCategories
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk update categories
      tags:
        - Categories
        - Bulk
    post:
      description: Creates multiple categories in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateCategoriesPayload
        description: Categories data to create
        required: true
      responses:
        '201':
          description: Categories created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateCategories
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk create categories
      tags:
        - Categories
        - Bulk
  /api/v1/:team_slug/:app_slug/categories/products/bulk:
    delete:
      description: Removes multiple products from multiple categories.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyCategoryProductsPayload
        description: Product and category relationships to delete
        required: true
      responses:
        '200':
          description: Products removed from categories successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkRemoveProductsFromCategories
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk remove products from categories
      tags:
        - Categories
        - Bulk
    post:
      description: Adds multiple products to multiple categories.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyCategoryProductsPayload
        description: Product and category relationships to create
        required: true
      responses:
        '200':
          description: Products added to categories successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkAddProductsToCategories
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk add products to categories
      tags:
        - Categories
        - Bulk
  /api/v1/:team_slug/:app_slug/categories/tree:
    get:
      description: >-
        Gets the hierarchical category tree structure for an app, with
        parent-child relationships
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of `name`, `sort_order`,
            `created_at`, `updated_at` (Default is `created-at`)
          in: query
          name: sort-key
          schema:
            type: string
      responses:
        '200':
          description: Categories tree
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseCategoryList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets the category tree of an app
      tags:
        - Categories
  /api/v1/:team_slug/:app_slug/collections:
    delete:
      description: Delete a collection
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of collection
          in: path
          name: collection_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Collection deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.CollectionStringResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete a collection
      tags:
        - Collections
    get:
      description: Gets all collections for the app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of collection
          in: path
          name: collection_id
          required: true
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
        - description: Number of items per page
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: All collections for the app
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.CollectionsResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets all collections for the app
      tags:
        - Collections
    patch:
      description: Updates a collection
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.PatchCollectionBody
        description: Collection data
        required: true
      responses:
        '200':
          description: Collection updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.FullCollectionResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Updates a collection
      tags:
        - Collections
    post:
      description: Create a collection
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.CollectionRequest'
        description: Collection data
        required: true
      responses:
        '200':
          description: Collection created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.FullCollectionResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create a collection
      tags:
        - Collections
  /api/v1/:team_slug/:app_slug/collections/:collection_id:
    get:
      description: Gets a collection based on id
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of collection
          in: path
          name: collection_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Collection updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.FullCollectionResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets a collection
      tags:
        - Collections
  /api/v1/:team_slug/:app_slug/collections/:collection_id/products:
    delete:
      description: Deletes products from a collection
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of collection
          in: path
          name: collection_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CollectionProductRequest
        description: Product IDs to delete
        required: true
      responses:
        '200':
          description: Collection updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.CollectionStringResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Deletes products from a collection
      tags:
        - Collections
    get:
      description: Gets products from a collection
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: slug for collection
          in: path
          name: collection_slug
          required: true
          schema:
            type: string
        - description: 'Flag for if products of children should be included '
          in: query
          name: children
          schema:
            type: boolean
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
        - description: Number of items per page
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: Got a list of all products from collection
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets products from a collection
      tags:
        - Collections
    put:
      description: Adds products to a collection
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of collection
          in: path
          name: collection_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CollectionProductRequest
        description: Product IDs to add
        required: true
      responses:
        '200':
          description: Collection updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.CollectionStringResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Adds products to a collection
      tags:
        - Collections
  /api/v1/:team_slug/:app_slug/collections/bulk:
    delete:
      description: Deletes multiple collections by their IDs.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteCollectionsPayload
        description: Collection IDs to delete
        required: true
      responses:
        '200':
          description: Collections deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteCollections
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete collections
      tags:
        - Collections
        - Bulk
    patch:
      description: Updates multiple collections in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPatchCollectionsPayload
        description: Collections data to update
        required: true
      responses:
        '200':
          description: Collections updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPatchCollections
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk update collections
      tags:
        - Collections
        - Bulk
    post:
      description: Creates multiple collections in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateCollectionsPayload
        description: Collections data to create
        required: true
      responses:
        '201':
          description: Collections created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateCollections
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk create collections
      tags:
        - Collections
        - Bulk
  /api/v1/:team_slug/:app_slug/collections/products/bulk:
    delete:
      description: Removes multiple products from multiple collections.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyCollectionProductsPayload
        description: Product and collection relationships to delete
        required: true
      responses:
        '200':
          description: Products removed from collections successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkRemoveProductsFromCollections
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk remove products from collectionss
      tags:
        - Collections
        - Bulk
    post:
      description: Adds multiple products to multiple collections.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyCollectionProductsPayload
        description: Product and collection relationships to create
        required: true
      responses:
        '200':
          description: Products added to collections successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkAddProductsToCollections
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk add products to collections
      tags:
        - Collections
        - Bulk
  /api/v1/:team_slug/:app_slug/collections/tree:
    get:
      description: Gets all collections as a tree
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: All collections for the app
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.CollectionsResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets all collections as a tree
      tags:
        - Collections
  /api/v1/:team_slug/:app_slug/dam/files/:file_id/folder:
    put:
      description: Sets or updates the folder_id for a file
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: File ID
          in: path
          name: file_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SetMediaFolderRequest
      responses:
        '200':
          description: File folder updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSingleItem-bool
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Set File Folder
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/folders:
    get:
      description: Lists all folders with pagination and counts
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: 'Page number (default: 1)'
          in: query
          name: page
          schema:
            type: integer
        - description: 'Items per page (default: 100)'
          in: query
          name: per-page
          schema:
            type: integer
        - description: 'Sort key: name, created_at, updated_at (default: created_at)'
          in: query
          name: sort-key
          schema:
            type: string
        - description: 'Sort order: asc, desc (default: desc)'
          in: query
          name: sort-order
          schema:
            type: string
      responses:
        '200':
          description: Folders retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFolders
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List Folders (Flat)
      tags:
        - DAM
    post:
      description: Creates a new folder with automatic slug generation
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateFolderRequest
        description: Folder details
        required: true
      responses:
        '201':
          description: Folder created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFolder
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create Folder
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/folders/:folder_id:
    delete:
      description: Deletes a folder (CASCADE deletes subfolders, SET NULL for media)
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Folder ID
          in: path
          name: folder_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Folder deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSingleItem-bool
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Folder not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete Folder
      tags:
        - DAM
    get:
      description: Retrieves a single folder with media counts
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Folder ID
          in: path
          name: folder_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Folder retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFolder
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Folder not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get Folder
      tags:
        - DAM
    patch:
      description: Updates a folder's name (slug remains unchanged)
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Folder ID
          in: path
          name: folder_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.UpdateFolderRequest
        description: Folder details
        required: true
      responses:
        '200':
          description: Folder updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFolder
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Folder not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update Folder
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/folders/:folder_id/items/bulk:
    put:
      description: >-
        Sets or updates the folder_id for multiple media items (images, videos,
        files)
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Folder ID
          in: path
          name: folder_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkSetMediaFolderRequest
        description: Items to move
        required: true
      responses:
        '200':
          description: Items moved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSingleItem-string
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk Set Media Folder
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/folders/:folder_id/media:
    get:
      description: >-
        Retrieves all media (images, videos, files) for a specific folder with
        pagination
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Folder ID
          in: path
          name: folder_id
          required: true
          schema:
            type: string
        - description: 'Filter on status. Valid status: active, inactive, pending, draft'
          in: query
          name: status
          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 by media type: image, video, or file'
          in: query
          name: type
          schema:
            type: string
      responses:
        '200':
          description: Media retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFolderMedia
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get Folder Media
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/folders/:folder_id/roles/:role_id:
    delete:
      description: Removes a role from a folder
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Folder ID
          in: path
          name: folder_id
          required: true
          schema:
            type: string
        - description: Role ID
          in: path
          name: role_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Role removed successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSingleItem-bool
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Role not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove Role from Folder
      tags:
        - DAM
    put:
      description: Adds a role to a folder for access control
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Folder ID
          in: path
          name: folder_id
          required: true
          schema:
            type: string
        - description: Role ID
          in: path
          name: role_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Role added successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSingleItem-bool
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add Role to Folder
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/folders/:folder_id/tree:
    get:
      description: Retrieves a folder tree starting from a specific folder
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Folder ID
          in: path
          name: folder_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Folder tree retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFolderTreeItem
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Folder not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get Folder Tree from Path
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/folders/tree:
    get:
      description: Retrieves the complete folder tree with counts
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Folder tree retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFolderTree
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get Folder Hierarchy Tree
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/images/:image_id/folder:
    put:
      description: Sets or updates the folder_id for an image
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SetMediaFolderRequest
      responses:
        '200':
          description: Image folder updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSingleItem-bool
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Set Image Folder
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/shareable-links:
    get:
      description: Lists all shareable links with pagination
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          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 by folder ID
          in: query
          name: folder-id
          schema:
            type: string
      responses:
        '200':
          description: Shareable links retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseShareableLinks
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List Shareable Links
      tags:
        - DAM
    post:
      description: Creates a new shareable link with optional expiration
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateShareableLinkRequest
        description: Shareable link details
        required: true
      responses:
        '201':
          description: Shareable link created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseShareableLink
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create Shareable Link
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/shareable-links/:link_id:
    delete:
      description: Deletes a shareable link and all associated resources
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Shareable link ID
          in: path
          name: link_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Shareable link deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSingleItem-bool
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Shareable link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete Shareable Link
      tags:
        - DAM
    get:
      description: >-
        Retrieves a single shareable link with full details of all associated
        folders, images, videos, and files
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Shareable link ID
          in: path
          name: link_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Shareable link retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseShareableLinkWithResources
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Shareable link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get Shareable Link
      tags:
        - DAM
    patch:
      description: Updates the description and/or expiration date of a shareable link
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Shareable link ID
          in: path
          name: link_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.UpdateShareableLinkRequest
        description: Update details
        required: true
      responses:
        '200':
          description: Shareable link updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseShareableLink
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Shareable link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update Shareable Link
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/shareable-links/:link_id/resources:
    delete:
      description: >-
        Removes multiple folders, images, videos, and files from a shareable
        link in one request
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Shareable link ID
          in: path
          name: link_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.RemoveResourcesFromShareableLinkRequest
        description: Resources to remove
        required: true
      responses:
        '200':
          description: Resources removed successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseShareableLink
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Shareable link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove Resources from Shareable Link
      tags:
        - DAM
    post:
      description: >-
        Adds multiple folders, images, videos, and files to a shareable link in
        one request
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Shareable link ID
          in: path
          name: link_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.AddResourcesToShareableLinkRequest
        description: Resources to add
        required: true
      responses:
        '200':
          description: Resources added successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseShareableLink
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Shareable link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add Resources to Shareable Link
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/dam/videos/:video_id/folder:
    put:
      description: Sets or updates the folder_id for a video
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Video ID
          in: path
          name: video_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SetMediaFolderRequest
      responses:
        '200':
          description: Video folder updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSingleItem-bool
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Set Video Folder
      tags:
        - DAM
  /api/v1/:team_slug/:app_slug/drafts:
    get:
      description: Lists all product drafts for the app with pagination
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
            default: 1
        - description: Items per page
          in: query
          name: per-page
          schema:
            type: integer
            default: 20
      responses:
        '200':
          description: Drafts retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductDraftList
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List product drafts
      tags:
        - Product Drafts
  /api/v1/:team_slug/:app_slug/files:
    get:
      description: Get all files for an app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of `title`,  `type`, `created_at`,
            `updated_at` (Default is `created-at`)
          in: query
          name: sort-key
          schema:
            type: string
      responses:
        '200':
          description: Files retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseFiles'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List Files
      tags:
        - Files
    put:
      description: Uploads a file
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/putApiV1_teamSlug_appSlugFiles'
      responses:
        '200':
          description: file uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseFile'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Upload File
      tags:
        - Files
  /api/v1/:team_slug/:app_slug/files/:file_id:
    delete:
      description: Delete a file and its relationships
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: File ID
          in: path
          name: file_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: File deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFileString
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: File not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete File
      tags:
        - Files
    get:
      description: Get a single file by ID
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: File ID
          in: path
          name: file_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: File retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFileWithReferences
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: File not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get File
      tags:
        - Files
    patch:
      description: Update a file's metadata
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: File ID
          in: path
          name: file_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/putApiV1_teamSlug_appSlugFiles'
      responses:
        '200':
          description: File updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseFile'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: File not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update File
      tags:
        - Files
  /api/v1/:team_slug/:app_slug/files/:file_id/relationships/:item_id:
    delete:
      description: Remove a relationship between a file and an item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: File ID
          in: path
          name: file_id
          required: true
          schema:
            type: string
        - description: Item ID
          in: path
          name: item_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relationship deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFileString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete File Relationship
      tags:
        - Files
    put:
      description: Create a relationship between a file and an item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: File ID
          in: path
          name: file_id
          required: true
          schema:
            type: string
        - description: Item ID
          in: path
          name: item_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relationship created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseFileString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add File Relationship
      tags:
        - Files
  /api/v1/:team_slug/:app_slug/images:
    get:
      description: Fetches all images associated with a app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Filter by attribute
          in: query
          name: attribute
          schema:
            type: string
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of  `created_at`, `updated_at`,
            `title`, and `alt` (Default is `created_at`)
          in: query
          name: sort-key
          schema:
            type: string
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Amount of products per page. Minimum 0 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: List of app images
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseImages
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Retrieve all images
      tags:
        - Images
    put:
      description: >-
        Upload an image by either URL or file. If both a URL and file are
        provided, the URL will be used over the file. A URL can be provided
        without a file, and vice versa.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: >-
            Try to connect the image to a product or variant using the filename.
            If filename matches an existing product or variant do we connect it.
            We do also allow decide priority when connect_to_sku is true. The
            format for the filenames is sku_priority.extension and if the format
            don't match sku_priority(e.g sku.jpeg) do we fallback to priority 10
          in: query
          name: connect_to_sku
          schema:
            type: boolean
        - description: >-
            Try to connect the image to a product usign the filename. If
            filename matches an existing product do we connect it. We do also
            allow decide priority when connect_to_sku is true. The format for
            the filenames is slug_priority.extension and if the format don't
            match slug_priority(e.g slug.jpeg) do we fallback to priority 10
          in: query
          name: connect_to_slug
          schema:
            type: boolean
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                title:
                  description: Image title
                  type: string
                alt:
                  description: Alternative image text
                  type: string
                copyright:
                  description: Image copyright text
                  type: string
                image:
                  description: Image file to upload
                  type: string
                  format: binary
                url:
                  description: Url to source file. Url will be used if provided over file
                  type: string
                status:
                  description: Status for image. One of `active`, `inactive`, `draft`
                  type: string
                filename:
                  description: Custom filename (without extension)
                  type: string
                blurhash:
                  description: >-
                    Optional precomputed blurhash. If provided, generation is
                    skipped
                  type: string
                parent_id:
                  description: Parent image ID
                  type: string
      responses:
        '200':
          description: Image uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseImage'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Upload  image
      tags:
        - Images
  /api/v1/:team_slug/:app_slug/images/:image_id:
    delete:
      description: Removes a specific image from the image gallery
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Image deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseImageString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete a image
      tags:
        - Images
    get:
      description: Fetches a single
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Got image
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseImage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Retrieve image
      tags:
        - Images
    patch:
      description: Updates an image
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.UpdateImageMetadata
        description: Image data
        required: true
        x-s2o-overloaded: true
      responses:
        '200':
          description: Image updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseImage'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update an image
      tags:
        - Images
      x-s2o-warning: >-
        Operation patch:/api/v1/:team_slug/:app_slug/images/:image_id has
        multiple requestBodies
  /api/v1/:team_slug/:app_slug/images/:image_id/relationship:
    delete:
      description: Delete a image relationship between a product, variant or attribute
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.DeleteItemImageRelationship
        description: Image relationship data
        required: true
      responses:
        '200':
          description: Image deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseImageString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete image relationship
      tags:
        - Images
    put:
      description: Create a new image relationship between a product or variant
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.AddImageRelationship
        description: Image relationship data
        required: true
      responses:
        '200':
          description: Image deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseImageString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create image relationship
      tags:
        - Images
  /api/v1/:team_slug/:app_slug/images/{image_id}/relationships/bulk:
    delete:
      description: Removes relationships between an image and multiple items.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkRemoveImageRelationshipsPayload
        description: Items to unlink from the image
        required: true
      responses:
        '200':
          description: Relationships removed successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkRemoveImageRelationships
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Image not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk remove image relationships
      tags:
        - Images
        - Bulk
    put:
      description: >-
        Adds relationships between an image and multiple items (products or
        variants).
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkAddImageRelationshipsPayload
        description: Items to link to the image
        required: true
      responses:
        '200':
          description: Relationships added successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkAddImageRelationships
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Image not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk add image relationships
      tags:
        - Images
        - Bulk
  /api/v1/:team_slug/:app_slug/images/bulk:
    delete:
      description: Deletes multiple images by their IDs.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteImagesPayload
        description: Image IDs to delete
        required: true
      responses:
        '200':
          description: Images deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteImages
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete images
      tags:
        - Images
        - Bulk
    post:
      description: Uploads multiple images from base64 encoded strings or URLs.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkUploadImagesPayload
        description: Images to upload
        required: true
      responses:
        '200':
          description: Images uploaded successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkUploadImages
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk upload images
      tags:
        - Images
        - Bulk
  /api/v1/:team_slug/:app_slug/logs/:item_id:
    get:
      description: Fetch all history logs for a item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Item ID. e.g product UUID
          in: path
          name: item_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Logs
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSchedulingList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get items logs
      tags:
        - Logs
  /api/v1/:team_slug/:app_slug/markets:
    get:
      description: Fetch all markets which is exist in an app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Full market list
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMarketList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all markets
      tags:
        - Markets
    post:
      description: Creates a market
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputMarket'
      responses:
        '200':
          description: Market created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMarket
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create market
      tags:
        - Markets
  /api/v1/:team_slug/:app_slug/markets/:market_slug:
    delete:
      description: Deletes a market and it's relationships to products
      parameters:
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Market deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMarketDeleted
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete market
      tags:
        - Markets
    get:
      description: Gets a single market
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Market
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMarket
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get Market
      tags:
        - Markets
    patch:
      description: Update a market
      parameters:
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputMarket'
      responses:
        '200':
          description: Market created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMarket
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update market
      tags:
        - Markets
  /api/v1/:team_slug/:app_slug/omnichannels:
    post:
      description: >-
        Creates or updates an omnichannel entry for a given parent (product,
        category, etc.).
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.CreateOmniChannel'
        description: Omnichannel data
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_Omnichannel
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      summary: Create or update an omnichannel entry
      tags:
        - Omnichannels
  /api/v1/:team_slug/:app_slug/omnichannels/{omnichannel_id}:
    delete:
      description: Deletes an omnichannel entry.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Omnichannel ID
          in: path
          name: omnichannel_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      summary: Delete an omnichannel entry
      tags:
        - Omnichannels
    patch:
      description: Updates an omnichannel entry.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Omnichannel ID
          in: path
          name: omnichannel_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.UpdateOmniChannel'
        description: Omnichannel data
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_Omnichannel
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      summary: Patch an omnichannel entry
      tags:
        - Omnichannels
  /api/v1/:team_slug/:app_slug/omnichannels/{parent_id}:
    get:
      description: >-
        Gets all omnichannel entries for a given parent (product, category,
        etc.).
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Parent ID
          in: path
          name: parent_id
          required: true
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
        - description: Items per page
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseList-array_github_com_enadhq_nabbit_internal_pkg_webserver_models_Omnichannel
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      summary: Get all omnichannel entries for a parent
      tags:
        - Omnichannels
  /api/v1/:team_slug/:app_slug/omnichannels/all:
    get:
      description: Gets all omnichannel entries for a given app, grouped by product.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
        - description: Items per page
          in: query
          name: per_page
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseList-array_github_com_enadhq_nabbit_internal_pkg_webserver_models_OmnichannelProduct
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      summary: Get all omnichannel entries for an app
      tags:
        - Omnichannels
  /api/v1/:team_slug/:app_slug/omnichannels/bulk:
    patch:
      description: Updates multiple omnichannel entries in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPatchOmnichannelsPayload
        description: Omnichannels data to update
        required: true
      responses:
        '200':
          description: Omnichannels updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPatchOmnichannels
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      summary: Bulk update omnichannels
      tags:
        - Omnichannels
        - Bulk
    post:
      description: Creates or updates multiple omnichannel entries in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateOmnichannelsPayload
        description: Omnichannels data to create
        required: true
      responses:
        '201':
          description: Omnichannels created/updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateOmnichannels
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      summary: Bulk create omnichannels
      tags:
        - Omnichannels
        - Bulk
  /api/v1/:team_slug/:app_slug/orders:
    get:
      description: Returns a paginated list of all orders for the app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
            default: 1
        - description: Items per page
          in: query
          name: per-page
          schema:
            type: integer
            default: 20
        - description: Search query
          in: query
          name: search
          schema:
            type: string
      responses:
        '200':
          description: Orders retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseList-array_internal_pkg_webserver_v1_OrderResponse
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List orders
      tags:
        - Orders
    post:
      description: >-
        Creates a new order with the specified order lines. Validates that
        products and variants exist.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputCreateOrder'
        description: Order data
        required: true
      responses:
        '201':
          description: Order created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrderResponse
        '400':
          description: Invalid request (validation error, product/variant not found)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create order
      tags:
        - Orders
  /api/v1/:team_slug/:app_slug/orders/:order_id:
    delete:
      description: >-
        Soft deletes an order by changing its status to 'cancelled'. Order
        remains retrievable.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Order cancelled successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_MessageResponse
        '400':
          description: Invalid order ID format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete order
      tags:
        - Orders
    get:
      description: Returns detailed information about a specific order
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Order retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrderResponse
        '400':
          description: Invalid order ID format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get order by ID
      tags:
        - Orders
    patch:
      description: Updates order fields and optionally replaces all order lines
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputUpdateOrder'
        description: Order update data
        required: true
      responses:
        '200':
          description: Order updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrderResponse
        '400':
          description: Invalid request (validation error, product/variant not found)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update order
      tags:
        - Orders
  /api/v1/:team_slug/:app_slug/orders/:order_id/history:
    get:
      description: >-
        Returns a chronological list of all changes made to an order including
        status transitions
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Order history retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-array_internal_pkg_webserver_v1_OrderHistoryResponse
        '400':
          description: Invalid order ID format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get order history
      tags:
        - Orders
  /api/v1/:team_slug/:app_slug/orders/:order_id/lines:
    get:
      description: Returns all order lines with enriched product and variant information
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Order lines retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-array_internal_pkg_webserver_v1_OrderLineResponse
        '400':
          description: Invalid order ID format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get order lines
      tags:
        - Orders
    post:
      description: >-
        Adds a new order line to an existing order. Validates that the product
        and variant exist.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrderLine'
        description: Order line data
        required: true
      responses:
        '201':
          description: Order line created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrderLineResponse
        '400':
          description: Invalid request (validation error, product/variant not found)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create order line
      tags:
        - Orders
  /api/v1/:team_slug/:app_slug/orders/:order_id/lines/:line_id:
    delete:
      description: Deletes an order line from an existing order
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
        - description: Order line ID (UUID)
          in: path
          name: line_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Order line deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_MessageResponse
        '400':
          description: Invalid request (line doesn't belong to order)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order or order line not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete order line
      tags:
        - Orders
    patch:
      description: >-
        Updates an existing order line. Validates that the product and variant
        exist.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
        - description: Order line ID (UUID)
          in: path
          name: line_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrderLine'
        description: Order line update data
        required: true
      responses:
        '200':
          description: Order line updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrderLineResponse
        '400':
          description: >-
            Invalid request (validation error, product/variant not found, line
            doesn't belong to order)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order or order line not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update order line
      tags:
        - Orders
  /api/v1/:team_slug/:app_slug/orders/:order_id/status:
    patch:
      description: >-
        Updates the order status and creates a history entry tracking the
        transition
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Order ID (UUID)
          in: path
          name: order_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputUpdateOrderStatus
        description: Status update data
        required: true
      responses:
        '200':
          description: Order status updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrderResponse
        '400':
          description: Invalid request (validation error, invalid status)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update order status
      tags:
        - Orders
  /api/v1/:team_slug/:app_slug/orders/merchant-user/:user_id:
    get:
      description: Returns a paginated list of all orders associated with a merchant user
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Merchant user ID (UUID)
          in: path
          name: user_id
          required: true
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
            default: 1
        - description: Items per page
          in: query
          name: limit
          schema:
            type: integer
            default: 20
      responses:
        '200':
          description: Orders retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseList-array_internal_pkg_webserver_v1_OrderResponse
        '400':
          description: Invalid user ID format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Merchant user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List merchant user orders
      tags:
        - Orders
  /api/v1/:team_slug/:app_slug/orders/metrics:
    get:
      description: >-
        Returns hourly or daily sales metrics with order counts aggregated by
        currency for a given date range
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Start date (YYYY-MM-DD)
          in: query
          name: start_date
          required: true
          schema:
            type: string
        - description: End date (YYYY-MM-DD)
          in: query
          name: end_date
          required: true
          schema:
            type: string
        - description: Granularity of the metrics (hour, day)
          in: query
          name: granularity
          schema:
            type: string
      responses:
        '200':
          description: Sales metrics with order counts retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_SalesMetricsDataResponse
        '400':
          description: Invalid date format or missing parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get sales metrics
      tags:
        - Orders
  /api/v1/:team_slug/:app_slug/products:
    get:
      description: Returns a list of products for the application.
      parameters:
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Amount of products per page. Minimum 0 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Filter by category URI
          in: query
          name: categories
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by collection URI
          in: query
          name: collections
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Filter by attributes. The format should be
            `template_key/attribute_key`. e.g `colors/black`
          in: query
          name: attributes
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by brand name
          in: query
          name: brands
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Filter by market slugs (commercial availability - products with
            variant prices in these markets)
          in: query
          name: markets
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Search on product name
          in: query
          name: search
          schema:
            type: string
        - description: >-
            Filter by exact product number/SKU (case-insensitive, supports
            multiple values)
          in: query
          name: product-number
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Search by status, active | inactive | draft | incomplete
          in: query
          name: status
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of `product-name`, `product-number`,
            `created-at`, `updated-at`, `status`, `category`, `tag`,
            `collection`. (Default is `created_at`). When sorting by `category`,
            `tag`, or `collection` order, you must also filter by a single
            corresponding item.
          in: query
          name: sort-key
          schema:
            type: string
        - description: Filter by tag keys
          in: query
          name: tags
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Only show products which don't follow the publishing rules for the
            specific app
          in: query
          name: dont-match-publishing-rules
          schema:
            type: boolean
        - description: ISO 8601 date. Fetch products created before this date.
          in: query
          name: created-at-before
          schema:
            type: string
        - description: ISO 8601 date. Fetch products created after this date.
          in: query
          name: created-at-after
          schema:
            type: string
        - description: ISO 8601 date. Fetch products updated before this date.
          in: query
          name: updated-at-before
          schema:
            type: string
        - description: ISO 8601 date. Fetch products updated after this date.
          in: query
          name: updated-at-after
          schema:
            type: string
        - description: Filter by whether product description exists.
          in: query
          name: has-description
          schema:
            type: boolean
        - description: Filter by substring in description.
          in: query
          name: description-includes
          schema:
            type: string
        - description: Filter by whether any product translations exist.
          in: query
          name: has-translations
          schema:
            type: boolean
        - description: Filter by whether any product relation exist.
          in: query
          name: has-product-relation
          schema:
            type: boolean
        - description: Filter on a specific product relation type
          in: query
          name: product-relation-type
          schema:
            type: string
        - description: >-
            Filter by marketing status (active, inactive, draft, incomplete,
            archived). Can be combined with product-market-status-market and/or
            product-market-status-store-group
          in: query
          name: product-market-status
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Filter products by marketing status in specific market(s). Requires
            product-market-status to be specified
          in: query
          name: product-market-status-market
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Filter products by marketing status in specific store group/channel.
            Requires product-market-status to be specified
          in: query
          name: product-market-status-store-group
          schema:
            type: string
        - description: Filter by product ids
          in: query
          name: product-ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter products that have no categories
          in: query
          name: no-categories
          schema:
            type: boolean
        - description: Filter products that have no variants
          in: query
          name: no-variants
          schema:
            type: boolean
      responses:
        '200':
          description: Product list
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductList
        '400':
          description: Invalid query parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get Products for the App
      tags:
        - Products
    post:
      description: Creates a product
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateProductPayload
        description: Product data
        required: true
      responses:
        '200':
          description: Product created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create product
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id:
    delete:
      description: >-
        Deletes a product and all it's related information such as prices,
        variants, attributes and categories
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete product
      tags:
        - Products
    get:
      description: Get product based on product id
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Show product that is marked as deleted(status = deleted)
          in: query
          name: show-deleted-product
          required: true
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateProductPayload
        description: Category data
        required: true
      responses:
        '200':
          description: Product data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get product
      tags:
        - Products
    patch:
      description: Update a product based on the product id
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.PatchProductPayload
        description: Product data
        required: true
      responses:
        '200':
          description: Category created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update product
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/attributes/:attribute_template_key/:attribute_key:
    delete:
      description: Delete attribute relationship from product
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Attribute key
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated product
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove attribute from product
      tags:
        - Products
    put:
      description: Adds attribute to product
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Attribute template key
          in: path
          name: attribute_template_key
          required: true
          schema:
            type: string
        - description: Attribute key
          in: path
          name: attribute_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated product
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add attribute to product
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/categories:
    get:
      description: Lists all categories a product is part of
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Categories list
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseCategoryList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Lists all categories a product is part of
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/categories/:category_id:
    delete:
      description: >-
        Removes the binding between a category and a product. This dosn't remove
        the actual category
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_number
          required: true
          schema:
            type: string
        - description: Category ID
          in: path
          name: category_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Category removed successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove category relationship
      tags:
        - Products
    put:
      description: Add product to a category
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Category ID
          in: path
          name: category_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.AddCategoryToProduct
        description: Payload
        required: true
      responses:
        '200':
          description: Category created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add product to category
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/collections:
    delete:
      description: Removes a collection from a product.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of product
          in: path
          name: product_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SetProductCollectionsRequest
      responses:
        '200':
          description: Product collections updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Removes a collection from a product
      tags:
        - Products
    put:
      description: >-
        Adds collection to a product. If the collection already have relation to
        the product do it ignore and continue.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of product
          in: path
          name: product_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SetProductCollectionsRequest
      responses:
        '200':
          description: Product collections updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Adds collection to a product
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/collections/:collection_id:
    put:
      description: >-
        Adds single collection to a product. If the collection already have
        relation to the product do it update the order.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of product
          in: path
          name: product_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.SetProductCollection
        description: Set order of the product in the collection
        required: true
      responses:
        '200':
          description: Product collections updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Adds single collection to a product
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/draft:
    delete:
      description: Deletes the draft for a product, discarding all pending changes
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Draft deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.Message'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: No draft found for this product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete product draft
      tags:
        - Product Drafts
    get:
      description: Retrieves the draft changeset for a product
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Draft retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductDraft
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: No draft found for this product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get product draft
      tags:
        - Product Drafts
    patch:
      description: Replaces the draft changeset for a product
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.UpdateProductDraftPayload
        description: Updated draft changeset and optional publish_at
        required: true
      responses:
        '200':
          description: Draft updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductDraft
        '400':
          description: Invalid request (e.g. validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: No draft found for this product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update product draft
      tags:
        - Product Drafts
    post:
      description: >-
        Creates a draft changeset for a product. Only one draft per product is
        allowed.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateProductDraftPayload
        description: Draft changeset and optional publish_at
        required: true
      responses:
        '201':
          description: Draft created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductDraft
        '400':
          description: Invalid request (e.g. validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '409':
          description: A draft already exists for this product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create product draft
      tags:
        - Product Drafts
  /api/v1/:team_slug/:app_slug/products/:product_id/draft/promote:
    post:
      description: Applies the draft changeset to the live product and deletes the draft
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Draft promoted and product updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponsePromoteProductDraft
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: No draft found for this product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Promote product draft
      tags:
        - Product Drafts
  /api/v1/:team_slug/:app_slug/products/:product_id/images:
    get:
      description: Fetches all images associated with a product
      parameters:
        - description: Product Number
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Filter by attribute
          in: query
          name: attribute
          schema:
            type: string
      responses:
        '200':
          description: List of product images
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductImages
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Retrieve product images
      tags:
        - Products
    put:
      description: Uploads an image either by file or URL and adds it to a product
      parameters:
        - description: Product Number
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                image:
                  description: Image file to upload
                  type: string
                  format: binary
                title:
                  description: Title for the image
                  type: string
                status:
                  description: Status for image. One of `active`, `inactive`, `draft`
                  type: string
                alt:
                  description: Alternative text for the image
                  type: string
                copyright:
                  description: Copyright text for the image
                  type: string
                priority:
                  description: Priority for the image list
                  type: number
                url:
                  description: URL for image to upload
                  type: string
                public:
                  description: If image is public or not
                  type: boolean
                filename:
                  description: Custom filename (without extension)
                  type: string
                blurhash:
                  description: >-
                    Optional precomputed blurhash. If provided, generation is
                    skipped
                  type: string
                parent_id:
                  description: Parent image ID
                  type: string
                attributes:
                  description: Attribute for image, e.g. white-background
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Image uploaded successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductImage
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Upload product image
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/images/:image_id:
    delete:
      description: Removes a specific image associated with a product
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Image ID
          in: path
          name: image_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Image deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseImageString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete a product image
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/relations:
    get:
      description: Get all relations for a product
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relations
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get all relations for a product
      tags:
        - Relations
  /api/v1/:team_slug/:app_slug/products/:product_id/soft-delete:
    patch:
      description: >-
        Marks a product as deleted by setting its status to "deleted" and sends
        a delete product event
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '409':
          description: Product is used as a component in virtual bundles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Soft delete product
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/tags/:tag_key:
    delete:
      description: Removed tag from product
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tag key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated product
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove tag from product
      tags:
        - Products
    put:
      description: Adds a tag to product
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tag key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.AddTagToProductPayload
        description: Payload
        required: true
      responses:
        '200':
          description: Updated product
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add tag to product
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/:product_id/variants:
    get:
      description: Fetch all variants for a product
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: >-
            Amount of product variants per page. Minimum 0 and max 100 (default
            is 20)
          in: query
          name: per-page
          schema:
            type: integer
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: >-
            Filter by attributes. Format: `template_key/value_key`. e.g.,
            `color/red`
          in: query
          name: attributes
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by warehouse slugs. e.g., `main-warehouse`
          in: query
          name: warehouse_slugs
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by store group slugs. e.g., `retail-stores`
          in: query
          name: store_group_slugs
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by market slugs. e.g., `us-market`
          in: query
          name: market_slugs
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by variant ids
          in: query
          name: ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by tag keys. e.g., `color`, `size`
          in: query
          name: tag_keys
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by category IDs
          in: query
          name: category_ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by collection IDs
          in: query
          name: collection_ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: 'Filter by status. Allowed values: active, draft, inactive, archived'
          in: query
          name: status
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: 'Sort by field: name, variant_number, created_at (default: name)'
          in: query
          name: sort_by
          schema:
            type: string
        - description: 'Sort order: asc, desc (default: asc)'
          in: query
          name: sort_order
          schema:
            type: string
      responses:
        '200':
          description: Product variants
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariantList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all product variants
      tags:
        - Variants
    post:
      description: Create products variant
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputVariant'
        description: Variant data
        required: true
      responses:
        '200':
          description: Variant created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariant
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create variant
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id:
    delete:
      description: Deletes a variant from a product and it's related stock
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Variant deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariantDelete
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Deletes a variant from a product
      tags:
        - Variants
    get:
      description: Fetch a product variant
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product variants
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariant
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch variant
      tags:
        - Variants
    patch:
      description: Update products variant
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.PatchVariantPayload
        description: Variant data
        required: true
      responses:
        '200':
          description: Variant updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariant
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update variant
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/prices:
    get:
      description: >-
        Fetches all product variant prices and its related storegroups and
        markets
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: All storegroups and related prices for the storegroups
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductPriceStoreGroupList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get Product variants StoreGroup
      tags:
        - Variants
    put:
      description: Create or update product variant price.
      parameters:
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputPrice'
        description: product variant price data
        required: true
      responses:
        '200':
          description: product variant price data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductPrice
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create or update product variant price
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/prices-batch:
    put:
      description: Batch create or update product variant price.
      parameters:
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputPriceBatch'
        description: product variant price data
        required: true
      responses:
        '200':
          description: product variant price data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductPriceList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Batch create or update product variant price
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/prices/:store_group_slug:
    get:
      description: Fetches all prices for 1 storegroup for the selected product variant
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Storegroup slug
          in: path
          name: store_group_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: All storegroups and related prices for the storegroups
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductPriceStoreGroupList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get all prices in a storegroup
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/prices/:store_group_slug/:market_slug:
    delete:
      description: Delete product variants price based on store group and market.
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: Storegroup slug
          in: path
          name: store_group_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Deleted products price
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductPriceString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete price
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/shipping-attributes:
    put:
      description: >-
        This endpoint allows updating shipping attributes for a specific product
        variant. The list should be complete, e.g. the values provided will be
        the once used by the variant. Example attributes include bulky, fragile,
        etc.
      parameters:
        - description: UUID of the variant to update
          in: path
          name: variant_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.ShippingAttributesRequest
        description: List of shipping attributes to set
        required: true
      responses:
        '200':
          description: Successfully updated shipping attributes
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariant
        '400':
          description: Invalid request format or validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Unable to process request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      summary: Update shipping attributes for a variant
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/stock:
    put:
      description: >-
        Creates or updates a warehouse variant warehouse stocks. If it already
        exists a warehouse stock for the specificed variant_number and
        warehouse_slug will it update the stock. If there is no match
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputVariantStock'
        description: Variant stock data
        required: true
      responses:
        '200':
          description: Warehouse stock for variant created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariantWarehouseStock
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create or update warehouse variant stock
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/stock/:warehouse_slug:
    delete:
      description: >-
        Deletes warehouse stock for a variant. This won't remove the warehouse,
        only the relationship between the warehouse and the variant
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: Warehouse slug
          in: path
          name: warehouse_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Warehouse stock deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariantWarehouseStockString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete warehouse stock
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/stock/:warehouse_slug/diff:
    post:
      description: >-
        Adds a diff to a warehouse stock for a variant. This will add the diff
        to the current stock level
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: Warehouse slug
          in: path
          name: warehouse_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.VariantStockDiff'
        description: Variant stock diff data
        required: true
      responses:
        '200':
          description: Warehouse stock for variant updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariantWarehouseStock
        '400':
          description: >-
            Invalid request (e.g. bad UUID, validation error or stock can't be
            negative)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add diff to warehouse stock
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/:product_id/variants/:variant_id/tags/:tag_key:
    delete:
      description: Removes a tag from a variant
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tag key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated variant
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariant
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove tag from variant
      tags:
        - Variants
    put:
      description: Adds a tag to a variant
      parameters:
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
        - description: Variant ID
          in: path
          name: variant_id
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tag key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated variant
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVariant
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add tag to variant
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/products/bulk:
    delete:
      description: Bulk Delete products based on a list of product IDs
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteProductsPayload
        description: Product IDs to delete
        required: true
      responses:
        '200':
          description: Products deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteProducts
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk Delete products
      tags:
        - Products
        - Bulk
    patch:
      description: Bulk Update a product based on the product id
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPatchProductPayload
        description: Product data
        required: true
      responses:
        '200':
          description: Products updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPatchProducts
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk Update product
      tags:
        - Products
        - Bulk
    post:
      description: Bulk Create products based on a list of product data.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateProductsPayload
        description: Products data
        required: true
      responses:
        '201':
          description: Products created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateProducts
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk Create products
      tags:
        - Products
        - Bulk
  /api/v1/:team_slug/:app_slug/products/bulk/soft-delete:
    patch:
      description: Bulk Soft Delete products by setting their status to "deleted"
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteProductsPayload
        description: Product IDs to soft delete
        required: true
      responses:
        '200':
          description: Products soft deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteProducts
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk Soft Delete products
      tags:
        - Products
        - Bulk
  /api/v1/:team_slug/:app_slug/products/sku/:product_number:
    get:
      description: Get product based on product number
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product Number (Case insensative)
          in: path
          name: product_number
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get product by product number
      tags:
        - Products
  /api/v1/:team_slug/:app_slug/products/tags/bulk:
    delete:
      description: Removes multiple products from multiple tags.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyProductTagsPayload
        description: Product and tag relationships to delete
        required: true
      responses:
        '200':
          description: Products removed from tags successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkRemoveProductsFromTags
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk remove products from tags
      tags:
        - Tags
        - Tags
        - Bulk
    put:
      description: Adds multiple products to multiple tags.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyProductTagsPayload
        description: Product and tag relationships to create
        required: true
      responses:
        '200':
          description: Products added to tags successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkAddProductsToTags
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk add products to tags
      tags:
        - Tags
        - Tags
        - Bulk
  /api/v1/:team_slug/:app_slug/redirects:
    get:
      description: Fetch all redirects that exists in an app
      parameters:
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
        - description: Number of items per page
          in: query
          name: per-page
          schema:
            type: integer
        - description: >-
            Redirect type, Can be one of product page collection category
            product_bundle brand serie campaign
          in: query
          name: type
          schema:
            type: integer
        - description: Search on old_slug and new_slug
          in: query
          name: search
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Redirect List
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRedirectList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all rediects
      tags:
        - Redirects
    post:
      description: creates a redirect for an item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputRedirect'
      responses:
        '200':
          description: Redirect created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRedirect
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: creates a redirect
      tags:
        - Redirects
  /api/v1/:team_slug/:app_slug/redirects/:redirect_id:
    delete:
      description: Delete a single redirect
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Redirect ID
          in: path
          name: redirect_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Redirect removed
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRedirectRemove
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete one redirect
      tags:
        - Redirects
    get:
      description: Fetch a single redirect
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Redirect ID
          in: path
          name: redirect_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Redirect
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRedirect
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch one rediect
      tags:
        - Redirects
    patch:
      description: updates a redirect for an item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Redirect UUID id
          in: path
          name: redirect_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputRedirect'
      responses:
        '200':
          description: Redirect created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRedirect
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: updates a redirect
      tags:
        - Redirects
  /api/v1/:team_slug/:app_slug/redirects/item/:item_id:
    delete:
      description: Delete an items redirects
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Item ID
          in: path
          name: item_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Item redirects removed
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRedirectRemove
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete an items redirects
      tags:
        - Redirects
    get:
      description: Fetch all the redirects related to an item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Item ID
          in: path
          name: item_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Redirects
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRedirectList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch the rediects for an item
      tags:
        - Redirects
  /api/v1/:team_slug/:app_slug/relations:
    get:
      description: Gets all relations in an app and related products
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relations
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets all relations in a app
      tags:
        - Relations
    post:
      description: Creates a relation between products
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.RelationRequest'
        description: Relation data
        required: true
      responses:
        '200':
          description: Relation created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelation
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Creates a relation
      tags:
        - Relations
  /api/v1/:team_slug/:app_slug/relations/:relation_id:
    delete:
      description: Deletes a relation
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Relation ID
          in: path
          name: relation_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationRemove
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Deletes a relation
      tags:
        - Relations
    get:
      description: Gets a relation and its related products
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Relation ID
          in: path
          name: relation_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelation
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets a relation
      tags:
        - Relations
  /api/v1/:team_slug/:app_slug/relations/:relation_id/:product_id:
    delete:
      description: Removes a product from a relation
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Relation ID
          in: path
          name: relation_id
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product relation removes as it's only 1 item left in the relation
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationRemove
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Removes a product from a relation
      tags:
        - Relations
    put:
      description: Adds a product to a relation
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Relation ID
          in: path
          name: relation_id
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: product_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product added to relation successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelation
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Adds a product to a relation
      tags:
        - Relations
  /api/v1/:team_slug/:app_slug/relations/types:
    get:
      description: Gets all relations types in an app and related products
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relations Types
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationTypeList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets all relations types in a app
      tags:
        - Relations
    post:
      description: Creates a relation type to be used as a relation between products
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.RelationTypeRequest
        description: Relation type data
        required: true
      responses:
        '200':
          description: Relation type created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationType
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Creates a relation type
      tags:
        - Relations
  /api/v1/:team_slug/:app_slug/relations/types/:type_id:
    delete:
      description: Deletes a relation type
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Type ID
          in: path
          name: type_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation type deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationTypeRemove
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Deletes a relation type
      tags:
        - Relations
    get:
      description: Gets a relation type
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Type ID
          in: path
          name: type_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relation types
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationType
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets a relation type
      tags:
        - Relations
    patch:
      description: Updates a relation type
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Type ID
          in: path
          name: type_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.PatchRelationTypeBody
        description: Relation type data
        required: true
      responses:
        '200':
          description: Relation type updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseRelationType
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Updates a relation type
      tags:
        - Relations
  /api/v1/:team_slug/:app_slug/schedule:
    get:
      description: >-
        Fetches scheduled jobs for an app with pagination and optional
        execute_at date range filtering.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Amount of jobs per page. Minimum 1 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
        - description: Include jobs with execute_at >= this RFC3339 timestamp
          in: query
          name: from-date
          schema:
            type: string
        - description: Include jobs with execute_at <= this RFC3339 timestamp
          in: query
          name: to-date
          schema:
            type: string
      responses:
        '200':
          description: Scheduled jobs
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSchedulingList
        '400':
          description: Invalid request (e.g. bad query params)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get all scheduled jobs
      tags:
        - Scheduling
    post:
      description: >-
        Creates a  new job schedule for a item. This can be used to schedule
        drop-dates of items or removing items after a surtain date
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateSchedulingPayload
        description: Scheduling data
        required: true
      responses:
        '200':
          description: Job is scheduled
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseScheduling
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create a new job schedule
      tags:
        - Scheduling
  /api/v1/:team_slug/:app_slug/schedule/:item_id:
    get:
      description: Fetches all upcomming scheduled jobs for an item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Item ID. e.g product UUID
          in: path
          name: item_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Job is scheduled
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSchedulingList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get items scheduled job
      tags:
        - Scheduling
  /api/v1/:team_slug/:app_slug/schedule/:job_id:
    delete:
      description: Delete a scheduled job
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Job id
          in: path
          name: job_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Job is scheduled
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseSchedulingDelete
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete scheduled job
      tags:
        - Scheduling
  /api/v1/:team_slug/:app_slug/schedule/bulk:
    delete:
      description: Deletes multiple scheduled jobs based on a list of job IDs.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteSchedulingPayload
        description: Job IDs to delete
        required: true
      responses:
        '200':
          description: Jobs deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteScheduling
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete scheduled jobs
      tags:
        - Scheduling
        - Bulk
    post:
      description: Creates multiple job schedules for items.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateSchedulingPayload
        description: Scheduling data
        required: true
      responses:
        '200':
          description: Jobs scheduled
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateScheduling
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk create job schedules
      tags:
        - Scheduling
        - Bulk
  /api/v1/:team_slug/:app_slug/smart-listings:
    post:
      description: Create a smart-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SmartListingRequest
      responses:
        '200':
          description: smart-listing created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.SmartListingResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create a smart-listing
      tags:
        - Smart Listings
  /api/v1/:team_slug/:app_slug/smart-listings/:
    get:
      description: Gets all smart-listings for the app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SmartListingRequest
      responses:
        '200':
          description: All smart-listings for the app
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.SmartListingsResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets all smart-listings for the app
      tags:
        - Smart Listings
  /api/v1/:team_slug/:app_slug/smart-listings/:listing_id:
    delete:
      description: Deletes a smart-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: id for the smart-listing to delete
          in: path
          name: listing_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SmartListingRequest
      responses:
        '200':
          description: smart-listing deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMessage
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Could not find smart-listing to delete
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Deletes a smart-listing
      tags:
        - Smart Listings
    get:
      description: fetches a smart-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: id for the smart-listing to fetch
          in: path
          name: listing_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: smart-listing returned successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.SmartListingResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Could not find smart-listing to update
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: fetches a smart-listing
      tags:
        - Smart Listings
    put:
      description: Update a smart-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: id for the smart-listing to update
          in: path
          name: listing_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SmartListingRequest
      responses:
        '200':
          description: smart-listing updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.SmartListingResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Could not find smart-listing to update
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update a smart-listing
      tags:
        - Smart Listings
  /api/v1/:team_slug/:app_slug/smart-listings/preview:
    post:
      description: Preview results from a smart-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.SmartListingRequest
      responses:
        '200':
          description: All product-variants affected by the listing rules
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.SmartListingProductsResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Preview results from a smart-listing
      tags:
        - Smart Listings
  /api/v1/:team_slug/:app_slug/static-listings:
    get:
      description: Gets all static-listings for the app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: static-listings retrived successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.StaticListingsResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets all static-listings for the app
      tags:
        - Static Listings
    post:
      description: Create a static-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.StaticListingRequest
      responses:
        '200':
          description: static-listing created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.StaticListingResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create a static-listing
      tags:
        - Static Listings
  /api/v1/:team_slug/:app_slug/static-listings/:listing_id:
    delete:
      description: Delete a static-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of static listing
          in: path
          name: listing_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: static-listing deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMessage
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete a static-listing
      tags:
        - Static Listings
    get:
      description: Gets a static-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of static listing
          in: path
          name: listing_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: static-listing retrived successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.StaticListingResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets a static-listing
      tags:
        - Static Listings
    put:
      description: Updates a static-listing
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: ID of static listing
          in: path
          name: listing_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/internal_pkg_webserver_v1.StaticListingRequest
      responses:
        '200':
          description: static-listing created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.StaticListingResponse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Updates a static-listing
      tags:
        - Static Listings
  /api/v1/:team_slug/:app_slug/store-groups:
    get:
      description: Fetches all store groups and it relative information such as markets
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Store groups
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseStoreGroupList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all store groups
      tags:
        - StoreGroups
    post:
      description: Creates a store group.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputStoreGroup'
      responses:
        '200':
          description: Store group created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseStoreGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create store group
      tags:
        - StoreGroups
  /api/v1/:team_slug/:app_slug/store-groups/:store_group_slug:
    delete:
      description: >-
        Delete a store group. This will also delete the store group pricing for
        a product
      parameters:
        - description: Store group slug
          in: path
          name: store_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Store group deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseStoreGroupRemove
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete store group
      tags:
        - StoreGroups
    get:
      description: Fetches single store groups and it relative information such as markets
      parameters:
        - description: Store group slug
          in: path
          name: store_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Store group created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseStoreGroupList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch store group
      tags:
        - StoreGroups
    patch:
      description: Updates a store group.
      parameters:
        - description: Store group slug
          in: path
          name: store_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputStoreGroup'
      responses:
        '200':
          description: Store group created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseStoreGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update store group
      tags:
        - StoreGroups
  /api/v1/:team_slug/:app_slug/store-groups/:store_group_slug/markets/:market_slug:
    delete:
      description: Remove a market from store group
      parameters:
        - description: Store group slug
          in: path
          name: store_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Store group data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseStoreGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove market from store group
      tags:
        - StoreGroups
    put:
      description: Add a market to store group
      parameters:
        - description: Store group slug
          in: path
          name: store_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputStoreGroupMarket
        description: Input for specific store group market
        required: true
      responses:
        '200':
          description: Store group data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseStoreGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add a market to store group
      tags:
        - StoreGroups
  /api/v1/:team_slug/:app_slug/tags:
    get:
      description: Get all tags, it's attributes and translations
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Search on tags name
          in: query
          name: search
          schema:
            type: string
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Amount of products per page. Minimum 0 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: Tags data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTagList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get all tags
      tags:
        - Tags
    post:
      description: Create a new tag
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.CreateTagPayload'
        description: Tag input data
        required: true
      responses:
        '200':
          description: Tag created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseTag'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create tag
      tags:
        - Tags
  /api/v1/:team_slug/:app_slug/tags/:tag_key:
    delete:
      description: Deletes a tag
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tags key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tag deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTagString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete tag
      tags:
        - Tags
    get:
      description: Get single tag it's attributes and translations
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tags key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tag data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseTag'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get tag
      tags:
        - Tags
    patch:
      description: Update a tag
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tags key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.UpdateTagPayload'
        description: Tag uppdated
        required: true
      responses:
        '200':
          description: Tag created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseTag'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update tag
      tags:
        - Tags
  /api/v1/:team_slug/:app_slug/tags/:tag_key/markets/:market_slug:
    delete:
      description: Delete a relationship between a tag and a market
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tag key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tag with market relationship
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseTag'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete tag market relationship
      tags:
        - Tags
    put:
      description: Create a relationship between a tag and a market
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Tag key
          in: path
          name: tag_key
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tag with market relationship
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseTag'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create tag market relationship
      tags:
        - Tags
  /api/v1/:team_slug/:app_slug/tags/:tag_key/products:
    get:
      description: Gets products from a tag
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: key for tag
          in: path
          name: tag_key
          required: true
          schema:
            type: string
        - description: Page number
          in: query
          name: page
          schema:
            type: integer
        - description: Number of items per page
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: Got a list of all products from tag
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProductList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '422':
          description: Invalid request and not parsable by backend
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Gets products from a tag
      tags:
        - Tags
  /api/v1/:team_slug/:app_slug/tags/bulk:
    delete:
      description: Deletes multiple tags by their IDs.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteTagsPayload
        description: Tag IDs to delete
        required: true
      responses:
        '200':
          description: Tags deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteTags
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete tags
      tags:
        - Tags
        - Tags
        - Bulk
    patch:
      description: Updates multiple tags in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPatchTagsPayload
        description: Tags data to update
        required: true
      responses:
        '200':
          description: Tags updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPatchTags
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk update tags
      tags:
        - Tags
        - Tags
        - Bulk
    post:
      description: Creates multiple tags in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateTagsPayload
        description: Tags data to create
        required: true
      responses:
        '201':
          description: Tags created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateTags
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk create tags
      tags:
        - Tags
        - Tags
        - Bulk
  /api/v1/:team_slug/:app_slug/tax-groups:
    get:
      description: Fetches all tax groups
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tax group list
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTaxGroupList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetches all tax groups
      tags:
        - TaxGroups
    post:
      description: Creates a tax group.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputTaxGroup'
      responses:
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create tax group
      tags:
        - TaxGroups
  /api/v1/:team_slug/:app_slug/tax-groups/:tax_group_slug:
    delete:
      description: Delete a tax group
      parameters:
        - description: Market slug
          in: path
          name: tax_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tax group deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTaxGroupString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete tax group
      tags:
        - TaxGroups
    get:
      description: Fetches single tax group
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tax group
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTaxGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetches tax group
      tags:
        - TaxGroups
    patch:
      description: Updates a tax group.
      parameters:
        - description: Tax group slug
          in: path
          name: tax_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputTaxGroup'
      responses:
        '200':
          description: Tax group created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTaxGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update tax group
      tags:
        - TaxGroups
  /api/v1/:team_slug/:app_slug/tax-groups/:tax_group_slug/markets/:market_slug:
    delete:
      description: Delete a market from tax group
      parameters:
        - description: Tax group slug
          in: path
          name: tax_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tax group data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTaxGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete a market from tax group
      tags:
        - TaxGroups
    put:
      description: Add a market to tax group with country-specific tax percentages
      parameters:
        - description: Tax group slug
          in: path
          name: tax_group_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputAddMarketToTaxGroup
        description: Country tax percentages
        required: true
      responses:
        '200':
          description: Tax group data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTaxGroup
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add a market to tax group
      tags:
        - TaxGroups
  /api/v1/:team_slug/:app_slug/third-party-link:
    post:
      description: Creates a third party link
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputThirdPartyLinks
        description: Payload
        required: true
      responses:
        '200':
          description: OK Response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseThirdPartyLink
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create third party link
      tags:
        - Third Party Link
  /api/v1/:team_slug/:app_slug/third-party-links:
    get:
      description: Lists all third party links for an app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK Response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseThirdPartyLinkList
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List third party links
      tags:
        - Third Party Link
  /api/v1/:team_slug/:app_slug/third-party-links/:file_id/relationships/:item_id:
    delete:
      description: Remove a relationship between a third party link and an item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Third Party Link ID
          in: path
          name: third_party_link_id
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: item_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relationship removed successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseThirdPartyLinkString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove Third Party Link relationship
      tags:
        - Third Party Link
  /api/v1/:team_slug/:app_slug/third-party-links/:third_party_link_id:
    delete:
      description: Deletes a third party link
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Third party link ID
          in: path
          name: third_party_link_id
          required: true
          schema:
            type: string
      responses:
        '204':
          description: "OK Response\"\t//\tUpdated\tsuccess\tcode"
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseThirdPartyLinkString
        '400':
          description: Invalid request (e.g., bad UUID)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Third party link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete third party link
      tags:
        - Third Party Link
    get:
      description: Retrieves a third party link
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Third party link ID
          in: path
          name: third_party_link_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK Response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseThirdPartyLink
        '400':
          description: Invalid request (e.g., bad UUID)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Third party link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get third party link
      tags:
        - Third Party Link
    patch:
      description: Updates a third party link
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Third party link ID
          in: path
          name: third_party_link_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputUpdateThirdPartyLink
        description: Third party link data
        required: true
      responses:
        '200':
          description: OK Response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseThirdPartyLink
        '400':
          description: Invalid request (e.g., bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Third party link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update third party link
      tags:
        - Third Party Link
  /api/v1/:team_slug/:app_slug/third-party-links/:third_party_link_id/relationships/:item_id:
    put:
      description: Create a relationship between a third party link and an item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Third Party Link ID
          in: path
          name: third_party_link_id
          required: true
          schema:
            type: string
        - description: Product ID
          in: path
          name: item_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Relationship created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseThirdPartyLinkString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add Third Party Link relationship
      tags:
        - Third Party Link
  /api/v1/:team_slug/:app_slug/translations:
    get:
      description: Fetches all translations for the users applicaiton
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Amount of products per page. Minimum 0 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
        - description: >-
            Filter on parent type. Can be one of product product_bundle
            product_variant image attribute attribute_value category tag
            collection file bundle_group
          in: query
          name: parent-type
          schema:
            type: string
        - description: >-
            Filter on field type. Can be one of name value description alt title
            copyright slug meta_title meta_description html_description
            short_description html_short_description key
          in: query
          name: field-type
          schema:
            type: string
      responses:
        '200':
          description: Translations
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTranslationListWithPagignation
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all translations
      tags:
        - Translations
    post:
      description: Create a translation
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateTranslationBody
        description: Translation data
        required: true
      responses:
        '200':
          description: Translation created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.TranslationDTO'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create a translation
      tags:
        - Translations
  /api/v1/:team_slug/:app_slug/translations/:translation_id:
    delete:
      description: Delete a translation given its id
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: translation uuid
          in: path
          name: translation_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Translation deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMessage
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete translation
      tags:
        - Translations
    get:
      description: Fetch a translation given its id
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: translation item uuid
          in: path
          name: translation_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Translation
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTranslation
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch a translation
      tags:
        - Translations
    put:
      description: Updates a translation
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: translation uuid
          in: path
          name: translation_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.UpdateTranslationBody
        description: Translation data
        required: true
      responses:
        '200':
          description: Translation updates successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.TranslationDTO'
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Updates a translation
      tags:
        - Translations
  /api/v1/:team_slug/:app_slug/translations/bulk:
    post:
      description: Inserts a list of translations
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.CreateTranslationBody
              type: array
        description: Translation data, max 30 translations
        required: true
      responses:
        '200':
          description: Translations created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMessage
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Inserts a list of translations
      tags:
        - Translations
    put:
      description: Updates a list of translations
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.TranslationDTO'
              type: array
        description: Translation data
        required: true
      responses:
        '200':
          description: Translation updates successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseMessage
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Updates a list of translations
      tags:
        - Translations
  /api/v1/:team_slug/:app_slug/translations/ref/:parent_ref:
    get:
      description: Fetches all translations for the reference item
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: reference item uuid
          in: path
          name: parent_ref
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Translations
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseTranslationList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all translations for the reference item
      tags:
        - Translations
  /api/v1/:team_slug/:app_slug/variants:
    get:
      description: Fetch all variants for an app with optional filters and pagination
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Amount of variants per page. Minimum 0 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Filter by product numbers. e.g., `SKU-001`
          in: query
          name: product_numbers
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by product IDs
          in: query
          name: product_ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by tag keys (variants that have these tags)
          in: query
          name: tag_keys
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by category IDs
          in: query
          name: category_ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by collection IDs
          in: query
          name: collection_ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: 'Filter by status. Allowed values: active, draft, inactive, archived'
          in: query
          name: status
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Filter by attributes. Format: `template_key/value_key`. e.g.,
            `color/red`
          in: query
          name: attributes
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: >-
            Filter by parent product attributes. Format:
            `template_key/value_key`. e.g., `color/red`
          in: query
          name: parent_attributes
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by warehouse slugs. e.g., `main-warehouse`
          in: query
          name: warehouse_slugs
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by store group slugs. e.g., `retail-stores`
          in: query
          name: store_group_slugs
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by market slugs. e.g., `us-market`
          in: query
          name: market_slugs
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Filter by variant ids
          in: query
          name: ids
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - description: Search by variant name (case-insensitive, partial match)
          in: query
          name: search
          schema:
            type: string
        - description: 'Sort by field: name, variant_number, created_at (default: name)'
          in: query
          name: sort_by
          schema:
            type: string
        - description: 'Sort order: asc, desc (default: asc)'
          in: query
          name: sort_order
          schema:
            type: string
      responses:
        '200':
          description: List of variants
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseList-array_github_com_enadhq_nabbit_internal_pkg_webserver_models_VariantWithProductInformation
        '400':
          description: Invalid request (e.g., bad query parameter)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Fetch all variants for an app
      tags:
        - Variants
  /api/v1/:team_slug/:app_slug/variants/bulk:
    delete:
      description: Deletes multiple variants in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteVariantsPayload
        description: Variant IDs to delete
        required: true
      responses:
        '200':
          description: Variants deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteVariants
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete variants
      tags:
        - Variants
        - Bulk
    patch:
      description: Updates multiple variants in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPatchVariantsPayload
        description: Variants data to update
        required: true
      responses:
        '200':
          description: Variants updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPatchVariants
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk update variants
      tags:
        - Variants
        - Bulk
    post:
      description: Creates multiple variants for one or more products in a single request.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkCreateVariantsPayload
        description: Variants data to create
        required: true
      responses:
        '201':
          description: Variants created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkCreateVariants
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk create variants
      tags:
        - Variants
        - Bulk
  /api/v1/:team_slug/:app_slug/variants/prices/bulk:
    delete:
      description: Bulk delete prices based on a list of price IDs.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeletePricesPayload
        description: Price IDs to delete
        required: true
      responses:
        '200':
          description: Prices deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeletePrices
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete prices
      tags:
        - Variants
        - Bulk
    patch:
      description: Bulk update prices based on a list of price data.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPatchPricesPayload
        description: Prices data
        required: true
      responses:
        '200':
          description: Prices updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPatchPrices
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk update prices
      tags:
        - Variants
        - Bulk
    put:
      description: >-
        Bulk create or update prices based on a list of price data for multiple
        variants.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkPutPricesPayload
        description: Prices data
        required: true
      responses:
        '200':
          description: Prices created or updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkPutPrices
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk create or update prices
      tags:
        - Variants
        - Bulk
  /api/v1/:team_slug/:app_slug/variants/stock/bulk:
    delete:
      description: Deletes the stock records for multiple variants in specific warehouses.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteStockPayload
        description: Stock data to delete
        required: true
      responses:
        '200':
          description: Stock deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteStock
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete variant stock
      tags:
        - Variants
        - Bulk
    put:
      description: >-
        Sets the stock quantity for multiple variants across different
        warehouses.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkSetStockPayload
        description: Stock data to set
        required: true
      responses:
        '200':
          description: Stock set successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkSetStock
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk set variant stock
      tags:
        - Variants
        - Bulk
  /api/v1/:team_slug/:app_slug/variants/tags/bulk:
    delete:
      description: Removes multiple variants from multiple tags.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyVariantTagsPayload
        description: Variant and tag relationships to delete
        required: true
      responses:
        '200':
          description: Variants removed from tags successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkRemoveVariantsFromTags
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk remove variants from tags
      tags:
        - Tags
        - Variants
        - Bulk
    put:
      description: Adds multiple variants to multiple tags.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkModifyVariantTagsPayload
        description: Variant and tag relationships to create
        required: true
      responses:
        '200':
          description: Variants added to tags successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkAddVariantsToTags
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk add variants to tags
      tags:
        - Tags
        - Variants
        - Bulk
  /api/v1/:team_slug/:app_slug/videos:
    get:
      description: Fetches all videos associated with a app
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Sort order. Should be one of ASC or DESC. Default DESC
          in: query
          name: sort-order
          schema:
            type: string
        - description: >-
            The key to sort on. Can be one of  `created_at`, `updated_at`,
            `title` (Default is `created_at`)
          in: query
          name: sort-key
          schema:
            type: string
        - description: Page number (default is 1)
          in: query
          name: page
          schema:
            type: integer
        - description: Amount of videos per page. Minimum 0 and max 100 (default is 20)
          in: query
          name: per-page
          schema:
            type: integer
      responses:
        '200':
          description: List of app videos
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVideos
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Retrieve all videos
      tags:
        - Videos
    put:
      description: Returns a presigned URL to upload a video to R2
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: string
        description: Filename including extension
        required: true
        x-s2o-overloaded: true
      responses:
        '200':
          description: Presigned URL generated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVideoUrl
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Generates a presigned URL for uploading a video
      tags:
        - Videos
      x-s2o-warning: >-
        Operation put:/api/v1/:team_slug/:app_slug/videos has multiple
        requestBodies
  /api/v1/:team_slug/:app_slug/videos/:video_id:
    delete:
      description: Removes a specific video from the video gallery
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Video ID
          in: path
          name: video_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Video deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVideoString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete a video
      tags:
        - Videos
    get:
      description: Fetches a single video
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Video ID
          in: path
          name: video_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Got video
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.OkResponseVideo'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Retrieve video
      tags:
        - Videos
  /api/v1/:team_slug/:app_slug/videos/:video_id/relationship:
    delete:
      description: Delete a video relationship between a product, variant or attribute
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Video ID
          in: path
          name: video_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.DeleteItemVideoRelationship
        description: Video relationship data
        required: true
      responses:
        '200':
          description: Video deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVideoString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete video relationship
      tags:
        - Videos
    put:
      description: Create a new video relationship between a product or variant
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Video ID
          in: path
          name: video_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.AddVideoRelationship
        description: Video relationship data
        required: true
      responses:
        '200':
          description: Video relationship added successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseVideoString
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create video relationship
      tags:
        - Videos
  /api/v1/:team_slug/:app_slug/videos/bulk:
    delete:
      description: Deletes multiple videos by their IDs.
      parameters:
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.BulkDeleteVideosPayload
        description: Video IDs to delete
        required: true
      responses:
        '200':
          description: Videos deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseBulkDeleteVideos
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Bulk delete videos
      tags:
        - Videos
        - Bulk
  /api/v1/:team_slug/:app_slug/warehouses:
    get:
      description: Fetches all warehouses
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Warehouse data list
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseWarehouseList
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get all warehouses
      tags:
        - Warehouses
    post:
      description: Creates a warehouse
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputWarehouse'
      responses:
        '200':
          description: Warehouse created successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseWarehouse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create  warehose
      tags:
        - Warehouses
  /api/v1/:team_slug/:app_slug/warehouses/:warehouse_slug:
    delete:
      description: Deletes a warehouse
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Warehouse slug
          in: path
          name: warehouse_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Warehouse deleted
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseWarehouseString
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete warehouse
      tags:
        - Warehouses
    get:
      description: Fetches single warehouse
      parameters:
        - description: Warehouse slug
          in: path
          name: warehouse_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Warehouse data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseWarehouse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get single warehouse
      tags:
        - Warehouses
    patch:
      description: Updates a warehouse
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Warehouse slug
          in: path
          name: warehouse_slug
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.InputWarehouse'
      responses:
        '200':
          description: Warehouse updated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseWarehouse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update warehose
      tags:
        - Warehouses
  /api/v1/:team_slug/:app_slug/warehouses/:warehouse_slug/market/:market_slug:
    delete:
      description: Removes a market from a warehouse. This won't remove the market
      parameters:
        - description: Warehouse slug
          in: path
          name: warehouse_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Warehouse data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseWarehouse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove a market from warehouse
      tags:
        - Warehouses
    put:
      description: Adds a market relationship to a warehouse
      parameters:
        - description: Warehouse slug
          in: path
          name: warehouse_slug
          required: true
          schema:
            type: string
        - description: Market slug
          in: path
          name: market_slug
          required: true
          schema:
            type: string
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Warehouse data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseWarehouse
        '400':
          description: Invalid request (e.g. bad UUID, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add market to warehouse
      tags:
        - Warehouses
  /api/v1/{team_slug}/{app_slug}/merchant-users:
    get:
      description: >-
        Retrieve a paginated list of merchant users with filtering and sorting
        options
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_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
        - description: >-
            Sort field (email, market, language_code, store_group, first_name,
            last_name, created_at, role, status)
          in: query
          name: sort-key
          schema:
            type: string
        - description: 'Sort direction (asc, desc, default: desc)'
          in: query
          name: sort-order
          schema:
            type: string
        - description: Search term
          in: query
          name: search
          schema:
            type: string
        - description: Filter by market
          in: query
          name: market
          schema:
            type: string
        - description: Filter by language
          in: query
          name: language
          schema:
            type: string
        - description: Filter by store group
          in: query
          name: store_group
          schema:
            type: string
        - description: Filter by email
          in: query
          name: email
          schema:
            type: string
        - description: Filter by name
          in: query
          name: name
          schema:
            type: string
        - description: Filter by surname
          in: query
          name: surname
          schema:
            type: string
        - description: Filter by status (active, pending, inactive)
          in: query
          name: status
          schema:
            type: string
        - description: Filter by email verification status
          in: query
          name: email_verified
          schema:
            type: boolean
        - description: Filter by creation date before (YYYY-MM-DD format, e.g., 2024-05-11)
          in: query
          name: created_at_before
          schema:
            type: string
        - description: Filter by creation date after (YYYY-MM-DD format, e.g., 2024-05-11)
          in: query
          name: created_at_after
          schema:
            type: string
        - description: Filter by if merchant user is attached to an organisation
          in: query
          name: has_organisation
          schema:
            type: boolean
      responses:
        '200':
          description: List of merchant users
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseList-internal_pkg_webserver_v1_MerchantUserResponse
        '400':
          description: Invalid request (e.g. bad parameters, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List merchant users
      tags:
        - Merchant Users
    post:
      description: Create a new merchant user with the provided details
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.CreateMerchantUserPayload
        description: Merchant user details
        required: true
      responses:
        '201':
          description: Created merchant user
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_MerchantUser
        '400':
          description: >-
            Invalid request (e.g. bad payload, validation error, user already
            exists)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Store group not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create merchant user
      tags:
        - Merchant Users
  /api/v1/{team_slug}/{app_slug}/merchant-users/{user_id}:
    delete:
      description: Soft delete a merchant user by ID
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Merchant user ID
          in: path
          name: user_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.DeleteMerchantUserPayload
        description: Delete merchant user payload
        required: true
      responses:
        '200':
          description: User deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Invalid request (e.g. bad user ID format)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete merchant user
      tags:
        - Merchant Users
    get:
      description: Retrieve a specific merchant user by ID
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Merchant user ID
          in: path
          name: user_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Merchant user details
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_MerchantUser
        '400':
          description: Invalid request (e.g. bad user ID format)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get merchant user
      tags:
        - Merchant Users
    patch:
      description: Update an existing merchant user with partial data
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Merchant user ID
          in: path
          name: user_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.PatchMerchantUserPayload
        description: Updated merchant user details
        required: true
      responses:
        '200':
          description: Updated merchant user
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_MerchantUser
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: User not found or store group not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update merchant user
      tags:
        - Merchant Users
  /api/v1/{team_slug}/{app_slug}/merchant-users/{user_id}/new-password:
    post:
      description: Set a new password for a specific merchant user
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Merchant user ID
          in: path
          name: user_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.SetNewUserPassword
        description: New password details
        required: true
      responses:
        '200':
          description: Password changed successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Set new password for merchant user
      tags:
        - Merchant Users
  /api/v1/{team_slug}/{app_slug}/merchant-users/{user_id}/send-email-verification:
    post:
      description: Resend email verification link to a specific merchant user
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Merchant user ID
          in: path
          name: user_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Email verification sent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Invalid request (e.g. bad user ID format)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Resend email verification
      tags:
        - Merchant Users
  /api/v1/{team_slug}/{app_slug}/merchant-users/{user_id}/tags:
    delete:
      description: Remove one or more tags from a specific merchant user
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Merchant user ID
          in: path
          name: user_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.MerchantUserTag'
      responses:
        '200':
          description: Updated merchant user with tags removed
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_MerchantUser
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove tags from merchant user
      tags:
        - Merchant Users
    post:
      description: Add one or more tags to a specific merchant user
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Merchant user ID
          in: path
          name: user_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.MerchantUserTag2'
      responses:
        '200':
          description: Updated merchant user with new tags
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_MerchantUser
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add tags to merchant user
      tags:
        - Merchant Users
  /api/v1/{team_slug}/{app_slug}/organisations:
    get:
      description: >-
        Retrieve a paginated list of organizations with filtering and sorting
        options
      parameters:
        - description: App slug
          in: path
          name: app_slug
          schema:
            type: string
          required: true
        - description: Team slug
          in: path
          name: team_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
        - description: >-
            Sort field (name, organisation_number, created_at, updated_at,
            status)
          in: query
          name: sort-key
          schema:
            type: string
        - description: 'Sort direction (asc, desc, default: desc)'
          in: query
          name: sort-order
          schema:
            type: string
        - description: Search term
          in: query
          name: search
          schema:
            type: string
        - description: Filter organizations that have merchant users
          in: query
          name: has-merchant-users
          schema:
            type: boolean
        - description: 'Filter by status (comma-separated: active, pending, inactive)'
          in: query
          name: status
          schema:
            type: string
        - description: >-
            Filter by country code from company addresses (comma-separated,
            e.g., 'SE,NO')
          in: query
          name: country
          schema:
            type: string
        - description: Filter by credit check status
          in: query
          name: credit-check
          schema:
            type: boolean
        - description: >-
            Filter by attributes (comma-separated template_key/attr_key pairs,
            ALL must match, e.g., 'color/red,size/large')
          in: query
          name: attributes
          schema:
            type: string
        - description: >-
            Filter organizations created before this date (YYYY-MM-DD format,
            e.g., 2025-11-20)
          in: query
          name: created-at-before
          schema:
            type: string
        - description: >-
            Filter organizations created after this date (YYYY-MM-DD format,
            e.g., 2025-11-20)
          in: query
          name: created-at-after
          schema:
            type: string
        - description: >-
            Filter organizations updated before this date (YYYY-MM-DD format,
            e.g., 2025-11-20)
          in: query
          name: updated-at-before
          schema:
            type: string
        - description: >-
            Filter organizations updated after this date (YYYY-MM-DD format,
            e.g., 2025-11-20)
          in: query
          name: updated-at-after
          schema:
            type: string
      responses:
        '200':
          description: List of organizations
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseList-array_internal_pkg_webserver_v1_Organisation
        '400':
          description: Invalid request (e.g. bad parameters, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: List organizations
      tags:
        - Organizations
    post:
      description: Create a new organization with the provided details and addresses
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrganisation'
        description: Organization details
        required: true
      responses:
        '201':
          description: Created organization
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrganisationWithUsersAndAddresses
        '400':
          description: >-
            Invalid request (e.g. bad payload, validation error, organization
            number already exists)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Create organization
      tags:
        - Organizations
  /api/v1/{team_slug}/{app_slug}/organisations/{org_id}:
    delete:
      description: Soft delete an organization by ID
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Organization deleted successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Invalid request (e.g. bad organization ID format)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Delete organization
      tags:
        - Organizations
    get:
      description: Retrieve a specific organization by ID with users and addresses
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Organization details
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrganisationWithUsersAndAddresses
        '400':
          description: Invalid request (e.g. bad organization ID format)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Get organization
      tags:
        - Organizations
    patch:
      description: Update an existing organization with partial data and addresses
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputUpdateOrganisation
        description: Updated organization details
        required: true
      responses:
        '200':
          description: Updated organization
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrganisationWithUsersAndAddresses
        '400':
          description: >-
            Invalid request (e.g. bad payload, validation error, organization
            number already exists)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Update organization
      tags:
        - Organizations
  /api/v1/{team_slug}/{app_slug}/organisations/{org_id}/address/{address_id}:
    delete:
      description: Remove a user restriction from a specific organisation address
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
        - description: Address ID
          in: path
          name: address_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputAddressUserRestriction
        description: Merchant user ID to remove restriction
        required: true
      responses:
        '200':
          description: User restriction removed successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization, address, or user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove user restriction from organisation address
      tags:
        - Organizations
    post:
      description: Add a user restriction to a specific organisation address
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
        - description: Address ID
          in: path
          name: address_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputAddressUserRestriction
        description: Merchant user ID to restrict
        required: true
      responses:
        '200':
          description: User restriction added successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization, address, or user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add user restriction to organisation address
      tags:
        - Organizations
  /api/v1/{team_slug}/{app_slug}/organisations/{org_id}/tags:
    delete:
      description: Remove one or more tags from a specific organization
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.MerchantUserTag'
      responses:
        '200':
          description: Updated organization with tags removed
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrganisationWithUsersAndAddresses
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove tags from organization
      tags:
        - Organizations
    post:
      description: Add one or more tags to a specific organization
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/internal_pkg_webserver_v1.MerchantUserTag2'
      responses:
        '200':
          description: Updated organization with new tags
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrganisationWithUsersAndAddresses
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add tags to organization
      tags:
        - Organizations
  /api/v1/{team_slug}/{app_slug}/organisations/{org_id}/user:
    delete:
      description: Remove a user from an organization
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.RemoveOrganisationUser
        description: User ID to remove
        required: true
      responses:
        '200':
          description: User removed from organization successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization or user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Remove user from organization
      tags:
        - Organizations
    put:
      description: Add a user to an organization with specified role and level
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Organization ID
          in: path
          name: org_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.InputOrganisationUser
        description: User details
        required: true
      responses:
        '200':
          description: User added to organization successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponse-string
        '400':
          description: Invalid request (e.g. bad payload, validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Organization or user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Add user to organization
      tags:
        - Organizations
  /api/v1/{team_slug}/{app_slug}/products/{product_id}/duplicate:
    post:
      description: >-
        Creates a copy of an existing product without variants, redirects, or
        relations. You can optionally provide product_number; otherwise a unique
        product number based on the source product number will be generated.
        Status is set to draft.
      parameters:
        - description: App slug
          in: path
          name: app_slug
          required: true
          schema:
            type: string
        - description: Team slug
          in: path
          name: team_slug
          required: true
          schema:
            type: string
        - description: Product ID to duplicate
          in: path
          name: product_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/internal_pkg_webserver_v1.DuplicateProductPayload
        description: Optional duplicate overrides
      responses:
        '201':
          description: Product duplicated successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/internal_pkg_webserver_v1.OkResponseProduct
        '400':
          description: Invalid request (e.g. bad UUID)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '404':
          description: Product not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_pkg_webserver_v1.ErrorMessage'
      security:
        - BearerAuth: []
      summary: Duplicate product
      tags:
        - Products
servers:
  - url: //api.enad.io
components:
  requestBodies:
    internal_pkg_webserver_v1.InputRedirect:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputRedirect'
      description: Redirect payload
      required: true
    internal_pkg_webserver_v1.SetProductCollectionsRequest:
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.SetProductCollectionsRequest
      description: Collection IDs
      required: true
    internal_pkg_webserver_v1.CreateProductBundlePayload:
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.CreateProductBundlePayload
      description: Product bundle data
      required: true
    internal_pkg_webserver_v1.InputTaxGroup:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputTaxGroup'
      description: Tax group data
      required: true
    internal_pkg_webserver_v1.InputMarket:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputMarket'
      description: Market data
      required: true
    internal_pkg_webserver_v1.StaticListingRequest:
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.StaticListingRequest
      description: static-listing configuration
      required: true
    internal_pkg_webserver_v1.MerchantUserTag:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.MerchantUserTag'
      description: Tag IDs to remove
      required: true
    internal_pkg_webserver_v1.MerchantUserTag2:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.MerchantUserTag'
      description: Tag IDs to add
      required: true
    internal_pkg_webserver_v1.InputStoreGroup:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputStoreGroup'
      description: Store group data
      required: true
    internal_pkg_webserver_v1.BrandRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BrandRequest'
      description: data on brand
      required: true
    internal_pkg_webserver_v1.BrandSeriesRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BrandSeriesRequest'
      description: data on series
      required: true
    internal_pkg_webserver_v1.SetMediaFolderRequest:
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.SetMediaFolderRequest
      description: Folder details
      required: true
    putApiV1_teamSlug_appSlugFiles:
      content:
        application/x-www-form-urlencoded:
          schema:
            type: object
            properties:
              title:
                description: File title
                type: string
              type:
                description: File type
                type: string
              file:
                description: File file to upload
                type: string
                format: binary
    internal_pkg_webserver_v1.SmartListingRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.SmartListingRequest'
      description: smart-listing configuration
      required: true
    internal_pkg_webserver_v1.InputWarehouse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputWarehouse'
      description: Warehouse data
      required: true
  schemas:
    github_com_enadhq_nabbit_internal_pkg_database.Address:
      properties:
        city:
          type: string
        country:
          type: string
        country_code:
          type: string
        street:
          type: string
        zip_code:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_database.CommunicationPreferences:
      properties:
        allow_email:
          type: boolean
        allow_postal:
          type: boolean
        allow_sms:
          type: boolean
      type: object
    github_com_enadhq_nabbit_internal_pkg_database.CustomFields:
      additionalProperties:
        type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_database.TranslationFieldType:
      enum:
        - name
        - value
        - description
        - alt
        - title
        - type
        - copyright
        - slug
        - meta_title
        - meta_description
        - html_description
        - short_description
        - html_short_description
        - key
      type: string
      x-enum-varnames:
        - TranslationFieldTypeName
        - TranslationFieldTypeValue
        - TranslationFieldTypeDescription
        - TranslationFieldTypeAlt
        - TranslationFieldTypeTitle
        - TranslationFieldTypeType
        - TranslationFieldTypeCopyright
        - TranslationFieldTypeSlug
        - TranslationFieldTypeMetaTitle
        - TranslationFieldTypeMetaDescription
        - TranslationFieldTypeHtmlDescription
        - TranslationFieldTypeShortDescription
        - TranslationFieldTypeHtmlShortDescription
        - TranslationFieldTypeKey
    github_com_enadhq_nabbit_internal_pkg_database.TranslationType:
      enum:
        - product
        - product_bundle
        - product_variant
        - image
        - attribute
        - attribute_value
        - category
        - tag
        - collection
        - file
        - bundle_group
        - video
        - brand
      type: string
      x-enum-varnames:
        - TranslationTypeProduct
        - TranslationTypeProductBundle
        - TranslationTypeProductVariant
        - TranslationTypeImage
        - TranslationTypeAttribute
        - TranslationTypeAttributeValue
        - TranslationTypeCategory
        - TranslationTypeTag
        - TranslationTypeCollection
        - TranslationTypeFile
        - TranslationTypeBundleGroup
        - TranslationTypeVideo
        - TranslationTypeBrand
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Address:
      properties:
        city:
          type: string
        country:
          type: string
        country_code:
          type: string
        street:
          type: string
        zip_code:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.AssetConsumer:
      properties:
        created_at:
          type: string
        id:
          type: string
        name:
          type: string
        priority:
          type: integer
        slug:
          type: string
        type:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageConsumerType
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute:
      properties:
        created_at:
          type: string
        description:
          type: string
        filterable:
          type: boolean
        id:
          type: string
        key:
          type: string
        name:
          type: string
        template_key:
          type: string
        template_name:
          type: string
        translatable:
          type: boolean
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTranslations
        updated_at:
          type: string
        values:
          additionalProperties:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeValue
          type: object
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTemplate:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        created_at:
          type: string
        fields:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTemplateField
          type: array
        filterable:
          type: boolean
        id:
          type: string
        key:
          type: string
        name:
          type: string
        resources:
          items:
            type: string
          type: array
        translatable:
          type: boolean
        type:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTemplateField:
      properties:
        created_at:
          type: string
        id:
          type: string
        key:
          type: string
        name:
          type: string
        type:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTranslations:
      properties:
        description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        name:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeValue:
      properties:
        field_id:
          type: string
        id:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeValueTranslations
        type:
          type: string
        value:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeValueTranslations:
      properties:
        value:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Brand:
      properties:
        cover:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandImage
        created_at:
          type: string
        description:
          description: brand description
          type: string
        id:
          description: unique id of brand
          type: string
        logo:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandImage
        name:
          description: name of brand
          type: string
        series:
          description: series connected to the brand
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandSeries
          type: array
        slug:
          description: slug of brand
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandTranslations
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandImage:
      properties:
        id:
          type: string
        url:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandParent:
      properties:
        id:
          description: id of brand
          type: string
        name:
          description: name of brand
          type: string
        slug:
          description: slug of brand
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandSeries:
      properties:
        id:
          description: unique id of series
          type: string
        name:
          description: name of series
          type: string
        slug:
          description: name of series
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandTranslations:
      properties:
        description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Bundle:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        compliant:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Compliance
          description: Compliance level for the bundle
        created_at:
          description: Creation timestamp
          type: string
        discount_percentage:
          description: Discount percentage [1-100]
          type: integer
        discount_type:
          description: Discount type [fixed, relative]
          type: string
        discounts:
          additionalProperties:
            format: int64
            type: integer
          description: Discount for bundle. Amount is stored in cents
          type: object
        id:
          description: ID
          type: string
        rules:
          description: Bundle rules
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleRule
          type: array
        status:
          description: Status of the bundle
          type: string
        updated_at:
          description: Last updated timestamp
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleCompliance:
      enum:
        - none
        - partial
        - full
      type: string
      x-enum-varnames:
        - BundleComplianceNone
        - BundleCompliancePartial
        - BundleComplianceFull
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleGroup:
      properties:
        bundles:
          description: Bundles associated with the group
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Bundle
          type: array
        compliance:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Compliance
          description: >-
            Compliance level for the bundle group, "none" means that there is no
            valid/complete configuration, "partial" means that some of the rules
            are valid, "full" means that all rules are valid
        created_at:
          description: Creation timestamp
          type: string
        description:
          type: string
        end_date:
          description: End date of the bundle group
          type: string
        id:
          description: ID
          type: string
        markets:
          description: Markets associated with the bundle group
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleGroupMarket
          type: array
        name:
          description: Name of the bundle group
          type: string
        start_date:
          description: Start date of the bundle group
          type: string
        translations:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleGroupTranslation
          description: Bundle group translations
        updated_at:
          description: Last updated timestamp
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleGroupMarket:
      properties:
        active:
          type: boolean
        country_codes:
          items:
            type: string
          type: array
        created_at:
          type: string
        currency_code:
          type: string
        id:
          type: string
        locale:
          type: string
        name:
          type: string
        slug:
          type: string
        store_group_id:
          description: Store group ID
          type: string
        store_group_slug:
          description: Store group slug
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleGroupTranslation:
      properties:
        description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        name:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleItem:
      properties:
        description:
          type: string
        id:
          type: string
        image_urls:
          items:
            type: string
          type: array
        product_name:
          type: string
        product_number:
          type: string
        slug:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleRule:
      properties:
        bundle_id:
          description: Bundle ID
          type: string
        discount_percentage:
          description: Discount percentage [1-100]
          type: integer
        discount_type:
          description: Discount type [fixed, relative]
          type: string
        discounts:
          additionalProperties:
            format: int64
            type: integer
          description: Discount for bundle. Amount is stored in cents
          type: object
        exclude_discounted_price:
          description: If products with discounted price should be excluded
          type: boolean
        exclude_full_price:
          description: If products with full price should be excluded
          type: boolean
        id:
          description: ID
          type: string
        items:
          description: Products associated with the bundle rule
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleItem
          type: array
        quantity:
          description: Quantity of products needed to trigger the bundle
          type: integer
        tag_conditions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TagConditionsResp
          description: Conditions for discount tags
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Category:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        children:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Category
          type: array
        created_at:
          type: string
        id:
          type: string
        name:
          type: string
        parent_id:
          type: string
        redirects:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Redirects
          type: array
        slug:
          type: string
        sort_order:
          description: Used for ordering categories themselves
          type: integer
        status:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.CategoryTranslations
        updated_at:
          type: string
        uri:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.CategoryTranslations:
      properties:
        name:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        slug:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Collection:
      properties:
        children:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Collection
          type: array
        created_at:
          type: string
        id:
          type: string
        parent_id:
          type: string
        redirects:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Redirects
          type: array
        slug:
          type: string
        status:
          enum:
            - active
            - inactive
            - draft
          type: string
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.CollectionTranslation
        updated_at:
          type: string
        uri:
          type: string
      required:
        - slug
        - status
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.CollectionTranslation:
      properties:
        slug:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        title:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.CommunicationPreferences:
      properties:
        allow_email:
          type: boolean
        allow_postal:
          type: boolean
        allow_sms:
          type: boolean
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Compliance:
      properties:
        info:
          description: >-
            Explanation of any issues with the bundle, it will be empty if the
            bundle is fully compliant
          items:
            type: string
          type: array
        level:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleCompliance
          description: >-
            Compliance level for the bundle, "full" if all rules are valid,
            "partial" if some rules are valid but it can still be used as a
            bundle, "none" if no rules are valid
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Constraint:
      properties:
        allowed_types:
          items:
            type: string
          type: array
        max_size_bytes:
          type: integer
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions:
      properties:
        capacity_milliliter:
          description: the capacity in milliliter
          minimum: 0
          type: integer
        depth:
          description: The products depth in millimeter
          minimum: 0
          type: integer
        diameter:
          description: the products diameter in millimeter
          minimum: 0
          type: integer
        height:
          description: The products height in millimeter
          minimum: 0
          type: integer
        length:
          description: The products length in millimeter
          minimum: 0
          type: integer
        weight:
          description: The products weight in grams
          minimum: 0
          type: integer
        width:
          description: The products width in millimeter
          minimum: 0
          type: integer
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.DiscountTagEntityMode:
      enum:
        - include
        - exclude
      type: string
      x-enum-varnames:
        - DiscountTagEntityModeInclude
        - DiscountTagEntityModeExclude
    github_com_enadhq_nabbit_internal_pkg_webserver_models.DraftCategoryRef:
      properties:
        id:
          type: string
        order:
          type: integer
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.DraftImageRef:
      properties:
        id:
          type: string
        priority:
          type: integer
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.DraftTagRef:
      properties:
        key:
          type: string
        order:
          type: integer
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.File:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        created_at:
          type: string
        folder_id:
          type: string
        id:
          type: string
        public:
          type: boolean
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.FileTranslation
        type:
          type: string
        updated_at:
          type: string
        url:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.FileTranslation:
      properties:
        title:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        type:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.FileWithReferences:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        created_at:
          type: string
        folder_id:
          type: string
        id:
          type: string
        public:
          type: boolean
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.FileTranslation
        type:
          type: string
        updated_at:
          type: string
        url:
          type: string
        used_by:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AssetConsumer
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Folder:
      properties:
        created_at:
          type: string
        file_count:
          type: integer
        has_content_access:
          type: boolean
        id:
          type: string
        image_count:
          type: integer
        is_default:
          type: boolean
        name:
          type: string
        parent_id:
          type: string
        public:
          type: boolean
        slug:
          type: string
        updated_at:
          type: string
        video_count:
          type: integer
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.FolderMedia:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.MediaItem
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.FolderTree:
      properties:
        children:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.FolderTree
          type: array
        folder:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Folder
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Image:
      properties:
        alt:
          type: string
        app_id:
          type: string
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        blurhash:
          type: string
        copyright:
          type: string
        custom:
          additionalProperties:
            type: string
          type: object
        folder_id:
          type: string
        id:
          type: string
        parent_id:
          type: string
        public:
          type: boolean
        status:
          type: string
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageTranslation
        url:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageConsumerType:
      enum:
        - product
        - variant
        - attribute
      type: string
      x-enum-varnames:
        - ProductImageConsumer
        - VariantImageConsumer
        - AttributeImageConsumer
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageTranslation:
      properties:
        alt:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        copyright:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        title:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority:
      properties:
        alt:
          type: string
        app_id:
          type: string
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        blurhash:
          type: string
        copyright:
          type: string
        custom:
          additionalProperties:
            type: string
          type: object
        folder_id:
          type: string
        id:
          type: string
        parent_id:
          type: string
        priority:
          type: integer
        public:
          type: boolean
        status:
          type: string
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageTranslation
        url:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithUsedBy:
      properties:
        alt:
          type: string
        app_id:
          type: string
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        blurhash:
          type: string
        copyright:
          type: string
        custom:
          additionalProperties:
            type: string
          type: object
        folder_id:
          type: string
        id:
          type: string
        parent_id:
          type: string
        public:
          type: boolean
        status:
          type: string
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageTranslation
        url:
          type: string
        used_by:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AssetConsumer
          type: array
        variants:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Image
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Job:
      properties:
        add_category_names:
          items:
            type: string
          type: array
        add_collection_names:
          items:
            type: string
          type: array
        add_tag_names:
          items:
            type: string
          type: array
        execute_at:
          description: Date when the job should run
          type: string
        finished_at:
          description: If a job is finished will this timestamp be filled
          type: string
        id:
          type: string
        item_id:
          type: string
        item_name:
          type: string
        item_type:
          type: string
        remove_category_names:
          items:
            type: string
          type: array
        remove_collection_names:
          items:
            type: string
          type: array
        remove_tag_names:
          items:
            type: string
          type: array
        to_amount_cents_with_tax:
          type: integer
        to_market_id:
          type: string
        to_market_status:
          type: string
        to_on_sale:
          type: boolean
        to_sale_amount_cents_with_tax:
          type: integer
        to_status:
          type: string
        to_store_group_id:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingProductVariant:
      properties:
        app_id:
          type: string
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductListingAttribute
          type: array
        category_slugs:
          items:
            type: string
          type: array
        custom_fields:
          additionalProperties:
            type: string
          type: object
        id:
          type: string
        image_urls:
          items:
            type: string
          type: array
        prices:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Price
          type: array
        product_id:
          type: string
        product_name:
          type: string
        total_stock:
          type: integer
        variant_name:
          type: string
        variant_number:
          type: string
        warehouse_stocks:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.WarehouseStock
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingRule:
      properties:
        id:
          type: string
        operator:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingRuleOperator
        target:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingRuleTarget
        target_id:
          description: used for warehouse stock validation
          type: string
        value_float:
          type: number
        value_list:
          items:
            type: string
          type: array
        value_string:
          type: string
      required:
        - operator
        - target
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingRuleOperator:
      enum:
        - less-than
        - greater-than
        - equal
        - not-equal
        - contains
      type: string
      x-enum-varnames:
        - OperatorLessThan
        - OperatorGreaterThan
        - OperatorEqual
        - OperatorNotEqual
        - OperatorContains
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingRuleTarget:
      enum:
        - stock
        - price
        - title
        - attribute
        - category
      type: string
      x-enum-varnames:
        - TargetStock
        - TargetPrice
        - TargetTitle
        - TargetAttribute
        - TargetCategory
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Market:
      properties:
        active:
          type: boolean
        country_codes:
          items:
            type: string
          type: array
        created_at:
          type: string
        currency_code:
          type: string
        id:
          type: string
        locale:
          type: string
        name:
          type: string
        slug:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.MarketStatus:
      properties:
        created_at:
          type: string
        market_id:
          type: string
        market_slug:
          type: string
        status:
          type: string
        store_group_id:
          type: string
        store_group_slug:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.MediaItem:
      properties:
        blurhash:
          type: string
        created_at:
          type: string
        description:
          type: string
        id:
          type: string
        status:
          type: string
        title:
          type: string
        type:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.MediaType
        updated_at:
          type: string
        url:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.MediaType:
      enum:
        - image
        - video
        - file
      type: string
      x-enum-varnames:
        - MediaTypeImage
        - MediaTypeVideo
        - MediaTypeFile
    github_com_enadhq_nabbit_internal_pkg_webserver_models.MerchantOrganizationDetails:
      properties:
        id:
          type: string
        level:
          type: string
        name:
          type: string
        organisation_number:
          type: string
        role:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.MerchantUser:
      properties:
        additions:
          additionalProperties:
            type: string
          type: object
        address:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Address
        address_restrictions:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.OrganisationAddressRestriction
          type: array
        app_id:
          type: string
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        comment:
          type: string
        communication_preferences:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.CommunicationPreferences
        created_at:
          type: string
        email:
          type: string
        email_verification_sent_at:
          type: string
        email_verified:
          type: boolean
        id:
          type: string
        is_super_admin:
          type: boolean
        language:
          type: string
        market:
          type: string
        name:
          type: string
        organisations:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.MerchantOrganizationDetails
          type: array
        phone_number:
          type: string
        role:
          type: string
        status:
          type: string
        store_group:
          type: string
        surname:
          type: string
        tags:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
          type: array
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.OmniChannelProduct:
      properties:
        attributes:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
                type: array
            type: object
          type: array
        categories:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductCategory
                type: array
            type: object
          type: array
        collections:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductCollection
                type: array
            type: object
          type: array
        description:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        html_description:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        html_short_description:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        images:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
                type: array
            type: object
          type: array
        meta_description:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        meta_title:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        product_name:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        short_description:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        slug:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        tags:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductTag
                type: array
            type: object
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.OmniChannelVariant:
      properties:
        store_group_attributes:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
                type: array
            type: object
          type: array
        store_group_categories:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductCategory
                type: array
            type: object
          type: array
        store_group_collections:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductCollection
                type: array
            type: object
          type: array
        store_group_images:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
                type: array
            type: object
          type: array
        store_group_tags:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                items:
                  $ref: >-
                    #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductTag
                type: array
            type: object
          type: array
        store_group_variant_name:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Omnichannel:
      properties:
        created_at:
          type: string
        field_type:
          type: string
        id:
          type: string
        market_id:
          type: string
        parent_id:
          type: string
        parent_type:
          type: string
        preview:
          items:
            type: string
          type: array
        relationships:
          items:
            type: string
          type: array
        store_group_id:
          type: string
        updated_at:
          type: string
        value:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.OmnichannelProduct:
      properties:
        image_url:
          type: string
        omnichannel:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Omnichannel
          type: array
        product_id:
          type: string
        product_name:
          type: string
        product_sku:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.OrganisationAddressRestriction:
      properties:
        address_id:
          type: string
        formatted_address:
          type: string
        organisation_id:
          type: string
        organisation_name:
          type: string
        organisation_number:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Price:
      properties:
        amount:
          type: number
        currency:
          type: string
        on_sale:
          type: boolean
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.PriceStatus:
      enum:
        - active
        - inactive
        - draft
      type: string
      x-enum-varnames:
        - ActivePrice
        - InActivePrice
        - DraftPrice
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Product:
      properties:
        attributes:
          description: Product attributes
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        brand:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductBrand
          description: Brand of the product
        categories:
          description: Associated categories
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductCategory
          type: array
        collections:
          description: Associated collections
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductCollection
          type: array
        created_at:
          description: Creation timestamp
          type: string
        custom:
          additionalProperties:
            type: string
          type: object
        description:
          description: Description of the product
          type: string
        exclude_from_feeds:
          description: If the products should exist in feeds or not
          type: boolean
        files:
          description: Product files
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.File
          type: array
        html_description:
          description: Html description
          type: string
        html_short_description:
          description: Html short description
          type: string
        id:
          description: Product ID
          type: string
        images:
          description: Images of the product
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
          type: array
        market_status:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.MarketStatus
          type: array
        markets:
          description: Associated markets
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Market
          type: array
        meta_description:
          description: Meta description for SEO
          type: string
        meta_title:
          description: Meta title for SEO
          type: string
        omnichannel:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.OmniChannelProduct
        package_dimensions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
          description: The package dimensions
        product_dimensions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
          description: The products dimensions
        product_name:
          description: VariantName of the product
          type: string
        product_number:
          description: Product number
          type: string
        product_type:
          description: Product type
          type: string
        redirects:
          description: Product redirects
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Redirects
          type: array
        relations:
          description: Product relations
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Relation
          type: array
        schedules:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Job
          type: array
        short_description:
          description: Short description of the product
          type: string
        slug:
          description: Slug for the product
          type: string
        status:
          description: Status of the product
          type: string
        tags:
          description: Product tags
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductTag
          type: array
        tax_group_id:
          description: The id of the tax group
          type: string
        third_part_links:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ThirdPartyLink
          type: array
        translations:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductTranslations
          description: Product translations
        updated_at:
          description: Last updated timestamp
          type: string
        variants:
          description: Product variants
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Variant
          type: array
        videos:
          description: Videos of the product
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Video
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductBrand:
      properties:
        id:
          type: string
        name:
          type: string
        series:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductSeries
        slug:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductCategory:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        children:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Category
          type: array
        created_at:
          type: string
        id:
          type: string
        name:
          type: string
        order:
          type: integer
        parent_id:
          type: string
        redirects:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Redirects
          type: array
        slug:
          type: string
        sort_order:
          description: Used for ordering categories themselves
          type: integer
        status:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.CategoryTranslations
        updated_at:
          type: string
        uri:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductCollection:
      properties:
        children:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Collection
          type: array
        created_at:
          type: string
        id:
          type: string
        order:
          type: integer
        parent_id:
          type: string
        redirects:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Redirects
          type: array
        slug:
          type: string
        status:
          enum:
            - active
            - inactive
            - draft
          type: string
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.CollectionTranslation
        updated_at:
          type: string
        uri:
          type: string
      required:
        - slug
        - status
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductDraft:
      properties:
        app_id:
          type: string
        changeset:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductDraftChangeset
        created_at:
          type: string
        id:
          type: string
        product_id:
          type: string
        publish_at:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductDraftChangeset:
      properties:
        attributes:
          items:
            type: string
          type: array
        categories:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.DraftCategoryRef
          type: array
        collections:
          items:
            type: string
          type: array
        description:
          type: string
        html_description:
          type: string
        html_short_description:
          type: string
        images:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.DraftImageRef
          type: array
        meta_description:
          type: string
        meta_title:
          type: string
        name:
          type: string
        short_description:
          type: string
        tags:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.DraftTagRef
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductListingAttribute:
      properties:
        template_id:
          type: string
        template_name:
          type: string
        values:
          items:
            type: string
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductSeries:
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductTag:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        created_at:
          type: string
        filterable:
          type: boolean
        id:
          type: string
        key:
          type: string
        markets:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Market
          type: array
        name:
          type: string
        order:
          type: integer
        schedules:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Job
          type: array
        status:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TagTranslations
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductTranslations:
      properties:
        description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        html_description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        html_short_description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        meta_description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        meta_title:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        name:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        short_description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        slug:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantPrice:
      properties:
        amount_cents_with_tax:
          type: integer
        created_at:
          type: string
        id:
          type: string
        market:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Market
        on_sale:
          type: boolean
        reference_price_with_tax:
          type: integer
        sale_end_timestamp:
          type: string
        sale_price_with_tax:
          type: integer
        sale_start_timestamp:
          type: string
        status:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PriceStatus
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantPriceWithStoreGroup:
      properties:
        amount_cents_with_tax:
          type: integer
        created_at:
          type: string
        id:
          type: string
        market:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Market
        on_sale:
          type: boolean
        reference_price_with_tax:
          type: integer
        sale_end_timestamp:
          type: string
        sale_price_with_tax:
          type: integer
        sale_start_timestamp:
          type: string
        status:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PriceStatus
        store_group:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.StoreGroup
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantStoreGroupWithPrices:
      properties:
        created_at:
          type: string
        id:
          type: string
        name:
          type: string
        prices:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantPrice
          type: array
        slug:
          type: string
        store_type:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantTranslations:
      properties:
        name:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.PurchasePrice:
      properties:
        currency:
          type: string
        value_cents:
          type: integer
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.RedirectType:
      enum:
        - product
        - page
        - collection
        - category
        - product_bundle
      type: string
      x-enum-varnames:
        - ProductRedirect
        - PageRedirect
        - CollectionRedirect
        - CategoryRedirect
        - ProductBundleRedirect
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Redirects:
      properties:
        id:
          type: string
        item_id:
          type: string
        locale:
          type: string
        new_slug:
          type: string
        old_slug:
          type: string
        type:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.RedirectType
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Relation:
      properties:
        direction:
          type: string
        id:
          type: string
        primary_product_id:
          type: string
        products:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.RelationProduct
          type: array
        title:
          type: string
        type:
          type: string
        type_id:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.RelationProduct:
      properties:
        description:
          type: string
        id:
          type: string
        image_url:
          type: string
        product_name:
          type: string
        product_number:
          type: string
        slug:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.RelationType:
      properties:
        created_at:
          type: string
        id:
          type: string
        title:
          type: string
        type:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Series:
      properties:
        brand:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandParent
          description: brand for which the series belong to
        cover:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Image
        created_at:
          type: string
        description:
          description: series description
          type: string
        id:
          description: id of series
          type: string
        logo:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Image
        name:
          description: name of series
          type: string
        slug:
          description: slug of series
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BrandTranslations
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ShareableLink:
      properties:
        created_at:
          type: string
        description:
          type: string
        expires_at:
          type: string
        file_ids:
          items:
            type: string
          type: array
        folder_ids:
          items:
            type: string
          type: array
        id:
          type: string
        image_ids:
          items:
            type: string
          type: array
        token:
          type: string
        updated_at:
          type: string
        video_ids:
          items:
            type: string
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ShareableLinkWithResources:
      properties:
        created_at:
          type: string
        description:
          type: string
        expires_at:
          type: string
        folders:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Folder
          type: array
        id:
          type: string
        items:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.MediaItem
          type: array
        token:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionReq:
      properties:
        ids:
          items:
            type: string
          minItems: 1
          type: array
          uniqueItems: true
        mode:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.DiscountTagEntityMode
          enum:
            - include
            - exclude
      required:
        - ids
        - mode
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionResp:
      properties:
        mode:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.DiscountTagEntityMode
        values:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TagConditionTag
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.SmartListing:
      properties:
        created_at:
          type: string
        id:
          type: string
        rules:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingRule
          type: array
        slug:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.StaticListing:
      properties:
        created_at:
          type: string
        id:
          type: string
        slug:
          type: string
        updated_at:
          type: string
        variants:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.StaticListingProductVariant
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.StaticListingProductVariant:
      properties:
        app_id:
          type: string
        custom_fields:
          additionalProperties:
            type: string
          type: object
        id:
          type: string
        product_id:
          type: string
        product_name:
          type: string
        variant_name:
          type: string
        variant_number:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.StoreGroup:
      properties:
        country_of_sale:
          type: string
        created_at:
          type: string
        description:
          type: string
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        store_type:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.StoreGroupMarket:
      properties:
        active:
          type: boolean
        country_codes:
          items:
            type: string
          type: array
        created_at:
          type: string
        currency_code:
          type: string
        id:
          type: string
        is_tax_exemption_eligible:
          type: boolean
        is_tax_included_in_price:
          type: boolean
        locale:
          type: string
        name:
          type: string
        slug:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.StoreGroupWithMarkets:
      properties:
        country_of_sale:
          type: string
        created_at:
          type: string
        description:
          type: string
        id:
          type: string
        markets:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.StoreGroupMarket
          type: array
        name:
          type: string
        slug:
          type: string
        store_type:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        created_at:
          type: string
        filterable:
          type: boolean
        id:
          type: string
        key:
          type: string
        markets:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Market
          type: array
        name:
          type: string
        schedules:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Job
          type: array
        status:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TagTranslations
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.TagConditionTag:
      properties:
        id:
          type: string
        name:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.TagConditionsReq:
      properties:
        brands:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionReq
        categories:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionReq
        collections:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionReq
        series:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionReq
        tags:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionReq
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.TagConditionsResp:
      properties:
        brands:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionResp
        categories:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionResp
        collections:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionResp
        series:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionResp
        tags:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SingleTagConditionResp
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.TagTranslations:
      properties:
        name:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.TaxGroup:
      properties:
        created_at:
          type: string
        description:
          type: string
        id:
          type: string
        is_default:
          type: boolean
        markets:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TaxGroupMarket
          type: array
        name:
          type: string
        slug:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.TaxGroupCountryTaxPercentage:
      properties:
        country_code:
          type: string
        created_at:
          type: string
        id:
          type: string
        tax_percentage:
          type: number
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.TaxGroupMarket:
      properties:
        active:
          type: boolean
        country_codes:
          items:
            type: string
          type: array
        country_tax_percentages:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TaxGroupCountryTaxPercentage
          type: array
        created_at:
          type: string
        currency_code:
          type: string
        id:
          type: string
        locale:
          type: string
        name:
          type: string
        slug:
          type: string
        updated_at:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.ThirdPartyLink:
      properties:
        created_at:
          type: string
        id:
          type: string
        title:
          type: string
        type:
          type: string
        updated_at:
          type: string
        url:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation:
      properties:
        id:
          type: string
        locale:
          type: string
        omni_channel_translations:
          items:
            properties:
              id:
                type: string
              market_id:
                type: string
              store_group_id:
                type: string
              value:
                type: string
            type: object
          type: array
        value:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Variant:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        created_at:
          type: string
        custom_fields:
          additionalProperties:
            type: string
          type: object
        id:
          type: string
        images:
          description: Images of the product
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
          type: array
        listings:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VariantListings
        omnichannel:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.OmniChannelVariant
        parent_product_id:
          type: string
        purchase_price:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PurchasePrice
        shipping_attributes:
          items:
            type: string
          type: array
        status:
          type: string
        store_group:
          description: Product StoreGroup
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantStoreGroupWithPrices
          type: array
        tags:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
          type: array
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantTranslations
        updated_at:
          type: string
        validate_stock:
          type: boolean
        variant_dimensions:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
        variant_group_id:
          type: string
        variant_group_images:
          description: Images from the variant's group
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
          type: array
        variant_name:
          type: string
        variant_number:
          type: string
        videos:
          description: Videos of the product
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Video
          type: array
        warehouse_variant_stock:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.WarehouseVariantStock
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.VariantListing:
      properties:
        id:
          type: string
        slug:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.VariantListings:
      properties:
        smart:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VariantListing
          type: array
        static:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VariantListing
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.VariantWithProductInformation:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        created_at:
          type: string
        custom_fields:
          additionalProperties:
            type: string
          type: object
        id:
          type: string
        images:
          description: Images of the product
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
          type: array
        listings:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VariantListings
        omnichannel:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.OmniChannelVariant
        parent_product_id:
          type: string
        product_name:
          type: string
        product_number:
          type: string
        purchase_price:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PurchasePrice
        shipping_attributes:
          items:
            type: string
          type: array
        status:
          type: string
        store_group:
          description: Product StoreGroup
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantStoreGroupWithPrices
          type: array
        tags:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
          type: array
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantTranslations
        updated_at:
          type: string
        validate_stock:
          type: boolean
        variant_dimensions:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
        variant_group_id:
          type: string
        variant_group_images:
          description: Images from the variant's group
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
          type: array
        variant_name:
          type: string
        variant_number:
          type: string
        videos:
          description: Videos of the product
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Video
          type: array
        warehouse_variant_stock:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.WarehouseVariantStock
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.Video:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        description:
          type: string
        folder_id:
          type: string
        id:
          type: string
        path:
          type: string
        public:
          type: boolean
        status:
          type: string
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoTranslations
        variants:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoVariant
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoTranslations:
      properties:
        description:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
        title:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Translation
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoUrl:
      properties:
        constraints:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Constraint
        expires_at:
          type: integer
        id:
          type: string
        path:
          type: string
        upload_url:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoVariant:
      properties:
        format:
          type: string
        height:
          type: integer
        url:
          type: string
        width:
          type: integer
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoWithUsedBy:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        description:
          type: string
        folder_id:
          type: string
        id:
          type: string
        path:
          type: string
        public:
          type: boolean
        status:
          type: string
        title:
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoTranslations
        used_by:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AssetConsumer
          type: array
        variants:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoVariant
          type: array
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.WarehouseStock:
      properties:
        stock:
          type: integer
        warehouse_id:
          type: string
      type: object
    github_com_enadhq_nabbit_internal_pkg_webserver_models.WarehouseVariantStock:
      properties:
        available_online:
          type: boolean
        created_at:
          type: string
        id:
          type: string
        inventory_date:
          type: string
        quantity:
          type: integer
        updated_at:
          type: string
        warehouse_name:
          type: string
        warehouse_slug:
          type: string
      type: object
    internal_pkg_webserver_v1.AddCategoryToProduct:
      properties:
        order:
          description: set which order placement the product have in the category
          type: integer
      type: object
    internal_pkg_webserver_v1.AddImageRelationship:
      properties:
        item_id:
          type: string
        item_type:
          enum:
            - product
            - variant
          type: string
        priority:
          description: >-
            Priority of the image, i.e. the order in which it should be
            displayed
          minimum: 1
          type: integer
      required:
        - item_id
        - item_type
      type: object
    internal_pkg_webserver_v1.AddResourcesToShareableLinkRequest:
      properties:
        file_ids:
          items:
            type: string
          type: array
        folder_ids:
          items:
            type: string
          type: array
        image_ids:
          items:
            type: string
          type: array
        video_ids:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.AddTagToProductPayload:
      properties:
        order:
          description: set which order placement the product have in the category
          type: integer
      type: object
    internal_pkg_webserver_v1.AddVideoRelationship:
      properties:
        item_id:
          type: string
        item_type:
          enum:
            - product
            - variant
          type: string
      required:
        - item_id
        - item_type
      type: object
    internal_pkg_webserver_v1.AttributeWithFields:
      properties:
        created_at:
          type: string
        description:
          type: string
        fields:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTemplateField
          type: array
        filterable:
          type: boolean
        id:
          type: string
        key:
          type: string
        linked_attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        name:
          type: string
        template_key:
          type: string
        template_name:
          type: string
        translatable:
          type: boolean
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTranslations
        updated_at:
          type: string
        values:
          additionalProperties:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeValue
          type: object
      type: object
    internal_pkg_webserver_v1.BatchPrice:
      properties:
        amount_cents_with_tax:
          minimum: 0
          type: integer
        market_slug:
          type: string
        on_sale:
          type: boolean
        reference_price_with_tax:
          minimum: 0
          type: integer
        sale_end_timestamp:
          type: string
        sale_price_with_tax:
          minimum: 0
          type: integer
        sale_start_timestamp:
          type: string
        status:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PriceStatus
          enum:
            - active
            - inactive
            - draft
      required:
        - market_slug
        - status
      type: object
    internal_pkg_webserver_v1.BrandRequest:
      properties:
        cover_id:
          type: string
        description:
          type: string
        logo_id:
          type: string
        name:
          type: string
        slug:
          type: string
      required:
        - name
        - slug
      type: object
    internal_pkg_webserver_v1.BrandResponse:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Brand
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.BrandSeriesRequest:
      properties:
        cover_id:
          type: string
        description:
          type: string
        logo_id:
          type: string
        name:
          type: string
        slug:
          type: string
      required:
        - name
        - slug
      type: object
    internal_pkg_webserver_v1.BulkAddAttributeRelationshipsResponse:
      properties:
        failed_adds:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkAttributeRelationshipFailedOp
          type: array
        successful_adds:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkAttributeRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkAddImageRelationshipFailedOp:
      properties:
        item_id:
          type: string
        item_type:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkAddImageRelationshipItem:
      properties:
        item_id:
          type: string
        item_type:
          enum:
            - product
            - variant
          type: string
        priority:
          minimum: 1
          type: integer
      required:
        - item_id
        - item_type
      type: object
    internal_pkg_webserver_v1.BulkAddImageRelationshipsPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkAddImageRelationshipItem
          maxItems: 100
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkAddImageRelationshipsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkAddImageRelationshipFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkAddImageRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkAddProductsToCategoriesResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCategoryProductFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCategoryProductRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkAddProductsToCollectionsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCollectionProductFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCollectionProductRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkAddProductsToTagsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkProductTagFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkProductTagRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkAddVariantsToTagsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkVariantTagFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkVariantTagRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkAttributeRelationshipFailedOp:
      properties:
        attribute_id:
          type: string
        item_id:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkAttributeRelationshipItem:
      properties:
        attribute_id:
          type: string
        item_ids:
          items:
            type: string
          minItems: 1
          type: array
      required:
        - attribute_id
        - item_ids
      type: object
    internal_pkg_webserver_v1.BulkCategoryProductFailedOp:
      properties:
        category_id:
          type: string
        product_id:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCategoryProductRelationshipItem:
      properties:
        category_id:
          type: string
        product_ids:
          items:
            type: string
          minItems: 1
          type: array
      required:
        - category_id
        - product_ids
      type: object
    internal_pkg_webserver_v1.BulkCollectionProductFailedOp:
      properties:
        collection_id:
          type: string
        product_id:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCollectionProductRelationshipItem:
      properties:
        collection_id:
          type: string
        product_ids:
          items:
            type: string
          minItems: 1
          type: array
      required:
        - collection_id
        - product_ids
      type: object
    internal_pkg_webserver_v1.BulkCreateAttributeFailed:
      properties:
        input:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateAttributeItem
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateAttributeItem:
      properties:
        description:
          description: A description for the attribute.
          type: string
        key:
          description: A unique key for the attribute.
          type: string
        name:
          description: The name of the attribute.
          type: string
        values:
          additionalProperties: {}
          description: >-
            Values for the attribute's fields, where the key is the field's key.

            The expected value type depends on the field's `type` defined in the
            attribute template:

            - "text": string

            - "number": number

            - "boolean": boolean

            - "color": string (hex format, e.g., "#RRGGBB")

            - "image": string (base64 encoded image data or a public URL)
          type: object
      required:
        - key
        - name
      type: object
    internal_pkg_webserver_v1.BulkCreateAttributeTemplateFailed:
      properties:
        input:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.InputAttributeTemplate
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateAttributeTemplatesPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.InputAttributeTemplate
          maxItems: 50
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkCreateAttributeTemplatesResponse:
      properties:
        failed_creations:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateAttributeTemplateFailed
          type: array
        successful_creations:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTemplate
          type: array
      type: object
    internal_pkg_webserver_v1.BulkCreateAttributesPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateAttributeItem
          maxItems: 50
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkCreateAttributesResponse:
      properties:
        failed_creations:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateAttributeFailed
          type: array
        successful_creations:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
      type: object
    internal_pkg_webserver_v1.BulkCreateCategoriesPayload:
      properties:
        categories:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputCategory'
          maxItems: 50
          type: array
      required:
        - categories
      type: object
    internal_pkg_webserver_v1.BulkCreateCategoriesResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateCategoryFailedCreation
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Category
          type: array
      type: object
    internal_pkg_webserver_v1.BulkCreateCategoryFailedCreation:
      properties:
        name:
          type: string
        reason:
          type: string
        slug:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateCollectionFailedCreation:
      properties:
        reason:
          type: string
        slug:
          type: string
        title:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateCollectionsPayload:
      properties:
        collections:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.CollectionRequest'
          maxItems: 50
          type: array
      required:
        - collections
      type: object
    internal_pkg_webserver_v1.BulkCreateCollectionsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateCollectionFailedCreation
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Collection
          type: array
      type: object
    internal_pkg_webserver_v1.BulkCreateFailedCreation:
      properties:
        product_number:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateOmnichannelFailedCreation:
      properties:
        payload:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.CreateOmniChannel'
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateOmnichannelsPayload:
      properties:
        omnichannels:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.CreateOmniChannel'
          maxItems: 100
          type: array
      required:
        - omnichannels
      type: object
    internal_pkg_webserver_v1.BulkCreateOmnichannelsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateOmnichannelFailedCreation
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Omnichannel
          type: array
      type: object
    internal_pkg_webserver_v1.BulkCreateProductsPayload:
      properties:
        products:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.CreateProductPayload
          maxItems: 20
          type: array
      required:
        - products
      type: object
    internal_pkg_webserver_v1.BulkCreateProductsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateFailedCreation
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Product
          type: array
      type: object
    internal_pkg_webserver_v1.BulkCreateSchedulingFailedOp:
      properties:
        item_id:
          type: string
        item_type:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateSchedulingPayload:
      properties:
        jobs:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.CreateSchedulingPayload
          maxItems: 100
          type: array
      required:
        - jobs
      type: object
    internal_pkg_webserver_v1.BulkCreateSchedulingResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateSchedulingFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Job
          type: array
      type: object
    internal_pkg_webserver_v1.BulkCreateTagFailedCreation:
      properties:
        key:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateTagsPayload:
      properties:
        tags:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.CreateTagPayload'
          maxItems: 50
          type: array
      required:
        - tags
      type: object
    internal_pkg_webserver_v1.BulkCreateTagsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateTagFailedCreation
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
          type: array
      type: object
    internal_pkg_webserver_v1.BulkCreateVariantFailedCreation:
      properties:
        reason:
          type: string
        variant_number:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkCreateVariantItem:
      properties:
        custom_fields:
          additionalProperties:
            type: string
          type: object
        product_id:
          type: string
        purchase_price:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PurchasePrice
        status:
          description: Status of the product
          enum:
            - active
            - draft
            - inactive
          type: string
        stock:
          description: Stock level of the variant
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputVariantStock'
          type: array
        validate_stock:
          type: boolean
        variant_dimensions:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
        variant_name:
          description: VariantName of the variant
          type: string
        variant_number:
          description: Number of the variant
          type: string
      required:
        - product_id
        - status
        - stock
        - variant_name
        - variant_number
      type: object
    internal_pkg_webserver_v1.BulkCreateVariantsPayload:
      properties:
        variants:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateVariantItem
          maxItems: 50
          type: array
      required:
        - variants
      type: object
    internal_pkg_webserver_v1.BulkCreateVariantsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCreateVariantFailedCreation
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Variant
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteCategoriesPayload:
      properties:
        category_ids:
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - category_ids
      type: object
    internal_pkg_webserver_v1.BulkDeleteCategoriesResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteCollectionsPayload:
      properties:
        collection_ids:
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - collection_ids
      type: object
    internal_pkg_webserver_v1.BulkDeleteCollectionsResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteFailed:
      properties:
        id:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkDeleteImagesPayload:
      properties:
        image_ids:
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - image_ids
      type: object
    internal_pkg_webserver_v1.BulkDeleteImagesResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeletePricesPayload:
      properties:
        price_ids:
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - price_ids
      type: object
    internal_pkg_webserver_v1.BulkDeletePricesResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteProductsPayload:
      properties:
        product_ids:
          items:
            type: string
          maxItems: 50
          minItems: 1
          type: array
      required:
        - product_ids
      type: object
    internal_pkg_webserver_v1.BulkDeleteProductsResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteSchedulingPayload:
      properties:
        job_ids:
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - job_ids
      type: object
    internal_pkg_webserver_v1.BulkDeleteSchedulingResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.DeleteSchedulingResponse
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteStockItem:
      properties:
        variant_id:
          type: string
        warehouse_slug:
          type: string
      required:
        - variant_id
        - warehouse_slug
      type: object
    internal_pkg_webserver_v1.BulkDeleteStockPayload:
      properties:
        items:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteStockItem'
          maxItems: 100
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkDeleteStockResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkStockFailedOp'
          type: array
        successful:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteStockItem'
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteTagsPayload:
      properties:
        tag_ids:
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - tag_ids
      type: object
    internal_pkg_webserver_v1.BulkDeleteTagsResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteVariantsPayload:
      properties:
        variant_ids:
          items:
            type: string
          maxItems: 50
          minItems: 1
          type: array
      required:
        - variant_ids
      type: object
    internal_pkg_webserver_v1.BulkDeleteVariantsResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkDeleteVideosPayload:
      properties:
        video_ids:
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - video_ids
      type: object
    internal_pkg_webserver_v1.BulkDeleteVideosResponse:
      properties:
        failed:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkDeleteFailed'
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkModifyAttributeRelationshipsPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkAttributeRelationshipItem
          maxItems: 50
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkModifyCategoryProductsPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCategoryProductRelationshipItem
          maxItems: 50
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkModifyCollectionProductsPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCollectionProductRelationshipItem
          maxItems: 50
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkModifyProductTagsPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkProductTagRelationshipItem
          maxItems: 50
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkModifyVariantTagsPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkVariantTagRelationshipItem
          maxItems: 50
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkPatchAttributeFailed:
      properties:
        input:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkPatchAttributeItem
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkPatchAttributeItem:
      properties:
        description:
          description: The new description for the attribute. Optional.
          type: string
        key:
          description: The unique key of the attribute to patch.
          type: string
        name:
          description: The new name of the attribute. Optional.
          type: string
        values:
          additionalProperties: {}
          description: >-
            Values for the attribute's fields to update, where the key is the
            field's key.

            The expected value type depends on the field's `type` defined in the
            attribute template:

            - "text": string

            - "number": number

            - "boolean": boolean

            - "color": string (hex format, e.g., "#RRGGBB")

            - "image": string (base64 encoded image data or a public URL)
          type: object
      required:
        - key
      type: object
    internal_pkg_webserver_v1.BulkPatchAttributesPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchAttributeItem
          maxItems: 50
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkPatchAttributesResponse:
      properties:
        failed_patches:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchAttributeFailed
          type: array
        successful_patches:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
      type: object
    internal_pkg_webserver_v1.BulkPatchCategoriesPayload:
      properties:
        categories:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchCategoryItem
          maxItems: 50
          type: array
      required:
        - categories
      type: object
    internal_pkg_webserver_v1.BulkPatchCategoriesResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchFailedUpdate
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Category
          type: array
      type: object
    internal_pkg_webserver_v1.BulkPatchCategoryItem:
      properties:
        childless:
          type: boolean
        id:
          type: string
        name:
          type: string
        parent_id:
          type: string
        slug:
          type: string
        sort_order:
          minimum: 0
          type: integer
        status:
          enum:
            - active
            - draft
            - inactive
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.CategoryTranslations
      required:
        - id
      type: object
    internal_pkg_webserver_v1.BulkPatchCollectionItem:
      properties:
        id:
          type: string
        parent_id:
          type: string
        slug:
          type: string
        status:
          enum:
            - active
            - inactive
            - draft
          type: string
        title:
          type: string
      required:
        - id
      type: object
    internal_pkg_webserver_v1.BulkPatchCollectionsPayload:
      properties:
        collections:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchCollectionItem
          maxItems: 50
          type: array
      required:
        - collections
      type: object
    internal_pkg_webserver_v1.BulkPatchCollectionsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchFailedUpdate
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Collection
          type: array
      type: object
    internal_pkg_webserver_v1.BulkPatchFailedUpdate:
      properties:
        id:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkPatchOmnichannelFailedUpdate:
      properties:
        id:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkPatchOmnichannelItem:
      properties:
        id:
          type: string
        relationships:
          items:
            type: string
          type: array
        value:
          type: string
      required:
        - id
      type: object
    internal_pkg_webserver_v1.BulkPatchOmnichannelsPayload:
      properties:
        omnichannels:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchOmnichannelItem
          maxItems: 100
          type: array
      required:
        - omnichannels
      type: object
    internal_pkg_webserver_v1.BulkPatchOmnichannelsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchOmnichannelFailedUpdate
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Omnichannel
          type: array
      type: object
    internal_pkg_webserver_v1.BulkPatchPriceItem:
      properties:
        amount_cents_with_tax:
          minimum: 0
          type: integer
        id:
          type: string
        on_sale:
          type: boolean
        reference_price_with_tax:
          minimum: 0
          type: integer
        sale_end_timestamp:
          type: string
        sale_price_with_tax:
          minimum: 0
          type: integer
        sale_start_timestamp:
          type: string
        status:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PriceStatus
          enum:
            - active
            - inactive
            - draft
      required:
        - id
      type: object
    internal_pkg_webserver_v1.BulkPatchPricesPayload:
      properties:
        prices:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkPatchPriceItem'
          maxItems: 100
          type: array
      required:
        - prices
      type: object
    internal_pkg_webserver_v1.BulkPatchPricesResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchFailedUpdate
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantPriceWithStoreGroup
          type: array
      type: object
    internal_pkg_webserver_v1.BulkPatchProductItem:
      properties:
        brand_id:
          description: Brand or series of a brand connected to product
          type: string
        custom:
          additionalProperties:
            type: string
          description: Custom fields
          type: object
        description:
          description: >-
            Deprecated: read-only in write payloads. Derived from
            html_description.
          type: string
        exclude_from_feeds:
          description: Whenever a product should exist in feeds or not
          type: boolean
        html_description:
          description: >-
            HTML description of the description fields. All of the fields which
            is not related to showing content, e.g <button> or <script> tags
            will be stripped from the input
          type: string
        html_short_description:
          description: >-
            HTML Shortdescription of the description fields. All of the fields
            which is not related to showing content, e.g <button> or <script>
            tags will be stripped from the input
          type: string
        id:
          type: string
        market_status:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.ProductMarketStatus'
          type: array
        meta_description:
          description: Meta description for SEO
          type: string
        meta_title:
          description: Meta title for SEO
          type: string
        package_dimensions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
          description: The package dimensions
        product_dimensions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
          description: The products dimensions
        product_name:
          description: Name of the product
          type: string
        product_type:
          description: Product type
          type: string
        short_description:
          description: >-
            Deprecated: read-only in write payloads. Derived from
            html_short_description.
          type: string
        slug:
          description: Slug for the product
          type: string
        status:
          description: Status of the product
          enum:
            - active
            - draft
            - inactive
            - archived
          type: string
        tax_group_slug:
          description: >-
            If provided will the product using the selected tax group. Otherwise
            will we use the default tax group for the app
          minLength: 0
          type: string
      required:
        - id
      type: object
    internal_pkg_webserver_v1.BulkPatchProductPayload:
      properties:
        products:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchProductItem
          maxItems: 20
          type: array
      required:
        - products
      type: object
    internal_pkg_webserver_v1.BulkPatchProductsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchFailedUpdate
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Product
          type: array
      type: object
    internal_pkg_webserver_v1.BulkPatchTagItem:
      properties:
        filterable:
          type: boolean
        id:
          type: string
        name:
          type: string
        new_key:
          type: string
        status:
          enum:
            - active
            - inactive
            - draft
          type: string
      required:
        - id
      type: object
    internal_pkg_webserver_v1.BulkPatchTagsPayload:
      properties:
        tags:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkPatchTagItem'
          maxItems: 50
          type: array
      required:
        - tags
      type: object
    internal_pkg_webserver_v1.BulkPatchTagsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchFailedUpdate
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
          type: array
      type: object
    internal_pkg_webserver_v1.BulkPatchVariantItem:
      properties:
        custom_fields:
          additionalProperties:
            type: string
          type: object
        id:
          type: string
        purchase_price:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PurchasePrice
        status:
          description: Status of the product
          enum:
            - active
            - draft
            - inactive
          type: string
        stock:
          description: Stock level of the variant
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputVariantStock'
          type: array
        validate_stock:
          type: boolean
        variant_dimensions:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
        variant_name:
          description: Name of the variant
          type: string
      required:
        - id
        - stock
      type: object
    internal_pkg_webserver_v1.BulkPatchVariantsPayload:
      properties:
        variants:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchVariantItem
          maxItems: 50
          type: array
      required:
        - variants
      type: object
    internal_pkg_webserver_v1.BulkPatchVariantsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPatchFailedUpdate
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Variant
          type: array
      type: object
    internal_pkg_webserver_v1.BulkProductTagFailedOp:
      properties:
        product_id:
          type: string
        reason:
          type: string
        tag_id:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkProductTagRelationshipItem:
      properties:
        product_ids:
          items:
            type: string
          minItems: 1
          type: array
        tag_id:
          type: string
      required:
        - product_ids
        - tag_id
      type: object
    internal_pkg_webserver_v1.BulkPutPriceFailedOp:
      properties:
        market_slug:
          type: string
        reason:
          type: string
        store_group_slug:
          type: string
        variant_id:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkPutPriceItem:
      properties:
        amount_cents_with_tax:
          minimum: 0
          type: integer
        market_slug:
          type: string
        on_sale:
          type: boolean
        reference_price_with_tax:
          minimum: 0
          type: integer
        sale_end_timestamp:
          type: string
        sale_price_with_tax:
          minimum: 0
          type: integer
        sale_start_timestamp:
          type: string
        status:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PriceStatus
          enum:
            - active
            - inactive
            - draft
        store_group_slug:
          type: string
        variant_id:
          type: string
      required:
        - amount_cents_with_tax
        - market_slug
        - store_group_slug
        - variant_id
      type: object
    internal_pkg_webserver_v1.BulkPutPricesPayload:
      properties:
        prices:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkPutPriceItem'
          maxItems: 100
          type: array
      required:
        - prices
      type: object
    internal_pkg_webserver_v1.BulkPutPricesResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkPutPriceFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantPriceWithStoreGroup
          type: array
      type: object
    internal_pkg_webserver_v1.BulkRemoveAttributeRelationshipsResponse:
      properties:
        failed_removals:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkAttributeRelationshipFailedOp
          type: array
        successful_removals:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkAttributeRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkRemoveImageRelationshipFailedOp:
      properties:
        item_id:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkRemoveImageRelationshipItem:
      properties:
        item_id:
          type: string
      required:
        - item_id
      type: object
    internal_pkg_webserver_v1.BulkRemoveImageRelationshipsPayload:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkRemoveImageRelationshipItem
          maxItems: 100
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkRemoveImageRelationshipsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkRemoveImageRelationshipFailedOp
          type: array
        successful:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.BulkRemoveProductsFromCategoriesResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCategoryProductFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCategoryProductRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkRemoveProductsFromCollectionsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCollectionProductFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkCollectionProductRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkRemoveProductsFromTagsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkProductTagFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkProductTagRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkRemoveVariantsFromTagsResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkVariantTagFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkVariantTagRelationshipItem
          type: array
      type: object
    internal_pkg_webserver_v1.BulkSetMediaFolderItem:
      properties:
        id:
          type: string
        type:
          enum:
            - image
            - video
            - file
          type: string
      required:
        - id
        - type
      type: object
    internal_pkg_webserver_v1.BulkSetMediaFolderRequest:
      properties:
        items:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkSetMediaFolderItem
          minItems: 1
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkSetStockItem:
      properties:
        inventory_date:
          type: string
        quantity:
          type: integer
        variant_id:
          type: string
        warehouse_slug:
          type: string
      required:
        - variant_id
        - warehouse_slug
      type: object
    internal_pkg_webserver_v1.BulkSetStockPayload:
      properties:
        items:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkSetStockItem'
          maxItems: 100
          type: array
      required:
        - items
      type: object
    internal_pkg_webserver_v1.BulkSetStockResponse:
      properties:
        failed_sets:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkStockFailedOp'
          type: array
        successful_sets:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.WarehouseVariantStock
          type: array
      type: object
    internal_pkg_webserver_v1.BulkStockFailedOp:
      properties:
        reason:
          type: string
        variant_id:
          type: string
        warehouse_slug:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkUploadImageFailedOp:
      properties:
        filename:
          type: string
        reason:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkUploadImageItem:
      properties:
        alt:
          type: string
        blurhash:
          type: string
        connect_to_sku:
          type: boolean
        connect_to_slug:
          type: boolean
        copyright:
          type: string
        custom:
          additionalProperties:
            type: string
          type: object
        filename:
          type: string
        image_base64:
          type: string
        parent_id:
          type: string
        status:
          enum:
            - active
            - inactive
            - draft
          type: string
        title:
          type: string
        url:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkUploadImagesPayload:
      properties:
        images:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkUploadImageItem'
          maxItems: 10
          type: array
      required:
        - images
      type: object
    internal_pkg_webserver_v1.BulkUploadImagesResponse:
      properties:
        failed:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.BulkUploadImageFailedOp
          type: array
        successful:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithUsedBy
          type: array
      type: object
    internal_pkg_webserver_v1.BulkVariantTagFailedOp:
      properties:
        reason:
          type: string
        tag_id:
          type: string
        variant_id:
          type: string
      type: object
    internal_pkg_webserver_v1.BulkVariantTagRelationshipItem:
      properties:
        tag_id:
          type: string
        variant_ids:
          items:
            type: string
          minItems: 1
          type: array
      required:
        - tag_id
        - variant_ids
      type: object
    internal_pkg_webserver_v1.BundleGroupDiscount:
      properties:
        amount_cents:
          minimum: 0
          type: integer
        currency_code:
          type: string
      type: object
    internal_pkg_webserver_v1.CollectionProductRequest:
      properties:
        product_ids:
          items:
            type: string
          type: array
      required:
        - product_ids
      type: object
    internal_pkg_webserver_v1.CollectionRequest:
      properties:
        parent_id:
          type: string
        slug:
          type: string
        status:
          enum:
            - active
            - inactive
            - draft
          type: string
        title:
          type: string
      required:
        - slug
        - status
        - title
      type: object
    internal_pkg_webserver_v1.CollectionStringResponse:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.CollectionsResponse:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Collection
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.CreateBundleRulePayload:
      properties:
        discount_percentage:
          type: integer
        discount_type:
          type: string
        discounts:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BundleGroupDiscount'
          type: array
        exclude_discounted_price:
          description: If products with discounts should be excluded from the bundle
          type: boolean
        exclude_full_price:
          description: If products with no discounts should be excluded from the bundle
          type: boolean
        items:
          description: Ensure at least one element is present
          items:
            type: string
          type: array
        quantity:
          type: integer
        tag_conditions:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TagConditionsReq
      required:
        - discounts
        - items
      type: object
    internal_pkg_webserver_v1.CreateFolderRequest:
      properties:
        name:
          maxLength: 255
          minLength: 1
          type: string
        parent_id:
          type: string
        public:
          type: boolean
      required:
        - name
      type: object
    internal_pkg_webserver_v1.CreateMerchantUserPayload:
      properties:
        additions:
          additionalProperties:
            type: string
          type: object
        address:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.Address
        comment:
          type: string
        communication_preferences:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.CommunicationPreferences
        email:
          type: string
        email_verified:
          type: boolean
        is_super_admin:
          type: boolean
        language:
          minLength: 1
          type: string
        market:
          minLength: 1
          type: string
        name:
          minLength: 1
          type: string
        phone_number:
          type: string
        status:
          enum:
            - active
            - inactive
            - pending
          type: string
        store_group:
          minLength: 1
          type: string
        surname:
          minLength: 1
          type: string
      required:
        - email
        - language
        - market
        - name
        - status
        - store_group
        - surname
      type: object
    internal_pkg_webserver_v1.CreateOmniChannel:
      properties:
        field_type:
          description: >-
            Defines the type of field: text types (name, description, etc.)
            require a 'value', relationship types (category, collection, etc.)
            require 'relationships' array
          enum:
            - name
            - description
            - short_description
            - meta_description
            - slug
            - meta_title
            - html_description
            - html_short_description
            - category
            - collection
            - tag
            - attribute
            - image
          type: string
        market_id:
          type: string
        parent_id:
          type: string
        parent_type:
          enum:
            - product
            - variant
            - translation
          type: string
        relationships:
          description: >-
            Set the new relationships for this omnichannel. This will remove the
            old ones and add the relationships which exists in the array. The
            priority will be the order in the array
          items:
            type: string
          type: array
        store_group_id:
          type: string
        value:
          type: string
      required:
        - field_type
        - parent_id
        - parent_type
        - store_group_id
      type: object
    internal_pkg_webserver_v1.CreateProductBundleGroupPayload:
      properties:
        description:
          type: string
        end_date:
          description: 'Format: RFC3339 Example: "2023-12-31T00:00:00Z"'
          type: string
        name:
          description: Name of the bundle
          minLength: 0
          type: string
        start_date:
          description: 'Format: RFC3339 Example: "2023-12-31T00:00:00Z"'
          type: string
      required:
        - name
      type: object
    internal_pkg_webserver_v1.CreateProductBundlePayload:
      properties:
        discount_percentage:
          description: >-
            Used if discount_type is relative. This will apply to all markets
            it's added to
          maximum: 100
          minimum: 0
          type: integer
        discount_type:
          enum:
            - relative
            - fixed
          type: string
        discounts:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BundleGroupDiscount'
          type: array
        status:
          description: Status of the bundle
          enum:
            - active
            - draft
            - inactive
          type: string
      required:
        - discounts
      type: object
    internal_pkg_webserver_v1.CreateProductDraftPayload:
      properties:
        changeset:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductDraftChangeset
        publish_at:
          type: string
      required:
        - changeset
      type: object
    internal_pkg_webserver_v1.CreateProductPayload:
      properties:
        brand_id:
          description: Brand or series of a brand connected to product
          type: string
        custom:
          additionalProperties:
            type: string
          description: Custom fields
          type: object
        description:
          description: >-
            Deprecated: read-only in write payloads. Derived from
            html_description.
          type: string
        exclude_from_feeds:
          description: Whenever a product should exist in feeds or not. Default `false`
          type: boolean
        html_description:
          description: >-
            HTML description of the description fields. All of the fields which
            is not related to showing content, e.g <button> or <script> tags
            will be stripped from the input
          type: string
        html_short_description:
          description: >-
            HTML Shortdescription of the description fields. All of the fields
            which is not related to showing content, e.g <button> or <script>
            tags will be stripped from the input
          type: string
        market_status:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.ProductMarketStatus'
          type: array
        meta_description:
          description: Meta description for SEO
          type: string
        meta_title:
          description: Meta title for SEO
          type: string
        package_dimensions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
          description: The package dimensions
        product_dimensions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
          description: The products dimensions
        product_name:
          description: Name of the product
          type: string
        product_number:
          description: Product number
          type: string
        product_type:
          description: Product type. Default 'simple'
          type: string
        short_description:
          description: >-
            Deprecated: read-only in write payloads. Derived from
            html_short_description.
          type: string
        slug:
          description: Slug for the product
          type: string
        status:
          description: Status of the product
          enum:
            - active
            - draft
            - inactive
            - archived
          type: string
        tax_group_slug:
          description: The tax group related to the product
          type: string
      required:
        - product_name
        - product_number
        - status
        - tax_group_slug
      type: object
    internal_pkg_webserver_v1.CreateSchedulingPayload:
      properties:
        add_categories:
          items:
            type: string
          type: array
        add_collections:
          items:
            type: string
          type: array
        add_tags:
          items:
            type: string
          type: array
        execute_at:
          description: >-
            Execute at is the date when the product should change date. This
            date need to follow the format `YYYY-MM-DD`
          type: string
        item_id:
          type: string
        item_type:
          enum:
            - product
            - tag
            - image
            - price
            - variant
          type: string
        remove_categories:
          items:
            type: string
          type: array
        remove_collections:
          items:
            type: string
          type: array
        remove_tags:
          items:
            type: string
          type: array
        to_market_id:
          description: >-
            Market ID for market status change. Only used when item_type is
            `product`
          type: string
        to_market_status:
          description: Target market status. Only used when item_type is `product`
          enum:
            - active
            - inactive
            - draft
            - archived
          type: string
        to_on_sale:
          description: >-
            Used to change if a price is on sale on a specific date. Only used
            when item_type is `price`
          type: boolean
        to_price_with_tax:
          description: >-
            Used to change the price on a specific date. Only used when
            item_type is `price`
          type: integer
        to_sale_price_with_tax:
          description: >-
            Used to change the sale price on a specific date. Only used when
            item_type is `price`
          type: integer
        to_status:
          enum:
            - active
            - inactive
            - archived
            - draft
          type: string
        to_store_group_id:
          description: >-
            Store group ID for market status change. Only used when item_type is
            `product`
          type: string
      required:
        - execute_at
        - item_id
        - item_type
      type: object
    internal_pkg_webserver_v1.CreateShareableLinkRequest:
      properties:
        description:
          type: string
        expires_at:
          type: string
      type: object
    internal_pkg_webserver_v1.CreateTagPayload:
      properties:
        attributes_keys:
          items:
            type: string
          type: array
        filterable:
          type: boolean
        key:
          minLength: 0
          type: string
        name:
          minLength: 0
          type: string
        status:
          enum:
            - active
            - inactive
            - archived
            - draft
          type: string
      required:
        - key
        - name
        - status
      type: object
    internal_pkg_webserver_v1.CreateTranslationBody:
      properties:
        create_slug:
          description: >-
            if this is true and with the fieldType: name, it will generate a
            slug. Only available to products as of now.
          type: boolean
        field_type:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.TranslationFieldType
        language_code:
          description: >-
            ISO 639-1 formatted language code. Note: the language also needs to 
            be configured and supported by the app
          type: string
        parent_ref:
          type: string
        parent_type:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.TranslationType
          enum:
            - product
            - product_bundle
            - product_variant
            - image
            - attribute
            - attribute_value
            - category
            - tag
            - collection
            - file
            - bundle_group
            - video
            - brand
        translation:
          type: string
      required:
        - field_type
        - language_code
        - parent_ref
        - translation
      type: object
    internal_pkg_webserver_v1.DailySalesMetricResponse:
      properties:
        day:
          type: string
        order_count:
          type: integer
        sales_by_currency:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.SalesByCurrency'
          type: array
      type: object
    internal_pkg_webserver_v1.DeleteItemImageRelationship:
      properties:
        item_id:
          type: string
      required:
        - item_id
      type: object
    internal_pkg_webserver_v1.DeleteItemVideoRelationship:
      properties:
        item_id:
          type: string
      required:
        - item_id
      type: object
    internal_pkg_webserver_v1.DeleteMerchantUserPayload:
      properties:
        hard_delete:
          type: boolean
      type: object
    internal_pkg_webserver_v1.DeleteSchedulingResponse:
      properties:
        id:
          type: string
        item_name:
          type: string
      type: object
    internal_pkg_webserver_v1.DuplicateProductPayload:
      properties:
        product_number:
          description: Optional product number for the duplicated product
          type: string
      type: object
    internal_pkg_webserver_v1.ErrorMessage:
      properties:
        details:
          items:
            type: string
          type: array
        message:
          type: string
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.FullCollectionResponse:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Collection
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.HourlySalesMetricResponse:
      properties:
        hour:
          type: string
        order_count:
          type: integer
        sales_by_currency:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.SalesByCurrency'
          type: array
      type: object
    internal_pkg_webserver_v1.InputAddMarketToTaxGroup:
      properties:
        country_tax_percentages:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.InputTaxGroupCountryTaxPercentage
          minItems: 1
          type: array
      required:
        - country_tax_percentages
      type: object
    internal_pkg_webserver_v1.InputAddressUserRestriction:
      properties:
        merchant_user_id:
          type: string
      required:
        - merchant_user_id
      type: object
    internal_pkg_webserver_v1.InputAttributeField:
      properties:
        key:
          description: Key of the attribute template field
          type: string
        name:
          description: Name for the attribute template field
          type: string
        type:
          description: >-
            The type of the attribute template field. This field defines how we
            should treat the field when you create, update or list attributes
          enum:
            - boolean
            - text
            - number
            - image
            - color
          type: string
      required:
        - key
        - name
        - type
      type: object
    internal_pkg_webserver_v1.InputAttributeRelationshipField:
      properties:
        items:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.InputAttributeTemplate:
      properties:
        fields:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputAttributeField'
          type: array
        filterable:
          type: boolean
        key:
          description: Key of the attribute
          type: string
        name:
          description: Name of the attribute
          type: string
        resources:
          items:
            type: string
          type: array
        translatable:
          type: boolean
        type:
          description: Name of the attribute
          type: string
      required:
        - key
        - name
        - type
      type: object
    internal_pkg_webserver_v1.InputCategory:
      properties:
        childless:
          type: boolean
        name:
          type: string
        parent_id:
          type: string
        slug:
          description: Example "hello-world"
          type: string
        sort_order:
          minimum: 0
          type: integer
        status:
          enum:
            - active
            - draft
            - inactive
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.CategoryTranslations
      required:
        - name
        - slug
      type: object
    internal_pkg_webserver_v1.InputCreateOrder:
      properties:
        billing_address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrderAddress'
        bonus_total:
          minimum: 0
          type: number
        country_code:
          type: string
        currency_code:
          type: string
        discount_total:
          minimum: 0
          type: number
        gift_card_total:
          minimum: 0
          type: number
        grand_total:
          minimum: 0
          type: number
        language_code:
          type: string
        lines:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrderLine'
          minItems: 1
          type: array
        merchant_user_id:
          type: string
        payment_method:
          type: string
        payment_method_id:
          type: string
        payment_method_name:
          type: string
        reference:
          type: string
        session_id:
          type: string
        shipping_address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrderAddress'
        shipping_methods:
          items:
            type: string
          type: array
        shipping_total:
          minimum: 0
          type: number
        source:
          type: string
        status:
          enum:
            - placed
            - refunded
            - compensated
            - released
            - delivered
            - cancelled
          type: string
        sub_total:
          minimum: 0
          type: number
        tax_total:
          minimum: 0
          type: number
      required:
        - country_code
        - currency_code
        - grand_total
        - language_code
        - lines
        - reference
        - source
        - status
      type: object
    internal_pkg_webserver_v1.InputMarket:
      properties:
        active:
          type: boolean
        country_codes:
          items:
            type: string
          minItems: 1
          type: array
        currency_code:
          type: string
        locale:
          type: string
        name:
          type: string
        slug:
          type: string
      required:
        - country_codes
        - currency_code
        - locale
        - name
        - slug
      type: object
    internal_pkg_webserver_v1.InputOrderAddress:
      properties:
        city:
          type: string
        country_code:
          type: string
        email:
          type: string
        family_name:
          type: string
        given_name:
          type: string
        postal_code:
          type: string
        state_or_province:
          type: string
        street_address:
          type: string
        street_address_2:
          type: string
        telephone_number:
          type: string
      type: object
    internal_pkg_webserver_v1.InputOrderLine:
      properties:
        base_price_amount:
          minimum: 0
          type: number
        currency_code:
          type: string
        product_id:
          type: string
        quantity:
          minimum: 1
          type: integer
        tax_group_id:
          type: string
        total_discount_amount:
          minimum: 0
          type: number
        total_price_amount:
          minimum: 0
          type: number
        total_tax_amount:
          minimum: 0
          type: number
        variant_id:
          type: string
      required:
        - base_price_amount
        - currency_code
        - product_id
        - quantity
        - total_price_amount
        - variant_id
      type: object
    internal_pkg_webserver_v1.InputOrganisation:
      properties:
        addresses:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.InputOrganisationAddress
          type: array
        comment:
          type: string
        contact_name:
          type: string
        credit_check:
          type: boolean
        custom_fields:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.CustomFields
        email:
          type: string
        external_ref:
          type: string
        invoice_email:
          type: string
        name:
          type: string
        organisation_number:
          type: string
        phone:
          type: string
        status:
          enum:
            - active
            - pending
            - inactive
          type: string
        tax_id_vat_number:
          type: string
      required:
        - email
        - name
        - organisation_number
        - status
      type: object
    internal_pkg_webserver_v1.InputOrganisationAddress:
      properties:
        city:
          type: string
        co_address:
          type: string
        company_name:
          type: string
        country:
          type: string
        house_number:
          type: string
        id:
          type: string
        is_default:
          type: boolean
        name:
          type: string
        phone:
          type: string
        postal_code:
          type: string
        shipping_type:
          enum:
            - billing
            - shipping
          type: string
        state_province:
          type: string
        street_address:
          type: string
      required:
        - city
        - company_name
        - country
        - postal_code
        - shipping_type
        - street_address
      type: object
    internal_pkg_webserver_v1.InputOrganisationUser:
      properties:
        level:
          enum:
            - default
            - admin
            - super-admin
          type: string
        role:
          enum:
            - customer
            - agent
          type: string
        user_id:
          type: string
      required:
        - level
        - role
        - user_id
      type: object
    internal_pkg_webserver_v1.InputPrice:
      properties:
        amount_cents_with_tax:
          minimum: 0
          type: integer
        market_slug:
          type: string
        on_sale:
          type: boolean
        reference_price_with_tax:
          minimum: 0
          type: integer
        sale_end_timestamp:
          type: string
        sale_price_with_tax:
          minimum: 0
          type: integer
        sale_start_timestamp:
          type: string
        status:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PriceStatus
          enum:
            - active
            - inactive
            - draft
        store_group_slug:
          type: string
      required:
        - market_slug
        - status
        - store_group_slug
      type: object
    internal_pkg_webserver_v1.InputPriceBatch:
      properties:
        prices:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BatchPrice'
          type: array
        store_group_slug:
          type: string
      required:
        - prices
        - store_group_slug
      type: object
    internal_pkg_webserver_v1.InputRedirect:
      properties:
        item_id:
          type: string
        locale:
          type: string
        new_slug:
          type: string
        old_slug:
          type: string
        type:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.RedirectType
          enum:
            - product
            - page
            - collection
            - category
            - product_bundle
            - brand
            - serie
            - campaign
      required:
        - locale
        - new_slug
        - old_slug
      type: object
    internal_pkg_webserver_v1.InputStoreGroup:
      properties:
        country_of_sale:
          description: >-
            Country value needs to follow ISO3166_1_alpha2, which means we want
            a country value written in alpha-2 two-letter country codes,
            Example: SE or FI
          type: string
        description:
          type: string
        markets:
          description: The slug of the markets which should be related to this store group
          items:
            type: string
          type: array
        name:
          type: string
        slug:
          type: string
        store_type:
          enum:
            - b2c
            - b2b
            - d2c
            - d2b
          type: string
      required:
        - country_of_sale
        - name
        - slug
      type: object
    internal_pkg_webserver_v1.InputStoreGroupMarket:
      properties:
        is_tax_exemption_eligible:
          type: boolean
        is_tax_included_in_price:
          type: boolean
      type: object
    internal_pkg_webserver_v1.InputTaxGroup:
      properties:
        description:
          type: string
        is_default:
          description: >-
            If this tax group is the default tax group. If a product is created
            without a tax group will this tax group be selected
          type: boolean
        name:
          type: string
        slug:
          type: string
      required:
        - name
        - slug
      type: object
    internal_pkg_webserver_v1.InputTaxGroupCountryTaxPercentage:
      properties:
        country_code:
          type: string
        tax_percentage:
          maximum: 100
          minimum: 0
          type: number
      required:
        - country_code
      type: object
    internal_pkg_webserver_v1.InputThirdPartyLinks:
      properties:
        title:
          type: string
        type:
          enum:
            - image
            - video
            - link
          type: string
        url:
          type: string
      required:
        - title
      type: object
    internal_pkg_webserver_v1.InputUpdateCategory:
      properties:
        childless:
          type: boolean
        name:
          type: string
        parent_id:
          description: >-
            Note: Always send in parent id even if you don't want to update it.
            Sending in parent_id without value will remove the parent_id
          type: string
        slug:
          description: Example "hello-world"
          type: string
        sort_order:
          minimum: 0
          type: integer
        status:
          enum:
            - active
            - draft
            - inactive
          type: string
        translations:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.CategoryTranslations
      type: object
    internal_pkg_webserver_v1.InputUpdateOrder:
      properties:
        billing_address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrderAddress'
        bonus_total:
          minimum: 0
          type: number
        country_code:
          type: string
        currency_code:
          type: string
        discount_total:
          minimum: 0
          type: number
        gift_card_total:
          minimum: 0
          type: number
        grand_total:
          minimum: 0
          type: number
        language_code:
          type: string
        lines:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrderLine'
          type: array
        merchant_user_id:
          type: string
        payment_method:
          type: string
        payment_method_id:
          type: string
        payment_method_name:
          type: string
        reference:
          type: string
        session_id:
          type: string
        shipping_address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.InputOrderAddress'
        shipping_methods:
          items:
            type: string
          type: array
        shipping_total:
          minimum: 0
          type: number
        source:
          type: string
        status:
          enum:
            - placed
            - refunded
            - compensated
            - released
            - delivered
            - cancelled
          type: string
        sub_total:
          minimum: 0
          type: number
        tax_total:
          minimum: 0
          type: number
      type: object
    internal_pkg_webserver_v1.InputUpdateOrderStatus:
      properties:
        status:
          enum:
            - placed
            - refunded
            - compensated
            - released
            - delivered
            - cancelled
          type: string
      required:
        - status
      type: object
    internal_pkg_webserver_v1.InputUpdateOrganisation:
      properties:
        addresses:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.InputOrganisationAddress
          type: array
        comment:
          type: string
        contact_name:
          type: string
        credit_check:
          type: boolean
        custom_fields:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.CustomFields
        email:
          type: string
        external_ref:
          type: string
        invoice_email:
          type: string
        name:
          type: string
        organisation_number:
          type: string
        phone:
          type: string
        status:
          enum:
            - active
            - pending
            - inactive
          type: string
        tax_id_vat_number:
          type: string
      type: object
    internal_pkg_webserver_v1.InputUpdateThirdPartyLink:
      properties:
        title:
          type: string
        type:
          enum:
            - image
            - video
            - link
          type: string
        url:
          type: string
      required:
        - title
      type: object
    internal_pkg_webserver_v1.InputVariant:
      properties:
        custom_fields:
          additionalProperties:
            type: string
          type: object
        purchase_price:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PurchasePrice
        status:
          description: Status of the product
          enum:
            - active
            - draft
            - inactive
            - archived
          type: string
        stock:
          description: Stock level of the variant
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputVariantStock'
          type: array
        validate_stock:
          type: boolean
        variant_dimensions:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
        variant_name:
          description: VariantName of the variant
          type: string
        variant_number:
          description: Number of the variant
          type: string
      required:
        - stock
        - variant_name
        - variant_number
      type: object
    internal_pkg_webserver_v1.InputVariantStock:
      properties:
        inventory_date:
          description: ISO 8601 date format with time zone e.g. 2024-12-12T09:13:31.039Z.
          type: string
        quantity:
          type: integer
        warehouse_slug:
          type: string
      required:
        - warehouse_slug
      type: object
    internal_pkg_webserver_v1.InputWarehouse:
      properties:
        address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.InputWarehouseAddress'
        available_online:
          default: true
          type: boolean
        markets:
          items:
            type: string
          type: array
        name:
          type: string
        slug:
          type: string
      required:
        - address
        - name
        - slug
      type: object
    internal_pkg_webserver_v1.InputWarehouseAddress:
      properties:
        city:
          type: string
        country:
          description: >-
            Country value needs to follow ISO3166_1_alpha2, which means we want
            a country value written in alpha-2 two-letter country codes,
            Example: SE or FI
          type: string
        postal_code:
          type: string
        state:
          type: string
        street_address:
          type: string
      required:
        - city
        - country
        - postal_code
        - state
        - street_address
      type: object
    internal_pkg_webserver_v1.ListingRuleRequest:
      properties:
        operator:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingRuleOperator
          enum:
            - equal
            - not-equal
            - greater-than
            - less-than
            - contains
        target:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingRuleTarget
          enum:
            - stock
            - price
            - attribute
            - title
            - category
        target_id:
          description: used for warehouse stock validation
          type: string
        value_float:
          type: number
        value_list:
          items:
            type: string
          type: array
        value_string:
          type: string
      required:
        - operator
        - target
      type: object
    internal_pkg_webserver_v1.MerchantUserResponse:
      properties:
        count:
          type: integer
        pages:
          type: integer
        users:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.MerchantUser
          type: array
      type: object
    internal_pkg_webserver_v1.MerchantUserSummaryResponse:
      properties:
        email:
          type: string
        id:
          type: string
        name:
          type: string
        surname:
          type: string
      type: object
    internal_pkg_webserver_v1.MerchantUserTag:
      properties:
        tag_ids:
          items:
            type: string
          minItems: 1
          type: array
      type: object
    internal_pkg_webserver_v1.Message:
      properties:
        message:
          type: string
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.MessageResponse:
      properties:
        message:
          type: string
      type: object
    internal_pkg_webserver_v1.OkResponse-array_internal_pkg_webserver_v1_OrderHistoryResponse:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.OrderHistoryResponse
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-array_internal_pkg_webserver_v1_OrderLineResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrderLineResponse'
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_MerchantUser:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.MerchantUser
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-github_com_enadhq_nabbit_internal_pkg_webserver_models_Omnichannel:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Omnichannel
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_MessageResponse:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.MessageResponse'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrderLineResponse:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.OrderLineResponse'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrderResponse:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.OrderResponse'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_OrganisationWithUsersAndAddresses:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.OrganisationWithUsersAndAddresses
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-internal_pkg_webserver_v1_SalesMetricsDataResponse:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.SalesMetricsDataResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponse-string:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseAttribute:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseAttributeList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseAttributeString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseAttributeTemplate:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTemplate
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseAttributeTemplateList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.AttributeTemplate
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseAttributeTemplateString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseAttributeWithFields:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.AttributeWithFields'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkAddAttributeRelationships:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkAddAttributeRelationshipsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkAddImageRelationships:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkAddImageRelationshipsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkAddProductsToCategories:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkAddProductsToCategoriesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkAddProductsToCollections:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkAddProductsToCollectionsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkAddProductsToTags:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkAddProductsToTagsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkAddVariantsToTags:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkAddVariantsToTagsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateAttributeTemplates:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateAttributeTemplatesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateAttributes:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateAttributesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateCategories:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateCategoriesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateCollections:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateCollectionsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateOmnichannels:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateOmnichannelsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateProducts:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateProductsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateScheduling:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateSchedulingResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateTags:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateTagsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkCreateVariants:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkCreateVariantsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteCategories:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteCategoriesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteCollections:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteCollectionsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteImages:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteImagesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeletePrices:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeletePricesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteProducts:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteProductsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteScheduling:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteSchedulingResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteStock:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteStockResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteTags:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteTagsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteVariants:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteVariantsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkDeleteVideos:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkDeleteVideosResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPatchAttributes:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkPatchAttributesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPatchCategories:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkPatchCategoriesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPatchCollections:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkPatchCollectionsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPatchOmnichannels:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkPatchOmnichannelsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPatchPrices:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkPatchPricesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPatchProducts:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkPatchProductsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPatchTags:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkPatchTagsResponse'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPatchVariants:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkPatchVariantsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkPutPrices:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkPutPricesResponse'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkRemoveAttributeRelationships:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkRemoveAttributeRelationshipsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkRemoveImageRelationships:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkRemoveImageRelationshipsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkRemoveProductsFromCategories:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkRemoveProductsFromCategoriesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkRemoveProductsFromCollections:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkRemoveProductsFromCollectionsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkRemoveProductsFromTags:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkRemoveProductsFromTagsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkRemoveVariantsFromTags:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkRemoveVariantsFromTagsResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkSetStock:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.BulkSetStockResponse'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseBulkUploadImages:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.BulkUploadImagesResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseCategory:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Category
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseCategoryList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Category
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseCategoryRemove:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseFile:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.File
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseFileString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseFileWithReferences:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.FileWithReferences
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseFiles:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.File
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseFolder:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Folder
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseFolderMedia:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.FolderMedia
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseFolderTree:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.FolderTree
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseFolderTreeItem:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.FolderTree
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseFolders:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Folder
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseImage:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithUsedBy
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseImageString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseImages:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Image
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseList-array_github_com_enadhq_nabbit_internal_pkg_webserver_models_Omnichannel:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Omnichannel
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseList-array_github_com_enadhq_nabbit_internal_pkg_webserver_models_OmnichannelProduct:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.OmnichannelProduct
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseList-array_github_com_enadhq_nabbit_internal_pkg_webserver_models_VariantWithProductInformation:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VariantWithProductInformation
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseList-array_internal_pkg_webserver_v1_OrderResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrderResponse'
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseList-array_internal_pkg_webserver_v1_Organisation:
      properties:
        data:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.Organisation'
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseList-internal_pkg_webserver_v1_MerchantUserResponse:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.MerchantUserResponse'
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseMarket:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Market
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseMarketDeleted:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseMarketList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Market
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseMessage:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProduct:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Product
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductBundle:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Bundle
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductBundleDeleted:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductBundleGroup:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleGroup
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductBundleGroupDeleted:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductBundleGroupList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleGroup
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseProductBundleRule:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleRule
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductBundleRules:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.BundleRule
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductDraft:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductDraft
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductDraftList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductDraft
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseProductImage:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductImages:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ImageWithPriority
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseProductList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Product
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseProductPrice:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantPriceWithStoreGroup
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductPriceList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantPriceWithStoreGroup
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductPriceStoreGroupList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductVariantStoreGroupWithPrices
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseProductPriceString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseProductString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponsePromoteProductDraft:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Product
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseRedirect:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Redirects
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseRedirectList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Redirects
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseRedirectRemove:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseRelation:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Relation
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseRelationList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Relation
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseRelationRemove:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseRelationType:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.RelationType
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseRelationTypeList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.RelationType
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseRelationTypeRemove:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseScheduling:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Job
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseSchedulingDelete:
      properties:
        data:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.DeleteSchedulingResponse
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseSchedulingList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Job
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseShareableLink:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ShareableLink
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseShareableLinkWithResources:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ShareableLinkWithResources
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseShareableLinks:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ShareableLink
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseSingleItem-bool:
      properties:
        data:
          type: boolean
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseSingleItem-string:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseStoreGroup:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.StoreGroupWithMarkets
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseStoreGroupList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.StoreGroupWithMarkets
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseStoreGroupRemove:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseTag:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseTagList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseTagString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseTaxGroup:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TaxGroup
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseTaxGroupList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TaxGroup
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseTaxGroupString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseThirdPartyLink:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ThirdPartyLink
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseThirdPartyLinkList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ThirdPartyLink
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseThirdPartyLinkString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseTranslation:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.TranslationDTO'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseTranslationList:
      properties:
        data:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.TranslationDTO'
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseTranslationListWithPagignation:
      properties:
        data:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.TranslationDTO'
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseVariant:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Variant
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseVariantDelete:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseVariantList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Variant
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseVariantWarehouseStock:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.WarehouseVariantStock
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseVariantWarehouseStockString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseVideo:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoWithUsedBy
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseVideoString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseVideoUrl:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.VideoUrl
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseVideos:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Video
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseWarehouse:
      properties:
        data:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.WarehouseWithMarkets'
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OkResponseWarehouseList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.WarehouseWithMarkets
          type: array
        success:
          type: boolean
        total:
          type: integer
        total_pages:
          type: integer
      type: object
    internal_pkg_webserver_v1.OkResponseWarehouseString:
      properties:
        data:
          type: string
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.OrderAddressResponse:
      properties:
        address_type:
          type: string
        city:
          type: string
        country_code:
          type: string
        created_at:
          type: string
        email:
          type: string
        family_name:
          type: string
        given_name:
          type: string
        id:
          type: string
        postal_code:
          type: string
        state_or_province:
          type: string
        street_address:
          type: string
        street_address_2:
          type: string
        telephone_number:
          type: string
        updated_at:
          type: string
      type: object
    internal_pkg_webserver_v1.OrderDiscountResponse:
      properties:
        created_at:
          type: string
        discount_id:
          type: string
        id:
          type: string
        name:
          type: string
        order_id:
          type: string
        updated_at:
          type: string
      type: object
    internal_pkg_webserver_v1.OrderHistoryLineResponse:
      properties:
        deleted:
          type: boolean
        from_quantity:
          type: integer
        history_id:
          type: string
        order_line_id:
          type: string
        product_variant_id:
          type: string
        to_quantity:
          type: integer
      type: object
    internal_pkg_webserver_v1.OrderHistoryResponse:
      properties:
        change_type:
          type: string
        from_status:
          type: string
        happened_at:
          type: string
        lines:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.OrderHistoryLineResponse
          type: array
        order_id:
          type: string
        to_status:
          type: string
      type: object
    internal_pkg_webserver_v1.OrderLineResponse:
      properties:
        base_price_amount:
          type: number
        created_at:
          type: string
        currency_code:
          type: string
        first_image_path:
          type: string
        id:
          type: string
        order_id:
          type: string
        product_id:
          type: string
        product_name:
          type: string
        product_number:
          type: string
        quantity:
          type: integer
        short_description:
          type: string
        tax_group_id:
          type: string
        total_discount_amount:
          type: number
        total_price_amount:
          type: number
        total_sale_price:
          type: number
        total_tax_amount:
          type: number
        updated_at:
          type: string
        variant_id:
          type: string
        variant_name:
          type: string
        variant_number:
          type: string
      type: object
    internal_pkg_webserver_v1.OrderResponse:
      properties:
        billing_address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.OrderAddressResponse'
        bonus_total:
          type: number
        country_code:
          type: string
        created_at:
          type: string
        currency_code:
          type: string
        discount_total:
          type: number
        discounts:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.OrderDiscountResponse
          type: array
        gift_card_total:
          type: number
        grand_total:
          type: number
        id:
          type: string
        language_code:
          type: string
        merchant_user:
          $ref: >-
            #/components/schemas/internal_pkg_webserver_v1.MerchantUserSummaryResponse
        order_lines:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrderLineResponse'
          type: array
        payment_method:
          type: string
        payment_method_id:
          type: string
        payment_method_name:
          type: string
        reference:
          type: string
        session_id:
          type: string
        shipping_address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.OrderAddressResponse'
        shipping_methods:
          items:
            type: string
          type: array
        shipping_total:
          type: number
        source:
          type: string
        sub_total:
          type: number
        tax_total:
          type: number
        updated_at:
          type: string
        user_content:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrderUserContent'
          type: array
      type: object
    internal_pkg_webserver_v1.OrderUserContent:
      properties:
        content_type:
          type: string
        filename:
          type: string
        id:
          type: string
        url:
          type: string
      type: object
    internal_pkg_webserver_v1.Organisation:
      properties:
        app_id:
          type: string
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        billing_address:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrganisationAddress'
          type: array
        comment:
          type: string
        contact_name:
          type: string
        created_at:
          type: string
        credit_check:
          type: boolean
        custom_fields:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.CustomFields
        email:
          type: string
        external_ref:
          type: string
        id:
          type: string
        invoice_email:
          type: string
        name:
          type: string
        organisation_number:
          type: string
        phone:
          type: string
        shipping_address:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrganisationAddress'
          type: array
        status:
          type: string
        tags:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
          type: array
        tax_id_vat_number:
          type: string
        updated_at:
          type: string
      type: object
    internal_pkg_webserver_v1.OrganisationAddress:
      properties:
        city:
          type: string
        co_address:
          type: string
        company_id:
          type: string
        company_name:
          type: string
        country:
          type: string
        created_at:
          type: string
        house_number:
          type: string
        id:
          type: string
        is_default:
          type: boolean
        name:
          type: string
        phone:
          type: string
        postal_code:
          type: string
        state_province:
          type: string
        street_address:
          type: string
        updated_at:
          type: string
      type: object
    internal_pkg_webserver_v1.OrganisationUser:
      properties:
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        created_at:
          type: string
        email:
          type: string
        email_verified:
          type: boolean
        id:
          type: string
        language:
          type: string
        level:
          type: string
        market:
          type: string
        name:
          type: string
        phone_number:
          type: string
        role:
          type: string
        store_group:
          type: string
        surname:
          type: string
        updated_at:
          type: string
      type: object
    internal_pkg_webserver_v1.OrganisationWithUsersAndAddresses:
      properties:
        app_id:
          type: string
        attributes:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Attribute
          type: array
        billing_address:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrganisationAddress'
          type: array
        comment:
          type: string
        contact_name:
          type: string
        created_at:
          type: string
        credit_check:
          type: boolean
        custom_fields:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.CustomFields
        email:
          type: string
        external_ref:
          type: string
        id:
          type: string
        invoice_email:
          type: string
        name:
          type: string
        organisation_number:
          type: string
        phone:
          type: string
        shipping_address:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrganisationAddress'
          type: array
        status:
          type: string
        tags:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Tag
          type: array
        tax_id_vat_number:
          type: string
        updated_at:
          type: string
        users:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.OrganisationUser'
          type: array
      type: object
    internal_pkg_webserver_v1.PatchAddressInput:
      properties:
        city:
          type: string
        country:
          type: string
        country_code:
          type: string
        street:
          type: string
        zip_code:
          type: string
      type: object
    internal_pkg_webserver_v1.PatchCollectionBody:
      properties:
        parent_id:
          description: To move collection to root, send empty string
          type: string
        slug:
          type: string
        status:
          enum:
            - active
            - inactive
            - draft
          type: string
        title:
          type: string
      type: object
    internal_pkg_webserver_v1.PatchMerchantUserPayload:
      properties:
        additions:
          additionalProperties:
            type: string
          type: object
        address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.PatchAddressInput'
        comment:
          type: string
        communication_preferences:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.PatchPermissionsInput'
        email_verified:
          type: boolean
        is_super_admin:
          type: boolean
        language:
          minLength: 1
          type: string
        market:
          minLength: 1
          type: string
        name:
          minLength: 1
          type: string
        phone_number:
          type: string
        status:
          enum:
            - active
            - inactive
            - pending
          type: string
        store_group:
          minLength: 1
          type: string
        surname:
          minLength: 1
          type: string
      type: object
    internal_pkg_webserver_v1.PatchPermissionsInput:
      properties:
        allow_email:
          type: boolean
        allow_postal:
          type: boolean
        allow_sms:
          type: boolean
      type: object
    internal_pkg_webserver_v1.PatchProductPayload:
      properties:
        brand_id:
          description: Brand or series of a brand connected to product
          type: string
        custom:
          additionalProperties:
            type: string
          description: Custom fields
          type: object
        description:
          description: >-
            Deprecated: read-only in write payloads. Derived from
            html_description.
          type: string
        exclude_from_feeds:
          description: Whenever a product should exist in feeds or not
          type: boolean
        html_description:
          description: >-
            HTML description of the description fields. All of the fields which
            is not related to showing content, e.g <button> or <script> tags
            will be stripped from the input
          type: string
        html_short_description:
          description: >-
            HTML Shortdescription of the description fields. All of the fields
            which is not related to showing content, e.g <button> or <script>
            tags will be stripped from the input
          type: string
        market_status:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.ProductMarketStatus'
          type: array
        meta_description:
          description: Meta description for SEO
          type: string
        meta_title:
          description: Meta title for SEO
          type: string
        package_dimensions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
          description: The package dimensions
        product_dimensions:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
          description: The products dimensions
        product_name:
          description: Name of the product
          type: string
        product_type:
          description: Product type
          type: string
        short_description:
          description: >-
            Deprecated: read-only in write payloads. Derived from
            html_short_description.
          type: string
        slug:
          description: Slug for the product
          type: string
        status:
          description: Status of the product
          enum:
            - active
            - draft
            - inactive
            - archived
          type: string
        tax_group_slug:
          description: >-
            If provided will the product using the selected tax group. Otherwise
            will we use the default tax group for the app
          minLength: 0
          type: string
      type: object
    internal_pkg_webserver_v1.PatchRelationTypeBody:
      properties:
        title:
          type: string
        type:
          type: string
      type: object
    internal_pkg_webserver_v1.PatchVariantPayload:
      properties:
        custom_fields:
          additionalProperties:
            type: string
          type: object
        purchase_price:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.PurchasePrice
        status:
          description: Status of the product
          enum:
            - active
            - draft
            - inactive
          type: string
        stock:
          description: Stock level of the variant
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputVariantStock'
          type: array
        validate_stock:
          type: boolean
        variant_dimensions:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Dimensions
        variant_name:
          description: Name of the variant
          type: string
      required:
        - stock
      type: object
    internal_pkg_webserver_v1.ProductMarketStatus:
      properties:
        market_id:
          type: string
        status:
          enum:
            - active
            - inactive
            - draft
            - incomplete
            - archived
          type: string
        store_group_id:
          type: string
      required:
        - market_id
        - status
        - store_group_id
      type: object
    internal_pkg_webserver_v1.RelationRequest:
      properties:
        direction:
          default: two_way
          description: Default two_way
          enum:
            - one_way
            - two_way
          type: string
        primary_product_id:
          type: string
        product_ids:
          items:
            type: string
          minItems: 1
          type: array
        relation_type_id:
          type: string
      required:
        - product_ids
        - relation_type_id
      type: object
    internal_pkg_webserver_v1.RelationTypeRequest:
      properties:
        title:
          type: string
        type:
          type: string
      type: object
    internal_pkg_webserver_v1.RemoveOrganisationUser:
      properties:
        user_id:
          type: string
      required:
        - user_id
      type: object
    internal_pkg_webserver_v1.RemoveResourcesFromShareableLinkRequest:
      properties:
        file_ids:
          items:
            type: string
          type: array
        folder_ids:
          items:
            type: string
          type: array
        image_ids:
          items:
            type: string
          type: array
        video_ids:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.SalesByCurrency:
      properties:
        currency_code:
          type: string
        total_compensated_sales:
          type: number
        total_sales_amount:
          type: number
      type: object
    internal_pkg_webserver_v1.SalesMetricsDataResponse:
      properties:
        daily_metrics:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.DailySalesMetricResponse
          type: array
        hourly_metrics:
          items:
            $ref: >-
              #/components/schemas/internal_pkg_webserver_v1.HourlySalesMetricResponse
          type: array
        total_order_count:
          type: integer
        total_sales_by_currency:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.SalesByCurrency'
          type: array
      type: object
    internal_pkg_webserver_v1.SeriesResponse:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Series
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.SeriesResponseList:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Series
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.SetMediaFolderRequest:
      properties:
        folder_id:
          type: string
      type: object
    internal_pkg_webserver_v1.SetNewUserPassword:
      properties:
        new_password:
          type: string
      required:
        - new_password
      type: object
    internal_pkg_webserver_v1.SetProductCollection:
      properties:
        order:
          type: integer
      type: object
    internal_pkg_webserver_v1.SetProductCollectionsRequest:
      properties:
        collection_ids:
          items:
            type: string
          type: array
      type: object
    internal_pkg_webserver_v1.ShippingAttributesRequest:
      properties:
        attributes:
          description: max 10 attributes, each max 40 characters
          items:
            type: string
          maxItems: 10
          type: array
      required:
        - attributes
      type: object
    internal_pkg_webserver_v1.SmartListingProductsResponse:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ListingProductVariant
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.SmartListingRequest:
      properties:
        rules:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.ListingRuleRequest'
          type: array
        slug:
          type: string
      required:
        - rules
        - slug
      type: object
    internal_pkg_webserver_v1.SmartListingResponse:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SmartListing
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.SmartListingsResponse:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.SmartListing
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.StaticListingRequest:
      properties:
        slug:
          type: string
        variant_ids:
          items:
            type: string
          type: array
      required:
        - slug
        - variant_ids
      type: object
    internal_pkg_webserver_v1.StaticListingResponse:
      properties:
        data:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.StaticListing
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.StaticListingsResponse:
      properties:
        data:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.StaticListing
          type: array
        details:
          description: >-
            Other information which can be relative to the response. This field
            is used to give additional information then the main data we want to
            return. For instance if a product do not match the publishing rules
            will the product status be set to `Incomplete` and this field will
            include why
          items:
            type: string
          type: array
        success:
          type: boolean
      type: object
    internal_pkg_webserver_v1.TranslationDTO:
      properties:
        field_type:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.TranslationFieldType
        id:
          type: string
        language_code:
          type: string
        parent_ref:
          type: string
        parent_type:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.TranslationType
        translation:
          type: string
      required:
        - field_type
        - language_code
        - parent_ref
        - parent_type
        - translation
      type: object
    internal_pkg_webserver_v1.UpdateAttributeTemplatePayload:
      properties:
        fields:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.InputAttributeField'
          type: array
        filterable:
          type: boolean
        key:
          description: Key of the attribute
          type: string
        name:
          description: Name of the attribute
          type: string
        resources:
          items:
            type: string
          type: array
        translatable:
          type: boolean
        type:
          description: Name of the attribute
          type: string
      type: object
    internal_pkg_webserver_v1.UpdateBundlePayload:
      properties:
        discount_percentage:
          type: integer
        discount_type:
          type: string
        discounts:
          items:
            $ref: '#/components/schemas/internal_pkg_webserver_v1.BundleGroupDiscount'
          type: array
        exclude_discounted_price:
          description: If products with discounts should be excluded from the bundle
          type: boolean
        exclude_full_price:
          description: If products with no discounts should be excluded from the bundle
          type: boolean
        items:
          description: Ensure at least one element is present
          items:
            type: string
          type: array
        quantity:
          type: integer
        tag_conditions:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.TagConditionsReq
      required:
        - discounts
        - items
      type: object
    internal_pkg_webserver_v1.UpdateFolderRequest:
      properties:
        name:
          maxLength: 255
          minLength: 1
          type: string
        parent_id:
          type: string
        public:
          type: boolean
      required:
        - name
      type: object
    internal_pkg_webserver_v1.UpdateImageMetadata:
      properties:
        alt:
          type: string
        attributes:
          items:
            type: string
          type: array
        copyright:
          type: string
        custom:
          additionalProperties:
            type: string
          type: object
        filename:
          type: string
        parent_id:
          type: string
        public:
          type: boolean
        status:
          enum:
            - active
            - inactive
            - draft
          type: string
        title:
          type: string
      type: object
    internal_pkg_webserver_v1.UpdateOmniChannel:
      properties:
        relationships:
          items:
            type: string
          type: array
        value:
          type: string
      type: object
    internal_pkg_webserver_v1.UpdateProductDraftPayload:
      properties:
        changeset:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.ProductDraftChangeset
        publish_at:
          type: string
      required:
        - changeset
      type: object
    internal_pkg_webserver_v1.UpdateShareableLinkRequest:
      properties:
        description:
          type: string
        expires_at:
          type: string
      type: object
    internal_pkg_webserver_v1.UpdateTagPayload:
      properties:
        attributes_keys:
          items:
            type: string
          type: array
        filterable:
          type: boolean
        name:
          type: string
        new_key:
          type: string
        status:
          enum:
            - active
            - inactive
            - archived
            - draft
          type: string
      type: object
    internal_pkg_webserver_v1.UpdateTranslationBody:
      properties:
        create_slug:
          description: >-
            if this is true and with the fieldType: name, it will generate a
            slug. Only available to products as of now.
          type: boolean
        field_type:
          $ref: >-
            #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.TranslationFieldType
        language_code:
          description: >-
            ISO 639-1 formatted language code. Note: the language also needs to 
            be configured and supported by the app
          type: string
        parent_ref:
          type: string
        parent_type:
          allOf:
            - $ref: >-
                #/components/schemas/github_com_enadhq_nabbit_internal_pkg_database.TranslationType
          enum:
            - product
            - product_bundle
            - product_variant
            - image
            - attribute
            - attribute_value
            - category
            - tag
            - collection
            - file
            - bundle_group
            - video
            - brand
        translation:
          type: string
      required:
        - field_type
        - language_code
        - parent_ref
        - translation
      type: object
    internal_pkg_webserver_v1.VariantStockDiff:
      properties:
        delta:
          type: integer
      type: object
    internal_pkg_webserver_v1.WarehouseAddress:
      properties:
        city:
          type: string
        country:
          description: >-
            Country value needs to follow ISO3166_1_alpha2, which means we want
            a country value written in alpha-2 two-letter country codes,
            Example: SE or FI
          type: string
        postal_code:
          type: string
        state:
          type: string
        street_address:
          type: string
      required:
        - country
      type: object
    internal_pkg_webserver_v1.WarehouseWithMarkets:
      properties:
        address:
          $ref: '#/components/schemas/internal_pkg_webserver_v1.WarehouseAddress'
        app_id:
          type: string
        available_online:
          type: boolean
        created_at:
          type: string
        id:
          type: string
        markets:
          items:
            $ref: >-
              #/components/schemas/github_com_enadhq_nabbit_internal_pkg_webserver_models.Market
          type: array
        name:
          type: string
        slug:
          type: string
        updated_at:
          type: string
      type: object
