VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API legada/Referência completa/Integração ERP (1.0)

Sincronização de objetos

Devolve os clientes, produtos ou pedidos que mudaram desde um horário, para o ERP manter uma cópia local atualizada.

Um ERP que mantém uma cópia dos dados da loja não deve baixar tudo a cada ciclo. Esta rota entrega só o que mudou desde a última leitura: o ERP guarda o horário em que leu pela última vez e o envia na próxima chamada. A rota existe com três nomes (ec_sync_objects, ecsyncobjects e sync_objects), todos iguais, nas formas /api/v1.0/... e /api/....

Há três tipos de objeto, escolhidos em object_type: clientes (U), produtos (P) e pedidos (O). Exige credencial de administrador.

GET/api/v1.0/ec_sync_objectsAdmin

Objetos alterados desde um horário (API 1.0)

Responde sempre com HTTP 200 e o envelope {"status":200,"data":{...}}. Quando algo está errado, data.success é false e data.message diz o motivo.

Parâmetros de consulta

object_typestringobrigatório
UPO
Tipo do objeto. U clientes (usuários do tipo cliente), P produtos, O pedidos.
last_sync_timestampintegerobrigatório
Unix timestamp em segundos da última leitura. Traz o que mudou a partir dele. Texto que não é número vale 0 e traz tudo.
pageintegerpadrão: 1
Página, a partir de 1.
items_per_pageintegerpadrão: 10
Itens por página, de 1 a 250. Valor fora disso volta a 10.
GET/api/ec_sync_objectsAdmin

Mesma rota, sem o prefixo /v1.0

Idêntica à anterior em parâmetros e resposta. Os ids saem como decimais.

GET/api/v1.0/ecsyncobjectsAdmin

Mesma rota, nome ecsyncobjects

Nome usado pelo app móvel de vendedor da 1.0. Idêntica à primeira em parâmetros e resposta.

GET/api/ecsyncobjectsAdmin

Nome ecsyncobjects, sem o prefixo /v1.0

Idêntica à anterior, com ids decimais.

GET/api/v1.0/sync_objectsAdmin

Mesma rota, nome curto sync_objects

Nome curto usado por scripts de operação. Idêntica à primeira em parâmetros e resposta.

GET/api/sync_objectsAdmin

Nome curto, sem o prefixo /v1.0

Idêntica à anterior, com ids decimais.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1.0/ec_sync_objects?object_type=P&last_sync_timestamp=1791600000&items_per_page=50" \
  -u "$EMAIL:$API_KEY"

Resposta

200Produtos alterados (object_type=P)
json
{
  "status": 200,
  "data": {
    "success": true,
    "message": "",
    "updated_objects": [
      {
        "product_id": "302a9a40-f4ca-4d84-bcf3-b9c0c4b0272f",
        "product": "Caneca Esmaltada 350ml",
        "price": "52.90",
        "product_code": "CAN-350",
        "pos_barcode": "CAN-350",
        "image_path": "https://minhaloja.io.venddor.com.br/uploads/p/caneca.png",
        "amount": "5",
        "options": []
      }
    ],
    "search": { "page": 1, "items_per_page": 50, "total_items": 11 }
  }
}
200Clientes alterados (object_type=U)
json
{
  "status": 200,
  "data": {
    "success": true,
    "message": "",
    "updated_objects": [
      {
        "user_id": "ed7a3fbc-86f7-4b56-84de-67c583efbc3f",
        "email": "carlos.lima@example.com",
        "firstname": "Carlos",
        "lastname": "Lima",
        "phone": "11999990000"
      }
    ],
    "search": { "page": 1, "items_per_page": 50, "total_items": 8 }
  }
}
200Erro dentro do envelope
json
{
  "status": 200,
  "data": {
    "success": false,
    "message": "Required params: object_type, last_sync_timestamp"
  }
}

Campos da resposta

statusinteger
Sempre 200.
data.successboolean
false quando faltam parâmetros, o tipo é desconhecido ou a leitura falhou.
data.messagestring
Vazio no sucesso. No erro: Required params: object_type, last_sync_timestamp ou Unsupported object_type. Use U (users), P (products), or O (orders)., ou o texto do erro.
data.updated_objectsarray
Os objetos. Em U: user_id, email, firstname, lastname, phone. Em P: product_id, product, price (decimal em texto), product_code e pos_barcode (o SKU), image_path (primeira imagem; vazio se não há), amount (estoque como texto) e options (sempre []). Em O: o resumo de pedido da API 1.0, o mesmo de Listar pedidos.
data.searchobject
page, items_per_page e total_items (todos os objetos que atendem ao filtro).

Erros

StatusQuandoCorpo
200object_type ou last_sync_timestamp ausentes{"status":200,"data":{"success":false,"message":"Required params: object_type, last_sync_timestamp"}}
200object_type desconhecido{"status":200,"data":{"success":false,"message":"Unsupported object_type. Use U (users), P (products), or O (orders)."}}
401Sem credencial ou inválida{"message":"Authentication required. Use HTTP Basic with email:api_key or Bearer <jwt>.","status":401}
403Credencial que não é de administrador{"message":"Forbidden: admin scope required","status":403}
Pedidos: é por data de criação, não de alteração

Com object_type=O, o filtro olha a data em que o pedido foi criado. Um pedido antigo que mudou de status ou ganhou nota fiscal depois do seu last_sync_timestamp não volta. Para acompanhar mudanças de status, reconsulte periodicamente os pedidos em aberto pela API de pedidos ou use Webhooks.

Avance o horário com folga

Guarde como próximo last_sync_timestamp o horário em que você começou a leitura, e subtraia uns segundos de folga. Assim um objeto gravado durante o seu ciclo não escapa. Receber o mesmo objeto duas vezes é seguro se o seu ERP tratar a chave como idempotente.

Veja também

  • Visão geral da integração ERP
  • Listar pedidos
  • Webhooks
Anterior
Integração ERP (1.0)
Próxima
Códigos de pagamento
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também