Endpoints
Todos os endpoints abaixo estão sob o prefixo/api/v1/products/{product_hash}/affiliates. Exigem autenticação via X-Api-Client-Token + Authorization: Bearer <user_token>, e o produto deve pertencer ao client autenticado.
Adicionar afiliado individual
Rota:POST /api/v1/products/{product_hash}/affiliates
string
required
Código (hash) do usuário a ser afiliado. Deve existir na base e pertencer ao mesmo client da API.
number
Percentual de comissão individual. Min: 1, Max: 80. Se não informado, usa o padrão do produto.
Os campos
status, is_active e origin são preenchidos automaticamente pelo sistema. Toda afiliação criada via Nexus recebe status = "approved", is_active = true e origin = "nexus".Response (200)
string
Hash identificador do afiliado (PID).
number
Percentual de comissão configurado.
string
Status da afiliação.
string
Data de criação (
YYYY-MM-DD HH:mm:ss).Atualizar afiliação
Rota:PUT /api/v1/products/{product_hash}/affiliates/{affiliation_code}
Somente o dono do produto pode atualizar afiliações. O campo user_id é preenchido automaticamente a partir da afiliação na rota — não é necessário enviá-lo no body.
number
Novo percentual de comissão. Min: 1, Max: 80.
Adicionar em lote
Rota:POST /api/v1/products/{product_hash}/affiliates/batch
Operação assíncrona — retorna 202 com o UUID da operação.
array
required
Lista de afiliados. Min: 1, Max: 5.000 itens.
string
required
Código (hash) do usuário a ser afiliado.
number
Percentual de comissão. Min: 1, Max: 80.
GET /affiliates/batch/{batchId} usando o UUID retornado.
Remover em lote
Rota:POST /api/v1/products/{product_hash}/affiliates/batch-delete
array
required
Lista de códigos (hashes) de usuários a remover. Min: 1, Max: 5.000.
Atualizar comissão em lote
Rota:PATCH /api/v1/products/{product_hash}/affiliates/batch
array
required
Lista de afiliados. Min: 1, Max: 5.000 itens.
string
required
Código (hash) do usuário afiliado.
number
required
Novo percentual de comissão. Min: 1, Max: 80.
Atualizar comissão de todos
Rota:PATCH /api/v1/products/{product_hash}/affiliates/commission
number
required
Novo percentual aplicado a todos os afiliados. Min: 1, Max: 80.
Desativar todos
Rota:POST /api/v1/products/{product_hash}/affiliates/deactivate-all
Não recebe campos no body. Desativa todos os afiliados do produto.
Consultar status de operação em lote
Rota:GET /api/v1/products/{product_hash}/affiliates/batch/{batchId}
Retorna o status da operação em lote identificada pelo batchId (UUID retornado nas operações batch). Inclui contadores de itens processados, com sucesso e com falha.
Regras de validação
Criação individual (POST /affiliates)
1
Produto permite afiliação
O campo
allow_affiliation do produto deve ser true.2
Produtor não pode ser afiliado
O
user_id informado não pode ser o dono do produto.3
Usuário pertence ao client
O código informado em
user_id deve corresponder a um usuário vinculado ao mesmo client API autenticado.4
Comissão entre 1% e 80%
Se
commission_percentage for informado, deve estar nesse intervalo.5
Status automático
O sistema define
status = "approved", is_active = true e origin = "nexus". O client não controla esses campos.Operações em lote
As operações batch são processadas de forma assíncrona. Além da validação de formato (array de 1 a 5.000 itens), o processamento aplica regras adicionais por item:- Produtor não pode ser adicionado como afiliado do próprio produto
- Usuário deve existir no sistema e não pode estar excluído
- Não pode haver afiliação ativa existente para o mesmo usuário naquele produto
- Coprodutores do produto são bloqueados
- Se houver afiliação pendente anterior para o mesmo usuário, ela é removida antes de criar a nova
- A afiliação é criada com status
approvede originnexus
Status possíveis
Configurações do produto
Os campos abaixo são gerenciados viaPOST/PUT /api/v1/products/{product_hash} e afetam o comportamento da afiliação.
boolean
Liga/desliga o programa de afiliados. Quando
false, os campos affiliate_percentage, affiliation_description, affiliation_terms, first_click_percentage e last_click_percentage são zerados automaticamente.boolean
Se ativo, solicitações de afiliação são aprovadas automaticamente (sem fila de pendentes).
string
Tipo de atribuição de comissão:
first (primeiro clique), last (último clique) ou multi (dividido entre primeiro e último). Default no Nexus: multi.number
Percentual padrão de comissão. Obrigatório quando
allow_affiliation = true. Min: 1, Max: 80.number
Percentual atribuído ao primeiro clique no modo
multi. A soma com last_click_percentage deve ser 100%. Se apenas um for informado, o outro é calculado automaticamente.number
Percentual atribuído ao último clique no modo
multi.string
Descrição do programa de afiliação. Obrigatória quando
allow_affiliation = true. Min: 50, Max: 1.000 caracteres.string
Termos de afiliação exibidos ao afiliado. Obrigatório quando
allow_affiliation = true. Min: 50, Max: 1.000 caracteres.Configurações da oferta
Os campos abaixo são gerenciados viaPOST/PUT /api/v1/products/{product_hash}/offers/{offer_code}.
boolean
Permite ou bloqueia afiliados naquela oferta específica.
number
Percentual de comissão específico da oferta. Sobrescreve o
affiliate_percentage do produto. Obrigatório quando allow_affiliates = true. Min: 1, Max: 80.boolean
Auto-afiliação na oferta.
number
Percentual de comissão para renovações de assinatura (apenas ofertas recorrentes). Min: 1, Max: 80.
boolean
Habilita comissão diferenciada para renovações. Quando
true, affiliates_subscription_percentage passa a ser obrigatório.boolean
Se ativo, a comissão é paga somente na primeira parcela (apenas ofertas recorrentes).
Fluxos
Adicionar afiliado individual
Adicionar em lote
Atualizar afiliação
O client enviaPUT /affiliates/{affiliation_code}. Exige que o usuário autenticado seja o dono do produto (gate update-affiliate). Permite alterar commission_percentage e outros campos. O backend gera log de auditoria com o estado antes e depois da alteração.
Remover afiliação
O client enviaDELETE /affiliates/{affiliation_code}. A afiliação é removida via soft delete. O backend gera log de auditoria registrando a remoção.
Operações em massa
PATCH /affiliates/batch atualiza commission_percentage para uma lista de afiliados. PATCH /affiliates/commission aplica um único percentual a todos. POST /affiliates/deactivate-all desativa todos os afiliados do produto. POST /affiliates/batch-delete remove uma lista por user_ids. Todas as operações batch retornam 202 e são processadas em fila.
Autorização
Todos os endpoints de afiliação exigem que o produto pertença ao client autenticado (middleware de propriedade).Restrições resumidas
Validação de campos
Validação de campos
allow_affiliationdo produto deve sertrue- Produtor nunca pode ser afiliado do próprio produto
user_iddeve ser o código (hash) do usuário, não o ID interno- Comissão sempre entre 1% e 80%
- Operações batch: máximo 5.000 itens por chamada
Comportamento automático
Comportamento automático
- Toda afiliação via Nexus recebe
status = approvedeorigin = nexus - Quando
allow_affiliationé desligado no produto, os campos de afiliação são zerados - No modo
multi, se apenasfirst_click_percentageoulast_click_percentagefor informado, o outro é calculado automaticamente para somar 100%
Processamento em lote
Processamento em lote
- Coprodutores e afiliações duplicadas são bloqueados por item
- Afiliações pendentes anteriores são removidas antes de criar a nova
- Operações batch retornam
202e são processadas em fila