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

# Atualizar order bump

> Os mesmos campos da criação. `isStandalone: false` continua exigindo produto e título; `true` exige `standaloneSettings` (`title`, `price`, `image`). `maxQuantity` não é quantidade do carrinho.



## OpenAPI

````yaml /openapi.json patch /api/v1/order-bumps/{orderBumpId}
openapi: 3.0.3
info:
  title: Corvex API
  version: 1.0.0
  description: >-
    API pública da Corvex para gerenciar catálogo, pedidos, checkout marketing,
    webhooks, clientes e leads. Autenticação exclusiva por API Key
    (`Authorization: Bearer cvx_live_...`).
servers:
  - url: https://apiv3.usecorvex.com.br
    description: Produção
  - url: http://localhost:3333
    description: Desenvolvimento local
security:
  - bearerAuth: []
tags:
  - name: Checkout externo
    description: >-
      Criar link de pagamento a partir de um carrinho no seu site. Autenticação
      com `x-api-key` do painel (não é a API v1 `cvx_live_...`).
  - name: Produtos
    description: >-
      Catálogo da loja. Variantes aparecem só na consulta por id, em modo
      leitura.
  - name: Coleções
    description: Categorias da loja. Use para agrupar produtos na vitrine.
  - name: Kits
    description: Pacotes de produtos vendidos juntos.
  - name: Pedidos
    description: Pedidos da loja. Criar pedido continua no checkout, não nesta API.
  - name: Rastreio
    description: Envios e códigos de rastreio.
  - name: Carrinhos abandonados
    description: Checkouts iniciados e não concluídos.
  - name: Clientes
    description: Compradores agrupados por documento.
  - name: Leads
    description: Contatos capturados na loja virtual.
  - name: Order bumps
    description: Ofertas extras no checkout.
  - name: Brindes
    description: Brindes liberados por regras de carrinho.
  - name: Upsell one-click
    description: Oferta pós-compra com um clique.
  - name: Cupons
    description: 'Cupons de desconto. Não há exclusão: altere o status.'
  - name: Faixas de desconto
    description: Desconto progressivo por valor ou quantidade.
  - name: Desconto por pagamento
    description: Percentual por PIX, cartão ou boleto. Um desconto por método.
  - name: Webhooks
    description: >-
      URLs chamadas quando eventos da loja acontecem. O secret nunca é
      devolvido.
  - name: Automações
    description: >-
      Fluxos, templates de mensagem e metatags. Automações novas nascem
      desativadas (`active: false`).
paths:
  /api/v1/order-bumps/{orderBumpId}:
    patch:
      tags:
        - Order bumps
      summary: Atualizar order bump
      description: >-
        Os mesmos campos da criação. `isStandalone: false` continua exigindo
        produto e título; `true` exige `standaloneSettings` (`title`, `price`,
        `image`). `maxQuantity` não é quantidade do carrinho.
      operationId: updateOrderBump
      parameters:
        - $ref: '#/components/parameters/StoreId'
        - $ref: '#/components/parameters/OrderBumpId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 3
                  maxLength: 100
                description:
                  type: string
                  nullable: true
                type:
                  type: string
                  enum:
                    - PRODUCT
                    - DISCOUNT
                    - SHIPPING_UPGRADE
                    - WARRANTY
                status:
                  type: string
                  enum:
                    - ACTIVE
                    - INACTIVE
                    - SCHEDULED
                isStandalone:
                  type: boolean
                  description: >-
                    false = oferta de um produto da loja. true = oferta avulsa,
                    sem produto do catálogo.
                productId:
                  type: string
                  format: uuid
                  description: >-
                    Obrigatório se isStandalone é false. Não envie se
                    isStandalone é true.
                productVariantId:
                  type: string
                  format: uuid
                  nullable: true
                discountType:
                  type: string
                  enum:
                    - CURRENCY
                    - PERCENT
                  nullable: true
                discountAmount:
                  type: number
                  nullable: true
                title:
                  type: string
                  description: >-
                    Texto do card no checkout. Obrigatório se isStandalone é
                    false. No modo avulso pode omitir: usa
                    standaloneSettings.title.
                subtitle:
                  type: string
                  nullable: true
                image:
                  type: string
                  format: uri
                  nullable: true
                price:
                  type: number
                  nullable: true
                discountedPrice:
                  type: number
                  nullable: true
                autoAdd:
                  type: boolean
                required:
                  type: boolean
                maxQuantity:
                  type: integer
                  nullable: true
                  description: >-
                    Quantidade máxima deste item no bump (o produto oferecido).
                    Não é quantidade de itens no carrinho — isso existe só em
                    brindes (minCartQuantity / maxCartQuantity).
                startsAt:
                  type: string
                  format: date-time
                  nullable: true
                endsAt:
                  type: string
                  format: date-time
                  nullable: true
                triggerProductIds:
                  type: array
                  items:
                    type: string
                  description: >-
                    Produtos no carrinho que disparam o bump. Array vazio =
                    qualquer produto.
                targetCategoryIds:
                  type: array
                  items:
                    type: string
                  description: >-
                    Coleções que disparam o bump. Array vazio = sem filtro por
                    coleção.
                minCartTotal:
                  type: number
                  minimum: 0
                  nullable: true
                  description: >-
                    Valor mínimo do carrinho para exibir o bump. null = sem
                    mínimo.
                maxCartTotal:
                  type: number
                  minimum: 0
                  nullable: true
                  description: >-
                    Valor máximo do carrinho para exibir o bump. null = sem
                    máximo.
                position:
                  type: integer
                  minimum: 1
                displayOrder:
                  type: integer
                  minimum: 1
                buttonText:
                  type: string
                  maxLength: 50
                  nullable: true
                standaloneSettings:
                  type: object
                  description: >-
                    Obrigatório se isStandalone é true. Envie title, price e
                    image. Não combine com productId.
                  properties:
                    title:
                      type: string
                      description: Obrigatório no modo avulso.
                    description:
                      type: string
                    price:
                      type: number
                      description: Preço da oferta avulsa. Obrigatório.
                    discountedPrice:
                      type: number
                      description: Preço promocional. Deve ser menor que price.
                    image:
                      type: string
                      format: uri
                      description: URL da imagem. Obrigatória no modo avulso.
                  required:
                    - title
                    - price
                    - image
            example:
              name: Proteção extra
              description: null
              type: PRODUCT
              status: ACTIVE
              isStandalone: false
              productId: 22222222-2222-4222-8222-222222222222
              productVariantId: null
              discountType: PERCENT
              discountAmount: 10
              title: Leve também a proteção
              subtitle: null
              image: https://cdn.example.com/bump.png
              price: 49.9
              discountedPrice: 39.9
              autoAdd: false
              required: false
              maxQuantity: 1
              startsAt: null
              endsAt: null
              triggerProductIds:
                - 22222222-2222-4222-8222-222222222222
              targetCategoryIds: []
              minCartTotal: null
              maxCartTotal: null
              position: 1
              displayOrder: 1
              buttonText: Adicionar
      responses:
        '200':
          description: Sucesso.
          content:
            application/json:
              example:
                success: true
                data:
                  orderBump:
                    id: 66666666-6666-4666-8666-666666666666
                    storeId: 11111111-1111-4111-8111-111111111111
                    name: Proteção extra
                    description: null
                    type: PRODUCT
                    status: INACTIVE
                    productId: 22222222-2222-4222-8222-222222222222
                    productVariantId: null
                    discountType: PERCENT
                    discountAmount: 10
                    title: Leve também a proteção
                    subtitle: null
                    image: https://cdn.example.com/bump.png
                    price: 49.9
                    discountedPrice: 39.9
                    autoAdd: false
                    required: false
                    maxQuantity: 1
                    startsAt: null
                    endsAt: null
                    triggerProductIds:
                      - 22222222-2222-4222-8222-222222222222
                    targetCategoryIds: []
                    minCartTotal: null
                    maxCartTotal: null
                    position: 1
                    displayOrder: 1
                    isStandalone: false
                    standaloneSettings: null
                    createdAt: '2026-09-24T14:00:00.000Z'
                    updatedAt: '2026-09-24T14:00:00.000Z'
                    buttonText: Adicionar
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFoundOrderBump'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    StoreId:
      name: X-Store-Id
      in: header
      required: true
      schema:
        type: string
        format: uuid
      description: UUID da loja. A chave precisa ter esta loja autorizada.
      example: 11111111-1111-4111-8111-111111111111
    OrderBumpId:
      name: orderBumpId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: UUID do order bump.
  responses:
    ValidationError:
      description: Header `X-Store-Id`, query ou body inválidos.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            success: false
            error:
              message: X-Store-Id deve ser um UUID válido
              code: VALIDATION_ERROR
            meta:
              timestamp: '2026-09-24T14:00:00.000Z'
              status: 400
    Unauthorized:
      description: API Key ausente, inválida, expirada ou revogada.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            success: false
            error:
              message: >-
                Esta rota exige uma API Key. Use Authorization: Bearer
                cvx_live_...
              code: AUTH_API_KEY_REQUIRED
            meta:
              timestamp: '2026-09-24T14:00:00.000Z'
              status: 401
    Forbidden:
      description: >-
        Falta o escopo desta operação (`AUTH_SCOPE_DENIED`) ou a loja não está
        autorizada na chave (`AUTH_STORE_ACCESS_DENIED`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            success: false
            error:
              message: Sua API Key não tem o escopo necessário para esta operação.
              code: AUTH_SCOPE_DENIED
            meta:
              timestamp: '2026-09-24T14:00:00.000Z'
              status: 403
    NotFoundOrderBump:
      description: Order bump inexistente nesta loja.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            success: false
            error:
              message: Recurso não encontrado
              code: RESOURCE_NOT_FOUND
            meta:
              timestamp: '2026-09-24T14:00:00.000Z'
              status: 404
    RateLimited:
      description: Muitas requisições. Respeite Retry-After.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Segundos até poder tentar de novo.
      content:
        application/json:
          schema:
            type: object
            properties:
              success:
                type: boolean
                example: false
              message:
                type: string
              error:
                type: string
                example: RATE_LIMITED
              retryAfter:
                type: integer
          example:
            success: false
            message: Muitas requisições. Tente novamente em instantes.
            error: RATE_LIMITED
            retryAfter: 12
  schemas:
    ErrorBody:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            message:
              type: string
            code:
              type: string
            details: {}
        meta:
          type: object
          properties:
            timestamp:
              type: string
              format: date-time
            status:
              type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        API Key no formato `cvx_live_...`, criada no painel Corvex. Não use JWT
        de sessão nem `x-api-key`.

````