Cadastro de feeds
Lista, cria, consulta, altera e exclui os feeds de catálogo do seller.
Cada feed tem um destino (feed_type), um formato, um recorte de produtos (filters) e, opcionalmente, um mapeamento de campos. O recorte já nasce restrito aos produtos do seu seller.
Listar
/api/v1/vendor/data-feedsSellerListar os feeds
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Exemplo de requisição (listar)
bash
curl "$BASE_URL/api/v1/vendor/data-feeds" \
-H "Authorization: Bearer $TOKEN"Resposta (listar)
200Feeds
json
{
"feeds": [
{
"id": "8b538f09-c820-4fff-a03b-efcc2eebadb0",
"name": "Google Shopping",
"feed_type": "google_shopping",
"file_format": "xml",
"status": "A",
"schedule_interval": 86400,
"last_generated_at": "2026-10-11T06:56:18.590595Z",
"file_url": "https://minhaloja.io.venddor.com.br/api/v1/feeds/8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c.xml",
"file_path": "feed.xml",
"product_count": 120,
"filters": {
"status": "active",
"in_stock": true,
"vendor_ids": [
"94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36"
]
},
"field_mapping": {
"fields": [
{
"feed_field": "g:title",
"product_field": "name",
"default_value": "",
"prefix": ""
}
]
},
"public_token": "8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c",
"public_url": "https://minhaloja.io.venddor.com.br/api/v1/feeds/8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c.xml",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-11T06:56:18Z"
}
],
"total": 1
}Campos da resposta
feedsarraySeus feeds, do mais novo ao mais antigo.
idstring (uuid)Id do feed.
namestringNome.
feed_typestringgoogle_shoppingfacebookmercado_livrecustomDestino do feed.
file_formatstringxmlcsvjsonFormato do arquivo.
statusstringA ativo, D desativado.schedule_intervalintegerSegundos entre gerações automáticas.
0 = só manual.last_generated_atstring | nullÚltima geração (RFC 3339).
file_urlstringURL pública do último arquivo gerado. Vazia antes da primeira geração.
file_pathstringNome interno do arquivo gerado.
product_countintegerProdutos no último arquivo.
filtersobjectRecorte de produtos.
vendor_ids é sempre o seu seller.field_mappingobjectMapeamento de campos do feed.
public_tokenstringSegredo do link público. Quem tem o link lê o feed.
public_urlstringLink público do feed, para colar no Google, Meta etc.
vendor_idstring (uuid)Seu seller.
created_atstringCriação (RFC 3339).
updated_atstringÚltima alteração (RFC 3339).
totalintegerQuantidade (sem paginação).
Erros (listar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
Criar
/api/v1/vendor/data-feedsSellerCriar um feed
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Corpo da requisição
namestringobrigatórioNome do feed.
feed_typestringobrigatóriogoogle_shoppingfacebookmercado_livrecustomDestino.
file_formatstringobrigatórioxmlcsvjsonFormato do arquivo.
statusstringpadrão: AADA ou D (ou active/disabled).schedule_intervalintegerpadrão: 0Segundos entre gerações.
0 = só manual.filtersobjectRecorte de produtos.
category_idsarray of stringSó estas categorias.
statusstringStatus dos produtos. Padrão
active.min_priceintegerPreço mínimo em centavos.
max_priceintegerPreço máximo em centavos.
in_stockbooleantrue = só com estoque.vendor_idsarray of stringIgnorado: a plataforma força o seu seller.
field_mappingobjectMapeamento.
fields é uma lista de {feed_field, product_field, default_value, prefix}. Sem mapeamento, vale o conjunto padrão do tipo de feed.Exemplo de requisição (criar)
bash
curl -X POST "$BASE_URL/api/v1/vendor/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": {
"in_stock": true
}
}'Resposta (criar)
201Feed criado
json
{
"id": "8b538f09-c820-4fff-a03b-efcc2eebadb0",
"name": "Google Shopping",
"feed_type": "google_shopping",
"file_format": "xml",
"status": "A",
"schedule_interval": 86400,
"last_generated_at": null,
"file_url": "",
"file_path": "",
"product_count": 0,
"filters": {
"status": "active",
"in_stock": true,
"vendor_ids": [
"94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36"
]
},
"field_mapping": {
"fields": [
{
"feed_field": "g:title",
"product_field": "name",
"default_value": "",
"prefix": ""
}
]
},
"public_token": "8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c",
"public_url": "https://minhaloja.io.venddor.com.br/api/v1/feeds/8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c.xml",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-11T06:56:18Z"
}Campos da resposta
idstring (uuid)Id do feed.
namestringNome.
feed_typestringgoogle_shoppingfacebookmercado_livrecustomDestino do feed.
file_formatstringxmlcsvjsonFormato do arquivo.
statusstringA ativo, D desativado.schedule_intervalintegerSegundos entre gerações automáticas.
0 = só manual.last_generated_atstring | nullÚltima geração (RFC 3339).
file_urlstringURL pública do último arquivo gerado. Vazia antes da primeira geração.
file_pathstringNome interno do arquivo gerado.
product_countintegerProdutos no último arquivo.
filtersobjectRecorte de produtos.
vendor_ids é sempre o seu seller.field_mappingobjectMapeamento de campos do feed.
public_tokenstringSegredo do link público. Quem tem o link lê o feed.
public_urlstringLink público do feed, para colar no Google, Meta etc.
vendor_idstring (uuid)Seu seller.
created_atstringCriação (RFC 3339).
updated_atstringÚltima alteração (RFC 3339).
Erros (criar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
| 400 | feed_type ou file_format inválidos, ou corpo inválido. | {"error":"invalid feed_type: x (must be google_shopping, facebook, mercado_livre, or custom)"} |
Consultar
/api/v1/vendor/data-feeds/{id}SellerConsultar um feed
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idstring (uuid)obrigatórioId do feed.
Exemplo de requisição (consultar)
bash
curl "$BASE_URL/api/v1/vendor/data-feeds/$FEED_ID" \
-H "Authorization: Bearer $TOKEN"Resposta (consultar)
200Feed
json
{
"id": "8b538f09-c820-4fff-a03b-efcc2eebadb0",
"name": "Google Shopping",
"feed_type": "google_shopping",
"file_format": "xml",
"status": "A",
"schedule_interval": 86400,
"last_generated_at": "2026-10-11T06:56:18.590595Z",
"file_url": "https://minhaloja.io.venddor.com.br/api/v1/feeds/8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c.xml",
"file_path": "feed.xml",
"product_count": 120,
"filters": {
"status": "active",
"in_stock": true,
"vendor_ids": [
"94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36"
]
},
"field_mapping": {
"fields": [
{
"feed_field": "g:title",
"product_field": "name",
"default_value": "",
"prefix": ""
}
]
},
"public_token": "8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c",
"public_url": "https://minhaloja.io.venddor.com.br/api/v1/feeds/8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c.xml",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-11T06:56:18Z"
}Campos da resposta
idstring (uuid)Id do feed.
namestringNome.
feed_typestringgoogle_shoppingfacebookmercado_livrecustomDestino do feed.
file_formatstringxmlcsvjsonFormato do arquivo.
statusstringA ativo, D desativado.schedule_intervalintegerSegundos entre gerações automáticas.
0 = só manual.last_generated_atstring | nullÚltima geração (RFC 3339).
file_urlstringURL pública do último arquivo gerado. Vazia antes da primeira geração.
file_pathstringNome interno do arquivo gerado.
product_countintegerProdutos no último arquivo.
filtersobjectRecorte de produtos.
vendor_ids é sempre o seu seller.field_mappingobjectMapeamento de campos do feed.
public_tokenstringSegredo do link público. Quem tem o link lê o feed.
public_urlstringLink público do feed, para colar no Google, Meta etc.
vendor_idstring (uuid)Seu seller.
created_atstringCriação (RFC 3339).
updated_atstringÚltima alteração (RFC 3339).
Erros (consultar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
| 404 | O feed não existe ou não é seu. | {"error":"data feed not found"} |
Alterar
/api/v1/vendor/data-feeds/{id}SellerAlterar um feed
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idstring (uuid)obrigatórioId do feed.
Corpo da requisição
statusstringADA ou D (ou active/disabled).schedule_intervalintegerSegundos entre gerações.
0 = só manual.filtersobjectRecorte de produtos.
category_idsarray of stringSó estas categorias.
statusstringStatus dos produtos. Padrão
active.min_priceintegerPreço mínimo em centavos.
max_priceintegerPreço máximo em centavos.
in_stockbooleantrue = só com estoque.vendor_idsarray of stringIgnorado: a plataforma força o seu seller.
field_mappingobjectMapeamento.
fields é uma lista de {feed_field, product_field, default_value, prefix}. Sem mapeamento, vale o conjunto padrão do tipo de feed.namestringNovo nome.
feed_typestringgoogle_shoppingfacebookmercado_livrecustomNovo destino.
file_formatstringxmlcsvjsonNovo formato.
Exemplo de requisição (alterar)
bash
curl -X PUT "$BASE_URL/api/v1/vendor/data-feeds/$FEED_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"schedule_interval": 43200,
"status": "A"
}'Resposta (alterar)
200Feed alterado
json
{
"id": "8b538f09-c820-4fff-a03b-efcc2eebadb0",
"name": "Google Shopping",
"feed_type": "google_shopping",
"file_format": "xml",
"status": "A",
"schedule_interval": 43200,
"last_generated_at": "2026-10-11T06:56:18.590595Z",
"file_url": "https://minhaloja.io.venddor.com.br/api/v1/feeds/8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c.xml",
"file_path": "feed.xml",
"product_count": 120,
"filters": {
"status": "active",
"in_stock": true,
"vendor_ids": [
"94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36"
]
},
"field_mapping": {
"fields": [
{
"feed_field": "g:title",
"product_field": "name",
"default_value": "",
"prefix": ""
}
]
},
"public_token": "8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c",
"public_url": "https://minhaloja.io.venddor.com.br/api/v1/feeds/8dd4149e4346d49a3a095a97b41b1c22a18d5870d32bf250592ce0073976649c.xml",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-11T06:56:18Z"
}Campos da resposta
idstring (uuid)Id do feed.
namestringNome.
feed_typestringgoogle_shoppingfacebookmercado_livrecustomDestino do feed.
file_formatstringxmlcsvjsonFormato do arquivo.
statusstringA ativo, D desativado.schedule_intervalintegerSegundos entre gerações automáticas.
0 = só manual.last_generated_atstring | nullÚltima geração (RFC 3339).
file_urlstringURL pública do último arquivo gerado. Vazia antes da primeira geração.
file_pathstringNome interno do arquivo gerado.
product_countintegerProdutos no último arquivo.
filtersobjectRecorte de produtos.
vendor_ids é sempre o seu seller.field_mappingobjectMapeamento de campos do feed.
public_tokenstringSegredo do link público. Quem tem o link lê o feed.
public_urlstringLink público do feed, para colar no Google, Meta etc.
vendor_idstring (uuid)Seu seller.
created_atstringCriação (RFC 3339).
updated_atstringÚltima alteração (RFC 3339).
Erros (alterar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
| 404 | O feed não existe ou não é seu. | {"error":"data feed not found"} |
| 400 | Tipo, formato ou corpo inválidos. | {"error":"invalid file_format: x (must be xml, csv, or json)"} |
Excluir
/api/v1/vendor/data-feeds/{id}SellerExcluir um feed
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idstring (uuid)obrigatórioId do feed.
Exemplo de requisição (excluir)
bash
curl -X DELETE "$BASE_URL/api/v1/vendor/data-feeds/$FEED_ID" \
-H "Authorization: Bearer $TOKEN"Resposta (excluir)
200Feed excluído
json
{
"message": "data feed deleted"
}Campos da resposta
messagestringConfirmação fixa.
Erros (excluir)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
| 404 | O feed não existe ou não é seu. | {"error":"data feed not found"} |