Contas, jobs e categorias
Lista e consulta as contas de marketplace do seller, acompanha a fila de jobs de cada conta e consulta categorias e atributos exigidos pelo canal.
Uma conta de marketplace é a ligação da loja com um canal (por exemplo "Mercado Livre produção"): guarda as credenciais cifradas, o modo de operação e a fila de sincronização. O seller só lê as contas que o administrador associou a ele. As rotas abaixo são de leitura; criar, autorizar e desligar contas é com o administrador.
Listar as contas
/api/v1/vendor/markethub/accountsSellerLista as contas de marketplace do seller
Parâmetros de consulta
marketplacestringmercadolivre, shopee, tiktokshop, amazon). Quando informado e conhecido, a resposta traz também meta (dados do canal) e webhook_url_base.{
"accounts": [
{
"id": "e4648fc4-dd0d-45cd-9eaf-4fad48de4a78",
"marketplace": "mercadolivre",
"name": "Mercado Livre (produção)",
"external_account_id": "123456789",
"status": "A",
"status_label": "active",
"sandbox": false,
"credentials_expires_at": "2026-10-12T20:00:00Z",
"webhook_token": "3fedea5b97fc8b3c...",
"settings": {},
"last_ping_at": "2026-10-11T22:00:00Z",
"created_at": "2026-09-09T05:37:45Z",
"updated_at": "2026-10-11T22:00:00Z",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"orders_today": 4,
"listings_error_count": 0,
"last_synced_at": "2026-10-11T22:05:00Z"
}
]
}Campos da resposta
accountsarray[]) quando o administrador não associou nenhuma.accounts[].iduuidaccounts[].marketplacestringaccounts[].namestringaccounts[].external_account_idstringaccounts[].statusstringPARDEaccounts[].status_labelstringpending_authactivereauth_requireddisablederroraccounts[].sandboxbooleanaccounts[].credentials_expires_atstringaccounts[].webhook_tokenstringaccounts[].sales_channel_idstringaccounts[].settingsobject{}.accounts[].last_ping_atstringaccounts[].last_errorstringaccounts[].vendor_iduuidaccounts[].orders_todayintegeraccounts[].listings_error_countintegeraccounts[].last_synced_atstringmetaobjectmarketplace: dados do canal (nome, capacidades, formato de autenticação).webhook_url_basestringmarketplace: modelo da URL pública de webhook.Consultar uma conta
/api/v1/vendor/markethub/accounts/{id}SellerConsulta uma conta de marketplace do seller
Devolve a conta com os campos descritos acima. Conta de outro seller, sem dono ou inexistente responde 404.
Parâmetros de caminho
iduuidobrigatórioFila de jobs de uma conta
/api/v1/vendor/markethub/accounts/{id}/jobsSellerLista os jobs de sincronização de uma conta
Mostra o que a plataforma enfileirou para o canal e como foi: publicações, atualizações, buscas de pedidos, etiquetas. É o lugar para entender por que um anúncio ou pedido não andou.
Parâmetros de caminho
iduuidobrigatórioParâmetros de consulta
statusstringPRSFDkindstringpublishupdatepricestockpauseresumedeleteorder_fetchorder_pulllabelshipsplitunsplitinvoicereturn_pullsettleqa_pulllisting_reconciletracking_pullmissed_feedslimitintegerpadrão: 100{
"jobs": [
{
"id": 4812,
"account_id": "e4648fc4-dd0d-45cd-9eaf-4fad48de4a78",
"kind": "publish",
"ref_id": "a7c1d0e2-3b4f-4c5a-8d6e-9f0a1b2c3d4e",
"status": "F",
"attempts": 2,
"run_after": "2026-10-11T22:30:00Z",
"last_error": "rate limited by the channel",
"created_at": "2026-10-11T22:00:00Z"
}
]
}Campos da resposta
jobsarrayjobs[].idintegerjobs[].account_iduuidjobs[].kindstringjobs[].ref_idstringjobs[].statusstringPRSFDP pendente, R em execução, S sucesso, F falhou e será tentado de novo, D desistiu (esgotou as tentativas).jobs[].attemptsintegerjobs[].run_afterstringjobs[].last_errorstringjobs[].payloadobjectjobs[].created_atstringCategorias do canal
/api/v1/vendor/markethub/accounts/{id}/categoriesSellerLista as categorias do canal sob uma categoria-pai
Devolve os filhos de uma categoria do canal (a raiz se parent vier vazio), da cópia guardada na plataforma ou, se estiver vencida, buscada no canal. Percorra a árvore descendo de pai em filho até chegar a uma folha (leaf: true): só categorias folha servem para anunciar.
Parâmetros de caminho
iduuidobrigatórioParâmetros de consulta
parentstringexternal_id). Vazio traz a raiz.pageintegerpadrão: 1per_page.per_pageintegernext_page. Sem ele, vem tudo.{
"categories": [
{ "external_id": "MLB1051", "parent_ext_id": null, "name": "Celulares e Telefones", "path": "Celulares e Telefones", "leaf": false }
],
"next_page": 0
}Campos da resposta
categoriesarraycategories[].external_idstringcategory_ext_id do anúncio.categories[].parent_ext_idstringnull na raiz.categories[].namestringcategories[].pathstringcategories[].leafbooleantrue quando não tem filhos.next_pageintegerper_page: próxima página, ou 0 se esta é a última.Atributos de uma categoria
/api/v1/vendor/markethub/accounts/{id}/categories/{extID}/attributesSellerLista os atributos exigidos por uma categoria do canal
Diz o que o canal pede para anunciar nessa categoria: marca, cor, voltagem etc., com as opções permitidas quando o campo é uma lista. Use para montar o campo attributes do anúncio.
Parâmetros de caminho
iduuidobrigatórioextIDstringobrigatórioexternal_id).{
"attributes": [
{
"external_id": "BRAND",
"name": "Marca",
"required": true,
"type": "string"
},
{
"external_id": "COLOR",
"name": "Cor",
"required": false,
"type": "list",
"values": [{ "id": "52049", "name": "Preto" }]
}
]
}Campos da resposta
attributesarrayattributes[].external_idstringattributes[].namestringattributes[].requiredbooleanattributes[].typestringattributes[].valuesarrayid e name), quando o atributo é uma lista.Exemplo de requisição
# contas
curl "$BASE_URL/api/v1/vendor/markethub/accounts" -H "Authorization: Bearer $TOKEN"
# categorias da raiz, 50 por vez
curl "$BASE_URL/api/v1/vendor/markethub/accounts/$ACCOUNT_ID/categories?per_page=50" \
-H "Authorization: Bearer $TOKEN"
# atributos de uma categoria folha
curl "$BASE_URL/api/v1/vendor/markethub/accounts/$ACCOUNT_ID/categories/MLB1055/attributes" \
-H "Authorization: Bearer $TOKEN"Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token. | {"error":"authentication required"} |
| 403 | Módulo desligado. | {"error":"module_disabled","module":"marketplace-hub"} |
| 403 | O usuário não tem seller. | {"error":"no vendor account associated with this user"} |
| 404 | Conta de outro seller, sem dono ou inexistente. | {"error":"account not found","detail":"markethub: account not found"} |
| 500 | id da conta que não é UUID. | {"error":"account not found","detail":"o valor \"abc\" não é um uuid válido. ..."} |
| 4xx/5xx | O canal recusou ou falhou ao buscar categorias ou atributos; o status é o do canal (502 se não informado). | {"error":"failed to load categories","code":"...","detail":"..."} |