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

# Atualizar produto

> Atualiza os dados de um produto existente.

**Campos atualizáveis:**
- `name` - Nome do produto
- `description` - Descrição do produto
- `price` - Preço do produto
- `category_id` - ID da categoria
- `status` - Status do produto
- `has_auto_affiliation` - Se permite afiliação automática para este produto
- `allow_affiliation` - Se permite afiliação para este produto
- `affiliate_percentage`, `affiliation_description`, `affiliation_terms` - Quando `allow_affiliation` = true




## OpenAPI

````yaml /api-reference/openapi.yaml put /products/{product_hash}
openapi: 3.0.3
info:
  title: Nexus
  version: 1.0.2
  description: >
    API para integração entre Ticto e clientes externos


    # Autenticação


    Para autenticar as solicitações aos endpoints descritos a seguir, por favor,
    siga os passos abaixo:


    1. **Solicite** seu cadastro como cliente através do e-mail
    **infraestrutura@ticto.com.br** para obter seu `client_id` e `token`.

    2. **Use** seu token e ID de cliente para fazer login no Nexus e obter seu
    `client_token`.

    3. **Em todas as outras requisições**, envie seu `client_token` no header
    como `X-Api-Client-Token`.

    4. **Crie** seus usuários na rota de criação de usuário. Para cada usuário,
    será retornado um `public_token` único.

    5. **Para endpoints que não estão em public.php**, adicione o `public_token`
    do usuário no cabeçalho **Authorization** utilizando o formato:

       ```http
       Authorization: Bearer {public_token}
       ```

    ## Restrição de origem


    O acesso a esta API não está disponível para todos os sellers. Seu uso é
    estritamente permitido para parceiros comerciais que a utilizarão em
    cenários específicos. Por este motivo, o acesso será restrito a endereços IP
    e domínios previamente informados por esses parceiros. Essa medida visa
    proporcionar um ambiente mais controlado e seguro para todos os nossos
    usuários e parceiros.


    ### O que isso significa para os desenvolvedores?


    - **Acesso Limitado:**
      Somente os IPs e domínios pré-autorizados poderão realizar chamadas à API. Qualquer tentativa de acesso de um IP ou domínio não listado será automaticamente rejeitada.

    - **Processo de Autorização:**
      Para garantir a continuidade do acesso à API sem interrupções, é essencial que os desenvolvedores enviem os endereços IP ou domínios que necessitam de acesso diretamente à nossa equipe de suporte.

    - **Como Solicitar Acesso:**
      Envie um e-mail para **liberacao@ticto.com.br** com o assunto _"Solicitação de Acesso à API de pagamentos"_, incluindo:
      - Nome da empresa ou do desenvolvedor
      - Endereços IP ou domínios a serem autorizados
      - Justificativa para o acesso
      - Informações de contato para eventuais esclarecimentos

    ## Alterações e/ou inclusão de novos domínios e IPs


    Recomendamos que solicitações de adição ou alteração de IPs/domínios sejam
    feitas o mais breve possível para garantir uma transição suave. Em casos de
    alterações, os domínios e/ou IPs anteriores serão imediatamente bloqueados
    após sua remoção.


    ## Suporte e Dúvidas


    Para dúvidas ou suporte adicional, entre em contato conosco através do
    e-mail **liberacao@ticto.com.br**. Estamos comprometidos em auxiliar neste
    processo e garantir a melhor experiência possível.
servers:
  - url: https://nexus.ticto.com.br/api/v1
    description: Produção
security: []
tags:
  - name: Autenticação
  - name: Configurações do Cliente
  - name: Usuários
  - name: Onboarding de usuário
  - name: Contas Bancárias
  - name: Faixas de Taxa
    description: >-
      Endpoints para consulta de faixas de taxa personalizadas e histórico de
      alterações.
  - name: Frete
  - name: Financeiro
  - name: PIX Automático
    description: >-
      Consulta, cancelamento e nova tentativa de cobrança de assinaturas com PIX
      Automático (débito recorrente autorizado pelo pagador).
  - name: Produtos
  - name: Integrações
  - name: 'Webhooks: Usuários'
    description: Eventos relacionados a cadastro e atualização de usuários.
  - name: 'Webhooks: Contas Bancárias'
    description: Eventos relacionados a contas bancárias dos sellers.
  - name: 'Webhooks: Produtos e Ofertas'
    description: Eventos relacionados a produtos, ofertas, afiliados e coprodutores.
  - name: 'Webhooks: Financeiro'
    description: Eventos de reembolso, saque e antecipação.
  - name: 'Webhooks: Faixas de Taxa'
    description: Eventos de criação, atualização e exclusão de faixas de taxa.
  - name: 'Webhooks: Pedidos'
    description: Eventos de criação e atualização de pedidos.
  - name: 'Webhooks: Cobranças'
    description: >-
      Eventos de criação e mudança de status de cobranças (transações), na
      primeira compra e nas renovações.
  - name: 'Webhooks: Assinaturas'
    description: Eventos do ciclo de vida de assinaturas, cobranças e trial.
paths:
  /products/{product_hash}:
    put:
      tags:
        - Produtos
      summary: Atualizar produto
      description: >
        Atualiza os dados de um produto existente.


        **Campos atualizáveis:**

        - `name` - Nome do produto

        - `description` - Descrição do produto

        - `price` - Preço do produto

        - `category_id` - ID da categoria

        - `status` - Status do produto

        - `has_auto_affiliation` - Se permite afiliação automática para este
        produto

        - `allow_affiliation` - Se permite afiliação para este produto

        - `affiliate_percentage`, `affiliation_description`, `affiliation_terms`
        - Quando `allow_affiliation` = true
      operationId: updateProduct
      parameters:
        - name: product_hash
          in: path
          required: true
          description: Hash do produto
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestProduct'
      responses:
        '200':
          description: Produto atualizado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseProduct'
        '400':
          description: Requisição inválida
        '401':
          description: Não autorizado
        '403':
          description: Acesso negado - produto não pertence ao cliente
        '404':
          description: Produto não encontrado
        '422':
          description: Payload incorreto
        '500':
          description: Erro interno do servidor
      security:
        - ApiClientToken: []
        - bearerAuth: []
components:
  schemas:
    RequestProduct:
      type: object
      required:
        - name
        - category_id
        - description
        - type
        - support_email
        - support_phone
        - refund_deadline
        - soft_descriptor
      properties:
        name:
          type: string
          minLength: 3
          maxLength: 191
          description: Nome do produto.
        category_id:
          type: integer
          minimum: 1
          maximum: 999999
          description: ID da categoria.
        description:
          type: string
          minLength: 3
          maxLength: 1000
          description: Descrição do produto.
        type:
          type: string
          enum:
            - course
            - ebook
            - physical
          description: Tipo do produto.
        support_email:
          type: string
          format: email
          maxLength: 191
          description: E-mail de suporte.
        support_phone:
          type: string
          maxLength: 20
          description: Telefone de suporte (opcional).
          example: '11999999999'
        refund_deadline:
          type: integer
          enum:
            - 7
            - 15
            - 30
          minimum: 7
          maximum: 30
          description: Prazo de reembolso em dias.
        image_stock:
          type: string
          format: binary
          description: |
            Documento de garantia do produto.
            - Obrigatório apenas para produtos do tipo 'physical'
            - Formatos aceitos: PNG, JPG, JPEG
            - Tamanho máximo: 10MB
            - Para produtos físicos, enviar via multipart/form-data
        cover_picture:
          type: string
          format: url
          description: URL da imagem de capa (opcional).
        status:
          type: string
          enum:
            - draft
            - pre-approved
            - approved
            - pending
            - pending-correction
            - reproved
          description: Status do produto.
        soft_descriptor:
          type: string
          maxLength: 13
          pattern: ^[a-zA-Z0-9]+$
          description: >-
            Descritor que aparece na fatura do cartão do comprador (apenas
            alfanumérico, até 13 caracteres).
          example: MEUPRODUTO
        has_auto_affiliation:
          type: boolean
          description: Se permite afiliação automática para este produto.
          default: false
        allow_affiliation:
          type: boolean
          description: Se permite afiliação (campo do produto).
          default: true
        affiliate_percentage:
          type: number
          minimum: 1
          maximum: 80
          description: >-
            Percentual de comissão do afiliado. Obrigatório quando
            `allow_affiliation` é true.
        affiliate_commission_type:
          type: string
          enum:
            - single_click
            - multi_click
          nullable: true
          description: |
            Tipo de atribuição de comissão do afiliado.
            - `single_click` — comissão vai para um único afiliado
            - `multi_click` — comissão é dividida entre primeiro e último clique
        first_click_percentage:
          type: number
          nullable: true
          minimum: 0.01
          maximum: 99.99
          description: >
            Percentual de comissão atribuído ao afiliado do **primeiro clique**
            (multiclick).

            Aceita até 2 casas decimais. Se informado sem
            `last_click_percentage`,

            o complemento para 100% é calculado automaticamente.
          example: 60
        last_click_percentage:
          type: number
          nullable: true
          minimum: 0.01
          maximum: 99.99
          description: >
            Percentual de comissão atribuído ao afiliado do **último clique**
            (multiclick).

            Aceita até 2 casas decimais. Se informado sem
            `first_click_percentage`,

            o complemento para 100% é calculado automaticamente.

            A soma de `first_click_percentage` + `last_click_percentage` deve
            ser 100.
          example: 40
        affiliation_description:
          type: string
          minLength: 50
          maxLength: 1000
          description: >-
            Descrição do programa de afiliados. Obrigatório quando
            `allow_affiliation` é true.
        affiliation_terms:
          type: string
          minLength: 50
          maxLength: 1000
          description: >-
            Termos do programa de afiliados. Obrigatório quando
            `allow_affiliation` é true.
        metadata:
          type: object
          description: Metadados complementares do produto.
          properties:
            links:
              type: object
              description: Links associados ao produto.
              properties:
                sales_page_url:
                  type: string
                  format: url
                  description: URL da página de vendas.
                sales_page_absence_reason:
                  type: string
                  maxLength: 1000
                  description: Motivo de ausência da página de vendas.
                page_released:
                  type: string
                  description: Data de liberação da página (livre).
                without_sales_page:
                  type: boolean
                  description: Indica ausência de página de vendas.
    ResponseProduct:
      type: object
      description: Objeto de retorno com os dados do produto.
      required:
        - hash
        - name
        - category_id
        - description
        - type
        - support_email
        - support_phone
        - refund_deadline
        - status
        - created_at
        - updated_at
      properties:
        hash:
          type: string
          description: Hash único do produto.
        name:
          type: string
          description: Nome do produto.
        category_id:
          type: integer
          minimum: 1
          maximum: 999999
          description: ID da categoria do produto.
        description:
          type: string
          description: Descrição do produto.
        type:
          type: string
          enum:
            - course
            - ebook
            - physical
          description: Tipo do produto.
        support_email:
          type: string
          format: email
          description: E-mail de suporte do produto.
        support_phone:
          type: string
          maxLength: 20
          description: Telefone de suporte do produto.
          example: '11999999999'
        refund_deadline:
          type: integer
          enum:
            - 7
            - 15
            - 30
          minimum: 7
          maximum: 30
          description: Prazo para reembolso (em dias).
        soft_descriptor:
          type: string
          maxLength: 13
          description: Descritor que aparece na fatura do cartão do comprador.
          example: MEUPRODUTO
        image_stock:
          type: string
          format: url
          description: >-
            URL do documento de garantia do produto (obrigatório para produtos
            físicos).
        cover_picture:
          type: string
          format: url
          description: URL da imagem de capa (opcional).
        status:
          type: string
          enum:
            - draft
            - pre-approved
            - approved
            - pending
            - pending-correction
            - reproved
          description: Status do produto.
        is_active:
          type: boolean
          description: Indica se o produto está ativo.
        has_auto_affiliation:
          type: boolean
          description: Se permite afiliação automática para este produto.
        allow_affiliation:
          type: boolean
          description: Se permite afiliação (campo do produto).
        affiliate_commission_type:
          type: string
          enum:
            - first
            - last
            - multi
          nullable: true
          description: >-
            Tipo de atribuição de comissão do afiliado (first = primeiro clique,
            last = último clique, multi = dividido).
        first_click_percentage:
          type: number
          nullable: true
          description: Percentual de comissão do primeiro clique (multiclick).
          example: 60
        last_click_percentage:
          type: number
          nullable: true
          description: Percentual de comissão do último clique (multiclick).
          example: 40
        metadata:
          type: object
          description: Metadados complementares do produto.
          properties:
            links:
              type: object
              description: Links associados ao produto.
              properties:
                sales_page_url:
                  type: string
                  format: url
                  description: URL da página de vendas.
                sales_page_absence_reason:
                  type: string
                  description: Motivo de ausência da página de vendas.
                page_released:
                  type: string
                  description: Data de liberação da página (livre).
                without_sales_page:
                  type: boolean
                  description: Indica ausência de página de vendas.
        created_at:
          type: string
          description: Data de criação (formato `YYYY-MM-DD HH:mm:ss`)
          example: '2026-01-15 14:30:00'
        updated_at:
          type: string
          description: Data de atualização (formato `YYYY-MM-DD HH:mm:ss`)
          example: '2026-01-15 14:30:00'
  securitySchemes:
    ApiClientToken:
      type: apiKey
      in: header
      name: X-Api-Client-Token
      description: Token de autenticação do cliente obtido via endpoint /auth
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Token de autenticação do usuário (public_token) obtido na criação do
        usuário

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.