> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shoppex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update product

> Updates an existing product. For base `SERIALS` products, sending the `serials` field replaces the full base-product serial inventory. Use `/dev/v1/products/{id}/serials` when you need append/remove behavior instead of full replacement.



## OpenAPI

````yaml /openapi.json patch /dev/v1/products/{id}
openapi: 3.0.3
info:
  title: Shoppex Developer API
  description: Mintlify-compatible Developer API reference for Shoppex.
  version: 1.0.0
  contact:
    name: Shoppex Support
    email: support@shoppex.io
    url: https://shoppex.io
servers:
  - url: https://api.shoppex.io
security:
  - bearerAuth: []
paths:
  /dev/v1/products/{id}:
    patch:
      tags:
        - Products
      summary: Update product
      description: >-
        Updates an existing product. For base `SERIALS` products, sending the
        `serials` field replaces the full base-product serial inventory. Use
        `/dev/v1/products/{id}/serials` when you need append/remove behavior
        instead of full replacement.
      operationId: patchDevV1ProductsById
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                price:
                  type: number
                cost:
                  nullable: true
                  type: number
                description:
                  type: string
                description_tabs:
                  type: array
                  items:
                    type: object
                    required:
                      - title
                      - content
                    properties:
                      title:
                        type: string
                      content:
                        type: string
                currency:
                  type: string
                gateways:
                  type: array
                  items:
                    type: string
                type:
                  anyOf:
                    - type: string
                      enum:
                        - SERIALS
                    - type: string
                      enum:
                        - FILE
                    - type: string
                      enum:
                        - SERVICE
                    - type: string
                      enum:
                        - DYNAMIC
                    - type: string
                      enum:
                        - INFO_CARD
                    - type: string
                      enum:
                        - SUBSCRIPTION
                    - type: string
                      enum:
                        - GAMING_RCON
                    - type: string
                      enum:
                        - SUBSCRIPTION_V2
                subtype:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - SINGLE
                    - type: string
                      enum:
                        - MULTIPLE
                    - type: string
                      enum:
                        - RANDOM
                    - type: string
                      enum:
                        - REPLACEMENT
                    - type: string
                      enum:
                        - SERIALS
                    - type: string
                      enum:
                        - FILE
                    - type: string
                      enum:
                        - SERVICE
                    - type: string
                      enum:
                        - DYNAMIC
                serials:
                  type: array
                  items:
                    type: string
                serialsRemoveDuplicates:
                  type: boolean
                serials_remove_duplicates:
                  type: boolean
                serviceText:
                  type: string
                service_text:
                  type: string
                stock:
                  type: number
                dynamicWebhook:
                  type: string
                  nullable: true
                dynamic_webhook:
                  type: string
                  nullable: true
                dynamicWebhookSecret:
                  type: string
                dynamic_webhook_secret:
                  type: string
                fileIds:
                  nullable: true
                  type: array
                  items:
                    type: string
                file_ids:
                  nullable: true
                  type: array
                  items:
                    type: string
                stockDelimiter:
                  anyOf:
                    - type: string
                      enum:
                        - comma
                    - type: string
                      enum:
                        - newline
                    - type: string
                      enum:
                        - ','
                stock_delimiter:
                  anyOf:
                    - type: string
                      enum:
                        - comma
                    - type: string
                      enum:
                        - newline
                    - type: string
                      enum:
                        - ','
                quantity:
                  type: object
                  properties:
                    min:
                      type: number
                    max:
                      type: number
                quantity_min:
                  type: number
                quantity_max:
                  type: number
                deliveryText:
                  type: string
                delivery_text:
                  type: string
                customFields:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - type
                      - required
                    properties:
                      name:
                        type: string
                      type:
                        type: string
                      required:
                        type: boolean
                      default:
                        type: string
                      placeholder:
                        type: string
                      regex:
                        type: string
                custom_fields:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - type
                      - required
                    properties:
                      name:
                        type: string
                      type:
                        type: string
                      required:
                        type: boolean
                      default:
                        type: string
                      placeholder:
                        type: string
                      regex:
                        type: string
                deliveryInstructions:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    required:
                      type: boolean
                    label:
                      type: string
                    placeholder:
                      type: string
                      nullable: true
                    help_text:
                      type: string
                      nullable: true
                    max_length:
                      type: number
                delivery_instructions:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    required:
                      type: boolean
                    label:
                      type: string
                    placeholder:
                      type: string
                      nullable: true
                    help_text:
                      type: string
                      nullable: true
                    max_length:
                      type: number
                cryptoConfirmationsNeeded:
                  type: number
                crypto_confirmations_needed:
                  type: number
                crypto_confirmations:
                  type: number
                maxRiskLevel:
                  type: number
                max_risk_level:
                  type: number
                unlisted:
                  type: boolean
                private:
                  type: boolean
                blockVpnProxies:
                  type: boolean
                block_vpn_proxies:
                  type: boolean
                sortPriority:
                  type: number
                sort_priority:
                  type: number
                webhooks:
                  type: array
                  items:
                    type: string
                onHold:
                  type: boolean
                on_hold:
                  type: boolean
                termsOfService:
                  type: string
                  nullable: true
                terms_of_service:
                  type: string
                  nullable: true
                warrantyDays:
                  type: number
                warranty_days:
                  type: number
                warrantyText:
                  type: string
                  nullable: true
                warranty_text:
                  type: string
                  nullable: true
                volumeDiscounts:
                  type: array
                  items:
                    type: object
                    required:
                      - quantity
                      - value
                      - type
                    properties:
                      quantity:
                        type: number
                      value:
                        type: number
                      type:
                        anyOf:
                          - type: string
                            enum:
                              - PERCENTAGE
                          - type: string
                            enum:
                              - FIXED
                volume_discounts:
                  type: array
                  items:
                    type: object
                    required:
                      - quantity
                      - value
                      - type
                    properties:
                      quantity:
                        type: number
                      value:
                        type: number
                      type:
                        anyOf:
                          - type: string
                            enum:
                              - PERCENTAGE
                          - type: string
                            enum:
                              - FIXED
                recurringInterval:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - DAY
                    - type: string
                      enum:
                        - WEEK
                    - type: string
                      enum:
                        - MONTH
                    - type: string
                      enum:
                        - YEAR
                recurring_interval:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - DAY
                    - type: string
                      enum:
                        - WEEK
                    - type: string
                      enum:
                        - MONTH
                    - type: string
                      enum:
                        - YEAR
                recurringIntervalCount:
                  nullable: true
                  type: number
                recurring_interval_count:
                  nullable: true
                  type: number
                trialPeriod:
                  nullable: true
                  type: number
                trial_period:
                  nullable: true
                  type: number
                discountPercent:
                  type: number
                discount_percent:
                  type: number
                deliveryTime:
                  nullable: true
                  type: number
                delivery_time:
                  nullable: true
                  type: number
                categoryId:
                  type: string
                  nullable: true
                category_id:
                  type: string
                  nullable: true
                video_link:
                  type: string
                  nullable: true
                watermarkEnabled:
                  type: boolean
                watermark_enabled:
                  type: boolean
                watermarkText:
                  type: string
                  nullable: true
                watermark_text:
                  type: string
                  nullable: true
                redirectLink:
                  type: string
                  nullable: true
                redirect_link:
                  type: string
                  nullable: true
                redirectTime:
                  nullable: true
                  type: number
                redirect_time:
                  nullable: true
                  type: number
                variants:
                  nullable: true
                  type: array
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                      description:
                        type: string
                        nullable: true
                      price:
                        type: number
                      cost:
                        nullable: true
                        type: number
                      stock:
                        nullable: true
                        type: number
                      quantity_min:
                        nullable: true
                        type: number
                      quantityMin:
                        nullable: true
                        type: number
                      quantity_max:
                        nullable: true
                        type: number
                      quantityMax:
                        nullable: true
                        type: number
                      serials:
                        type: string
                        nullable: true
                      license_period:
                        nullable: true
                        type: number
                      licensePeriod:
                        nullable: true
                        type: number
                      sort_order:
                        type: number
                      sortOrder:
                        type: number
                      option_values:
                        type: object
                        additionalProperties: true
                      optionValues:
                        type: object
                        additionalProperties: true
                      is_default:
                        type: boolean
                      isDefault:
                        type: boolean
                      file_id:
                        type: string
                        nullable: true
                      fileId:
                        type: string
                        nullable: true
                      dynamic_webhook:
                        type: string
                        nullable: true
                      dynamicWebhook:
                        type: string
                        nullable: true
                    additionalProperties: true
                discordIntegration:
                  type: boolean
                discord_integration:
                  type: boolean
                discordSetRole:
                  type: boolean
                discord_set_role:
                  type: boolean
                discordServerId:
                  type: string
                  nullable: true
                discord_server_id:
                  type: string
                  nullable: true
                discordRoleId:
                  type: string
                  nullable: true
                discord_role_id:
                  type: string
                  nullable: true
                discordRemoveRole:
                  type: boolean
                discord_remove_role:
                  type: boolean
                payWhatYouWant:
                  type: boolean
                pay_what_you_want:
                  type: boolean
                affiliateRevenuePercent:
                  type: number
                affiliate_revenue_percent:
                  type: number
                affiliateCustomerDiscountMode:
                  anyOf:
                    - type: string
                      enum:
                        - USE_STORE_DEFAULT
                    - type: string
                      enum:
                        - CUSTOM
                    - type: string
                      enum:
                        - DISABLED
                affiliate_customer_discount_mode:
                  anyOf:
                    - type: string
                      enum:
                        - USE_STORE_DEFAULT
                    - type: string
                      enum:
                        - CUSTOM
                    - type: string
                      enum:
                        - DISABLED
                affiliateCustomerDiscountPercent:
                  nullable: true
                  type: number
                affiliate_customer_discount_percent:
                  nullable: true
                  type: number
                discordOptional:
                  type: boolean
                discord_optional:
                  type: boolean
                licensingEnabled:
                  type: boolean
                licensing_enabled:
                  type: boolean
                licensePeriod:
                  type: string
                  nullable: true
                license_period:
                  type: string
                  nullable: true
                label_singular:
                  type: string
                label_plural:
                  type: string
                slug:
                  type: string
                  nullable: true
              example:
                type: DYNAMIC
                dynamic_webhook: https://example.com/updated
                delivery_instructions:
                  required: false
                  label: Setup note
                  max_length: 300
                custom_fields:
                  - name: Display Name
                    type: text
                    required: false
          multipart/form-data:
            schema:
              type: object
              properties:
                title:
                  type: string
                price:
                  type: number
                cost:
                  nullable: true
                  type: number
                description:
                  type: string
                description_tabs:
                  type: array
                  items:
                    type: object
                    required:
                      - title
                      - content
                    properties:
                      title:
                        type: string
                      content:
                        type: string
                currency:
                  type: string
                gateways:
                  type: array
                  items:
                    type: string
                type:
                  anyOf:
                    - type: string
                      enum:
                        - SERIALS
                    - type: string
                      enum:
                        - FILE
                    - type: string
                      enum:
                        - SERVICE
                    - type: string
                      enum:
                        - DYNAMIC
                    - type: string
                      enum:
                        - INFO_CARD
                    - type: string
                      enum:
                        - SUBSCRIPTION
                    - type: string
                      enum:
                        - GAMING_RCON
                    - type: string
                      enum:
                        - SUBSCRIPTION_V2
                subtype:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - SINGLE
                    - type: string
                      enum:
                        - MULTIPLE
                    - type: string
                      enum:
                        - RANDOM
                    - type: string
                      enum:
                        - REPLACEMENT
                    - type: string
                      enum:
                        - SERIALS
                    - type: string
                      enum:
                        - FILE
                    - type: string
                      enum:
                        - SERVICE
                    - type: string
                      enum:
                        - DYNAMIC
                serials:
                  type: array
                  items:
                    type: string
                serialsRemoveDuplicates:
                  type: boolean
                serials_remove_duplicates:
                  type: boolean
                serviceText:
                  type: string
                service_text:
                  type: string
                stock:
                  type: number
                dynamicWebhook:
                  type: string
                  nullable: true
                dynamic_webhook:
                  type: string
                  nullable: true
                dynamicWebhookSecret:
                  type: string
                dynamic_webhook_secret:
                  type: string
                fileIds:
                  nullable: true
                  type: array
                  items:
                    type: string
                file_ids:
                  nullable: true
                  type: array
                  items:
                    type: string
                stockDelimiter:
                  anyOf:
                    - type: string
                      enum:
                        - comma
                    - type: string
                      enum:
                        - newline
                    - type: string
                      enum:
                        - ','
                stock_delimiter:
                  anyOf:
                    - type: string
                      enum:
                        - comma
                    - type: string
                      enum:
                        - newline
                    - type: string
                      enum:
                        - ','
                quantity:
                  type: object
                  properties:
                    min:
                      type: number
                    max:
                      type: number
                quantity_min:
                  type: number
                quantity_max:
                  type: number
                deliveryText:
                  type: string
                delivery_text:
                  type: string
                customFields:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - type
                      - required
                    properties:
                      name:
                        type: string
                      type:
                        type: string
                      required:
                        type: boolean
                      default:
                        type: string
                      placeholder:
                        type: string
                      regex:
                        type: string
                custom_fields:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - type
                      - required
                    properties:
                      name:
                        type: string
                      type:
                        type: string
                      required:
                        type: boolean
                      default:
                        type: string
                      placeholder:
                        type: string
                      regex:
                        type: string
                deliveryInstructions:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    required:
                      type: boolean
                    label:
                      type: string
                    placeholder:
                      type: string
                      nullable: true
                    help_text:
                      type: string
                      nullable: true
                    max_length:
                      type: number
                delivery_instructions:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    required:
                      type: boolean
                    label:
                      type: string
                    placeholder:
                      type: string
                      nullable: true
                    help_text:
                      type: string
                      nullable: true
                    max_length:
                      type: number
                cryptoConfirmationsNeeded:
                  type: number
                crypto_confirmations_needed:
                  type: number
                crypto_confirmations:
                  type: number
                maxRiskLevel:
                  type: number
                max_risk_level:
                  type: number
                unlisted:
                  type: boolean
                private:
                  type: boolean
                blockVpnProxies:
                  type: boolean
                block_vpn_proxies:
                  type: boolean
                sortPriority:
                  type: number
                sort_priority:
                  type: number
                webhooks:
                  type: array
                  items:
                    type: string
                onHold:
                  type: boolean
                on_hold:
                  type: boolean
                termsOfService:
                  type: string
                  nullable: true
                terms_of_service:
                  type: string
                  nullable: true
                warrantyDays:
                  type: number
                warranty_days:
                  type: number
                warrantyText:
                  type: string
                  nullable: true
                warranty_text:
                  type: string
                  nullable: true
                volumeDiscounts:
                  type: array
                  items:
                    type: object
                    required:
                      - quantity
                      - value
                      - type
                    properties:
                      quantity:
                        type: number
                      value:
                        type: number
                      type:
                        anyOf:
                          - type: string
                            enum:
                              - PERCENTAGE
                          - type: string
                            enum:
                              - FIXED
                volume_discounts:
                  type: array
                  items:
                    type: object
                    required:
                      - quantity
                      - value
                      - type
                    properties:
                      quantity:
                        type: number
                      value:
                        type: number
                      type:
                        anyOf:
                          - type: string
                            enum:
                              - PERCENTAGE
                          - type: string
                            enum:
                              - FIXED
                recurringInterval:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - DAY
                    - type: string
                      enum:
                        - WEEK
                    - type: string
                      enum:
                        - MONTH
                    - type: string
                      enum:
                        - YEAR
                recurring_interval:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - DAY
                    - type: string
                      enum:
                        - WEEK
                    - type: string
                      enum:
                        - MONTH
                    - type: string
                      enum:
                        - YEAR
                recurringIntervalCount:
                  nullable: true
                  type: number
                recurring_interval_count:
                  nullable: true
                  type: number
                trialPeriod:
                  nullable: true
                  type: number
                trial_period:
                  nullable: true
                  type: number
                discountPercent:
                  type: number
                discount_percent:
                  type: number
                deliveryTime:
                  nullable: true
                  type: number
                delivery_time:
                  nullable: true
                  type: number
                categoryId:
                  type: string
                  nullable: true
                category_id:
                  type: string
                  nullable: true
                video_link:
                  type: string
                  nullable: true
                watermarkEnabled:
                  type: boolean
                watermark_enabled:
                  type: boolean
                watermarkText:
                  type: string
                  nullable: true
                watermark_text:
                  type: string
                  nullable: true
                redirectLink:
                  type: string
                  nullable: true
                redirect_link:
                  type: string
                  nullable: true
                redirectTime:
                  nullable: true
                  type: number
                redirect_time:
                  nullable: true
                  type: number
                variants:
                  nullable: true
                  type: array
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                      description:
                        type: string
                        nullable: true
                      price:
                        type: number
                      cost:
                        nullable: true
                        type: number
                      stock:
                        nullable: true
                        type: number
                      quantity_min:
                        nullable: true
                        type: number
                      quantityMin:
                        nullable: true
                        type: number
                      quantity_max:
                        nullable: true
                        type: number
                      quantityMax:
                        nullable: true
                        type: number
                      serials:
                        type: string
                        nullable: true
                      license_period:
                        nullable: true
                        type: number
                      licensePeriod:
                        nullable: true
                        type: number
                      sort_order:
                        type: number
                      sortOrder:
                        type: number
                      option_values:
                        type: object
                        additionalProperties: true
                      optionValues:
                        type: object
                        additionalProperties: true
                      is_default:
                        type: boolean
                      isDefault:
                        type: boolean
                      file_id:
                        type: string
                        nullable: true
                      fileId:
                        type: string
                        nullable: true
                      dynamic_webhook:
                        type: string
                        nullable: true
                      dynamicWebhook:
                        type: string
                        nullable: true
                    additionalProperties: true
                discordIntegration:
                  type: boolean
                discord_integration:
                  type: boolean
                discordSetRole:
                  type: boolean
                discord_set_role:
                  type: boolean
                discordServerId:
                  type: string
                  nullable: true
                discord_server_id:
                  type: string
                  nullable: true
                discordRoleId:
                  type: string
                  nullable: true
                discord_role_id:
                  type: string
                  nullable: true
                discordRemoveRole:
                  type: boolean
                discord_remove_role:
                  type: boolean
                payWhatYouWant:
                  type: boolean
                pay_what_you_want:
                  type: boolean
                affiliateRevenuePercent:
                  type: number
                affiliate_revenue_percent:
                  type: number
                affiliateCustomerDiscountMode:
                  anyOf:
                    - type: string
                      enum:
                        - USE_STORE_DEFAULT
                    - type: string
                      enum:
                        - CUSTOM
                    - type: string
                      enum:
                        - DISABLED
                affiliate_customer_discount_mode:
                  anyOf:
                    - type: string
                      enum:
                        - USE_STORE_DEFAULT
                    - type: string
                      enum:
                        - CUSTOM
                    - type: string
                      enum:
                        - DISABLED
                affiliateCustomerDiscountPercent:
                  nullable: true
                  type: number
                affiliate_customer_discount_percent:
                  nullable: true
                  type: number
                discordOptional:
                  type: boolean
                discord_optional:
                  type: boolean
                licensingEnabled:
                  type: boolean
                licensing_enabled:
                  type: boolean
                licensePeriod:
                  type: string
                  nullable: true
                license_period:
                  type: string
                  nullable: true
                label_singular:
                  type: string
                label_plural:
                  type: string
                slug:
                  type: string
                  nullable: true
              example:
                type: DYNAMIC
                dynamic_webhook: https://example.com/updated
                delivery_instructions:
                  required: false
                  label: Setup note
                  max_length: 300
                custom_fields:
                  - name: Display Name
                    type: text
                    required: false
          text/plain:
            schema:
              type: object
              properties:
                title:
                  type: string
                price:
                  type: number
                cost:
                  nullable: true
                  type: number
                description:
                  type: string
                description_tabs:
                  type: array
                  items:
                    type: object
                    required:
                      - title
                      - content
                    properties:
                      title:
                        type: string
                      content:
                        type: string
                currency:
                  type: string
                gateways:
                  type: array
                  items:
                    type: string
                type:
                  anyOf:
                    - type: string
                      enum:
                        - SERIALS
                    - type: string
                      enum:
                        - FILE
                    - type: string
                      enum:
                        - SERVICE
                    - type: string
                      enum:
                        - DYNAMIC
                    - type: string
                      enum:
                        - INFO_CARD
                    - type: string
                      enum:
                        - SUBSCRIPTION
                    - type: string
                      enum:
                        - GAMING_RCON
                    - type: string
                      enum:
                        - SUBSCRIPTION_V2
                subtype:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - SINGLE
                    - type: string
                      enum:
                        - MULTIPLE
                    - type: string
                      enum:
                        - RANDOM
                    - type: string
                      enum:
                        - REPLACEMENT
                    - type: string
                      enum:
                        - SERIALS
                    - type: string
                      enum:
                        - FILE
                    - type: string
                      enum:
                        - SERVICE
                    - type: string
                      enum:
                        - DYNAMIC
                serials:
                  type: array
                  items:
                    type: string
                serialsRemoveDuplicates:
                  type: boolean
                serials_remove_duplicates:
                  type: boolean
                serviceText:
                  type: string
                service_text:
                  type: string
                stock:
                  type: number
                dynamicWebhook:
                  type: string
                  nullable: true
                dynamic_webhook:
                  type: string
                  nullable: true
                dynamicWebhookSecret:
                  type: string
                dynamic_webhook_secret:
                  type: string
                fileIds:
                  nullable: true
                  type: array
                  items:
                    type: string
                file_ids:
                  nullable: true
                  type: array
                  items:
                    type: string
                stockDelimiter:
                  anyOf:
                    - type: string
                      enum:
                        - comma
                    - type: string
                      enum:
                        - newline
                    - type: string
                      enum:
                        - ','
                stock_delimiter:
                  anyOf:
                    - type: string
                      enum:
                        - comma
                    - type: string
                      enum:
                        - newline
                    - type: string
                      enum:
                        - ','
                quantity:
                  type: object
                  properties:
                    min:
                      type: number
                    max:
                      type: number
                quantity_min:
                  type: number
                quantity_max:
                  type: number
                deliveryText:
                  type: string
                delivery_text:
                  type: string
                customFields:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - type
                      - required
                    properties:
                      name:
                        type: string
                      type:
                        type: string
                      required:
                        type: boolean
                      default:
                        type: string
                      placeholder:
                        type: string
                      regex:
                        type: string
                custom_fields:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                      - type
                      - required
                    properties:
                      name:
                        type: string
                      type:
                        type: string
                      required:
                        type: boolean
                      default:
                        type: string
                      placeholder:
                        type: string
                      regex:
                        type: string
                deliveryInstructions:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    required:
                      type: boolean
                    label:
                      type: string
                    placeholder:
                      type: string
                      nullable: true
                    help_text:
                      type: string
                      nullable: true
                    max_length:
                      type: number
                delivery_instructions:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    required:
                      type: boolean
                    label:
                      type: string
                    placeholder:
                      type: string
                      nullable: true
                    help_text:
                      type: string
                      nullable: true
                    max_length:
                      type: number
                cryptoConfirmationsNeeded:
                  type: number
                crypto_confirmations_needed:
                  type: number
                crypto_confirmations:
                  type: number
                maxRiskLevel:
                  type: number
                max_risk_level:
                  type: number
                unlisted:
                  type: boolean
                private:
                  type: boolean
                blockVpnProxies:
                  type: boolean
                block_vpn_proxies:
                  type: boolean
                sortPriority:
                  type: number
                sort_priority:
                  type: number
                webhooks:
                  type: array
                  items:
                    type: string
                onHold:
                  type: boolean
                on_hold:
                  type: boolean
                termsOfService:
                  type: string
                  nullable: true
                terms_of_service:
                  type: string
                  nullable: true
                warrantyDays:
                  type: number
                warranty_days:
                  type: number
                warrantyText:
                  type: string
                  nullable: true
                warranty_text:
                  type: string
                  nullable: true
                volumeDiscounts:
                  type: array
                  items:
                    type: object
                    required:
                      - quantity
                      - value
                      - type
                    properties:
                      quantity:
                        type: number
                      value:
                        type: number
                      type:
                        anyOf:
                          - type: string
                            enum:
                              - PERCENTAGE
                          - type: string
                            enum:
                              - FIXED
                volume_discounts:
                  type: array
                  items:
                    type: object
                    required:
                      - quantity
                      - value
                      - type
                    properties:
                      quantity:
                        type: number
                      value:
                        type: number
                      type:
                        anyOf:
                          - type: string
                            enum:
                              - PERCENTAGE
                          - type: string
                            enum:
                              - FIXED
                recurringInterval:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - DAY
                    - type: string
                      enum:
                        - WEEK
                    - type: string
                      enum:
                        - MONTH
                    - type: string
                      enum:
                        - YEAR
                recurring_interval:
                  nullable: true
                  anyOf:
                    - type: string
                      enum:
                        - DAY
                    - type: string
                      enum:
                        - WEEK
                    - type: string
                      enum:
                        - MONTH
                    - type: string
                      enum:
                        - YEAR
                recurringIntervalCount:
                  nullable: true
                  type: number
                recurring_interval_count:
                  nullable: true
                  type: number
                trialPeriod:
                  nullable: true
                  type: number
                trial_period:
                  nullable: true
                  type: number
                discountPercent:
                  type: number
                discount_percent:
                  type: number
                deliveryTime:
                  nullable: true
                  type: number
                delivery_time:
                  nullable: true
                  type: number
                categoryId:
                  type: string
                  nullable: true
                category_id:
                  type: string
                  nullable: true
                video_link:
                  type: string
                  nullable: true
                watermarkEnabled:
                  type: boolean
                watermark_enabled:
                  type: boolean
                watermarkText:
                  type: string
                  nullable: true
                watermark_text:
                  type: string
                  nullable: true
                redirectLink:
                  type: string
                  nullable: true
                redirect_link:
                  type: string
                  nullable: true
                redirectTime:
                  nullable: true
                  type: number
                redirect_time:
                  nullable: true
                  type: number
                variants:
                  nullable: true
                  type: array
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                      description:
                        type: string
                        nullable: true
                      price:
                        type: number
                      cost:
                        nullable: true
                        type: number
                      stock:
                        nullable: true
                        type: number
                      quantity_min:
                        nullable: true
                        type: number
                      quantityMin:
                        nullable: true
                        type: number
                      quantity_max:
                        nullable: true
                        type: number
                      quantityMax:
                        nullable: true
                        type: number
                      serials:
                        type: string
                        nullable: true
                      license_period:
                        nullable: true
                        type: number
                      licensePeriod:
                        nullable: true
                        type: number
                      sort_order:
                        type: number
                      sortOrder:
                        type: number
                      option_values:
                        type: object
                        additionalProperties: true
                      optionValues:
                        type: object
                        additionalProperties: true
                      is_default:
                        type: boolean
                      isDefault:
                        type: boolean
                      file_id:
                        type: string
                        nullable: true
                      fileId:
                        type: string
                        nullable: true
                      dynamic_webhook:
                        type: string
                        nullable: true
                      dynamicWebhook:
                        type: string
                        nullable: true
                    additionalProperties: true
                discordIntegration:
                  type: boolean
                discord_integration:
                  type: boolean
                discordSetRole:
                  type: boolean
                discord_set_role:
                  type: boolean
                discordServerId:
                  type: string
                  nullable: true
                discord_server_id:
                  type: string
                  nullable: true
                discordRoleId:
                  type: string
                  nullable: true
                discord_role_id:
                  type: string
                  nullable: true
                discordRemoveRole:
                  type: boolean
                discord_remove_role:
                  type: boolean
                payWhatYouWant:
                  type: boolean
                pay_what_you_want:
                  type: boolean
                affiliateRevenuePercent:
                  type: number
                affiliate_revenue_percent:
                  type: number
                affiliateCustomerDiscountMode:
                  anyOf:
                    - type: string
                      enum:
                        - USE_STORE_DEFAULT
                    - type: string
                      enum:
                        - CUSTOM
                    - type: string
                      enum:
                        - DISABLED
                affiliate_customer_discount_mode:
                  anyOf:
                    - type: string
                      enum:
                        - USE_STORE_DEFAULT
                    - type: string
                      enum:
                        - CUSTOM
                    - type: string
                      enum:
                        - DISABLED
                affiliateCustomerDiscountPercent:
                  nullable: true
                  type: number
                affiliate_customer_discount_percent:
                  nullable: true
                  type: number
                discordOptional:
                  type: boolean
                discord_optional:
                  type: boolean
                licensingEnabled:
                  type: boolean
                licensing_enabled:
                  type: boolean
                licensePeriod:
                  type: string
                  nullable: true
                license_period:
                  type: string
                  nullable: true
                label_singular:
                  type: string
                label_plural:
                  type: string
                slug:
                  type: string
                  nullable: true
              example:
                type: DYNAMIC
                dynamic_webhook: https://example.com/updated
                delivery_instructions:
                  required: false
                  label: Setup note
                  max_length: 300
                custom_fields:
                  - name: Display Name
                    type: text
                    required: false
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    additionalProperties: true
                example:
                  data:
                    id: prod_db_1
                    uniqid: prod_1
                    shop_id: shop_1
                    slug: null
                    type: DYNAMIC
                    subtype: null
                    title: Product One
                    currency: USD
                    price: 19.99
                    price_display: 19.99
                    description: Product description
                    description_tabs:
                      - title: Features
                        content: <p>Instant delivery, 24/7 support.</p>
                    gateways:
                      - PAYPAL
                    custom_fields:
                      - name: Display Name
                        type: text
                        required: false
                    delivery_instructions:
                      enabled: true
                      required: false
                      label: Setup note
                      max_length: 300
                    quantity_min: 1
                    quantity_max: -1
                    quantity_warning: 0
                    stock: 0
                    stock_delimiter: |+

                    unlisted: false
                    private: false
                    on_hold: false
                    sort_priority: 0
                    crypto_confirmations: 1
                    max_risk_level: 0
                    block_vpn_proxies: false
                    delivery_text: ''
                    delivery_time: null
                    service_text: ''
                    dynamic_webhook: https://example.com/updated
                    watermark_enabled: true
                    image_id: null
                    image_url: null
                    variants: []
                    created_at: 1711965600
                    updated_at: 1711969200
      deprecated: false
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: Use your Shoppex API key in the Authorization header.

````