Importar e mover carteira
Substitui a carteira, importa clientes por CNPJ/CPF a partir de planilha, transfere ou copia clientes entre representantes e restaura vínculos temporários vencidos.
Operações em massa sobre a carteira. Quase todas trabalham por seller (vendor_id): o vendor_id vazio significa os vínculos globais (sem seller), e é preciso mandar o vendor_id do seller quando os representantes são do modo do seller.
Substituir a carteira
Apaga os vínculos permanentes do representante para aquele vendor_id e grava a lista enviada no lugar. Vínculos temporários e cópias não são tocados.
/api/v1/admin/trade-reps/{id}/portfolioAdminSubstitui os clientes permanentes de um representante
Parâmetros de caminho
idintegerobrigatórioCorpo da requisição
customer_idsarrayobrigatóriovendor_idstring{ "status": "ok", "count": 1 }Importar clientes por CNPJ ou CPF
Resolve cada documento para um cliente da loja e o coloca na carteira. Aceita planilha (.xlsx ou .csv, até 8 MB, multipart/form-data) ou JSON com a lista colada. Use dry_run para ver o que aconteceria antes de gravar.
/api/v1/admin/trade-reps/{id}/portfolio/importAdminImporta a carteira a partir de documentos
Parâmetros de caminho
idintegerobrigatórioCorpo da requisição (JSON)
documentsarraytextstringdocuments.dry_runbooleanpadrão: falsetrue resolve e relata sem gravar.assign_if_elsewherebooleanpadrão: truefalse pula clientes que já estão na carteira de outro representante.Campos de formulário (planilha)
filefileobrigatório.xlsx ou .csv. Toda célula com 10, 11, 13 ou 14 dígitos vira candidata a documento; o cabeçalho é ignorado.dry_runstringtrue1assign_if_elsewherestringfalse0curl -X POST "$BASE_URL/api/v1/admin/trade-reps/2/portfolio/import" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@carteira.xlsx" \
-F "dry_run=true"{
"dry_run": true,
"total": 1,
"assigned": 1,
"already_in_portfolio": 0,
"no_account": 0,
"skipped_other_rep": 0,
"invalid_document": 0,
"rows": [
{
"input": "11222333000181",
"document": "11222333000181",
"status": "assigned",
"customer_id": "220b672c-90fe-4841-ae86-bd4f1ace982e",
"name": "Priscila Gomes",
"email": "priscila.gomes@example.com"
}
]
}Campos da resposta
dry_runbooleantotalintegerassignedintegerdry_run).already_in_portfoliointegerno_accountintegerskipped_other_repintegerassign_if_elsewhere: false).invalid_documentintegerrowsarraystatus igual a um dos contadores acima (assigned, already_in_portfolio, no_account, skipped_other_rep, invalid_document).rows[].other_repsarrayTransferir clientes
Move clientes de um representante para outro. Os dois precisam ter o mesmo owner_vendor_id. A transferência fica registrada com quem a fez.
/api/v1/admin/trade-reps/transferAdminTransfere clientes entre representantes
Corpo da requisição
from_rep_idintegerobrigatórioto_rep_idintegerobrigatóriocustomer_idsarrayall_filtered: true) move toda a carteira ativa da origem para o vendor_id informado.all_filteredbooleantrue ignora customer_ids e move tudo.kindstringpadrão: permanentpermanenttemporarypttemporary (ou t) exige valid_until; ao vencer, o cliente pode voltar ao representante de origem.valid_untilstringvendor_idstring{ "moved": 1, "copied": 0, "skipped": 0 }Campos da resposta
movedintegercopiedintegerskippedintegervendor_id.Copiar clientes
Igual à transferência, mas o cliente continua com a origem: passa a ter vínculo copy também com o destino.
/api/v1/admin/trade-reps/copyAdminCopia clientes para outro representante
Corpo da requisição
from_rep_idintegerobrigatórioto_rep_idintegerobrigatóriocustomer_idsarrayall_filtered: true) copia toda a carteira ativa da origem.all_filteredbooleantrue copia tudo.temporarybooleantrue exige valid_until.valid_untilstringvendor_idstringA resposta tem o mesmo formato da transferência, com copied preenchido.
Restaurar vínculos temporários vencidos
Devolve ao representante original os clientes de transferências temporárias que já passaram de valid_until e remove as cópias temporárias vencidas. Rode periodicamente (por exemplo, uma vez por dia) ou depois de uma data de corte.
/api/v1/admin/trade-reps/restore-expiredAdminRestaura vínculos temporários vencidos
{ "restored": 3 }Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id não é inteiro, ou corpo não é JSON. | {"error":"invalid trade rep ID"} |
| 400 | Importação sem nenhum documento reconhecido. | {"error":"no documents found in the input"} |
| 400 | Falta file no envio de planilha, ou arquivo ilegível. | {"error":"file is required","detail":"..."} |
| 400 | Transferência ou cópia inválida (origem e destino iguais, representantes de sellers diferentes, valid_until ausente, nada selecionado). | {"error":"transfer failed","detail":"origin and destination must share the same owner_vendor_id"} |
| 500 | Falha ao substituir ou importar (por exemplo, customer_id inexistente). | {"error":"replace portfolio failed","detail":"..."} |
| 401 / 403 | Sem token, módulo desligado ou sem privilégio. | {"error":"module_disabled","module":"trade-reps"} |