Criar, alterar e apagar feeds
Cadastra um feed de dados com tipo, formato, filtros e agendamento, altera qualquer campo dele e o apaga.
Criar um feed só cadastra a configuração: nenhum arquivo é gerado até você chamar gerar (ou até o agendamento vencer). A resposta da criação já traz o public_url que você vai entregar ao canal. Todas as rotas exigem o módulo data-feeds e o privilégio manage_data_feeds ou manage_catalog.
/api/v1/admin/data-feedsAdminCria um feed
Responde 201 com o feed criado. O token do link público é gerado pelo servidor; você não o define.
Corpo da requisição (JSON)
namestringobrigatóriofeed_typestringobrigatóriogoogle_shoppingfacebookmercado_livrecustomfile_formatstringpadrão: xmlxmlcsvjsongoogle_shopping e facebook o conteúdo gerado segue o formato do canal, não este campo.statusstringpadrão: AADactivedisabledschedule_intervalintegerpadrão: 00 desliga o agendamento.filtersobjectQuais produtos entram. Todos os campos são opcionais.
statusstringpadrão: activeactive, disabled, hidden ou a letra.category_idsarrayvendor_idsarraymin_priceintegermax_priceintegerin_stockbooleantrue, só produtos com estoque.field_mappingobjectCampos escolhidos.
fieldsarrayLista de campos.
feed_fieldstringobrigatóriog:title).product_fieldstringobrigatórioname).default_valuestringg:google_product_category, é a categoria do Google do feed inteiro.prefixstring/api/v1/admin/data-feeds/{id}AdminAltera um feed
Altera só os campos que você enviar; o resto fica como está. filters e field_mapping são substituídos por inteiro quando enviados. Mudar o tipo ou o formato não gera o arquivo de novo: chame gerar.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição (JSON)
namestringfeed_typestringgoogle_shoppingfacebookmercado_livrecustomfile_formatstringxmlcsvjsonstatusstringADactivedisabledschedule_intervalintegerfiltersobjectfield_mappingobject/api/v1/admin/data-feeds/{id}AdminApaga um feed
Remove o feed de forma definitiva. O link público deixa de funcionar na hora.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/data-feeds" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"name": "Google Shopping",
"feed_type": "google_shopping",
"file_format": "xml",
"schedule_interval": 86400,
"filters": {"status": "active", "in_stock": true, "min_price": 1000}
}'Resposta
{
"id": "18310126-9730-4558-92c1-d9357c8d2792",
"name": "Google Shopping",
"feed_type": "google_shopping",
"file_format": "xml",
"status": "A",
"schedule_interval": 86400,
"file_url": "",
"file_path": "",
"product_count": 0,
"filters": { "status": "active", "in_stock": true, "min_price": 1000 },
"field_mapping": {},
"public_token": "e60cf94168cb51e7326f904c0664910702186692b72dcf3f60380da24b62be26",
"public_url": "https://minhaloja.io.venddor.com.br/api/v1/feeds/e60cf94168cb51e7326f904c0664910702186692b72dcf3f60380da24b62be26.xml",
"created_at": "2026-10-11T21:09:26.676535Z",
"updated_at": "2026-10-11T21:09:26.676535Z"
}{ "message": "data feed deleted" }Os campos do feed estão descritos em Consultar feeds.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON | {"error":"invalid request body","detail":"..."} |
| 400 | Sem name | {"error":"name is required"} |
| 400 | Sem feed_type | {"error":"feed_type is required"} |
| 400 | feed_type fora da lista | {"error":"invalid feed_type: nope (must be google_shopping, facebook, mercado_livre, or custom)"} |
| 400 | file_format fora da lista | {"error":"invalid file_format: yaml (must be xml, csv, or json)"} |
| 401 | Token ausente ou expirado | {"error":"invalid or expired token"} |
| 403 | Módulo desligado, ou falta o privilégio | {"error":"module_disabled","module":"data-feeds"} |
| 404 | PUT ou DELETE de um feed que não existe | {"error":"data feed not found"} |
| 500 | Id que não é UUID | {"error":"failed to delete data feed","detail":"..."} |