API

Integra a tua stack com a API pública da Revolio

Autenticação, scopes, exemplos de request/response e fluxos suportados para integrares reparações, catálogo técnico, pagamentos, clientes, peças e WooCommerce.

Autenticação por API keyScopes por endpointContrato público v1OpenAPI + Postman

Atualizado em abril de 2026

Overview

O que esta API cobre

Começa aqui se precisas de perceber rapidamente o âmbito técnico da API antes de ligares um cliente, middleware, ponte WooCommerce ou pipeline de dados.

Domínios

6

Endpoints

35

Com escrita

12

Scopes

14

Boa para

  • Sincronizar reparações, clientes, estados e pagamentos com ERP, CRM ou backoffice próprio.
  • Ligar checkout, intake ou WooCommerce ao ciclo real de reparações da plataforma.
  • Alimentar BI, ETL, data warehouse ou automações internas com dados operacionais autenticados.
  • Consultar catálogo técnico, peças, fornecedores e shipping a partir do teu fluxo de integração.

Não é para

  • Consumir dados públicos anonimamente: tudo depende de chave e contexto autenticado.
  • Servir como marketplace genérico de apps OAuth ou plataforma pública de extensões.
  • Substituir um SDK de UI embebida dentro do dashboard.
  • Eliminar o dashboard da equação: chaves, scopes e ativação continuam a ser geridos lá.

Quickstart

Arranque rápido

Se queres validar credenciais e contrato em menos de 10 minutos, este é o fluxo mínimo para autenticar, confirmar scopes e fazer a primeira chamada útil.

Passo 1

Criar a chave API

Entra no dashboard do lojista, abre Configurações e gera uma chave para a tua integração.

Passo 2

Autenticar cada pedido

Envia a chave em X-API-Key ou Authorization: Bearer. Cada chave fica associada a uma loja e aos respetivos scopes.

Passo 3

Validar antes de integrar

Começa em /health para confirmar que a chave está válida e que os scopes devolvidos cobrem a operação que vais executar.

Passo 4

Fazer a primeira leitura real

Depois do /health, continua em /me, /repairs ou /catalog/device-models para validares o teu caso de uso antes de entrares em escrita.

Base URL

https://api.revolio.io/api/public/v1

Compatibilidade total mantida em https://www.revolio.io/api/public/v1

Headers aceites

X-API-Key: rvl_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxx
Authorization: Bearer rvl_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxx

Exemplo de validação

curl -X GET https://api.revolio.io/api/public/v1/health   -H "X-API-Key: rvl_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxx"

O que tens de confirmar na resposta

  • Recebes `status: ok` e a versão da API.
  • O bloco `context` devolve `repairShopId`, `keyId`, `keyName` e `scopes`.
  • Se o contexto estiver correto, avança para uma leitura simples como `/me` ou `/repairs?limit=5`.
  • Se falhar aqui, corrige chave e scopes antes de testares qualquer fluxo de escrita.

Leituras seguintes recomendadas

/api/public/v1/me/api/public/v1/repairs?limit=5/api/public/v1/catalog/device-models?limit=5

Acesso e suporte técnico

Convenções

Convenções globais

Antes de ligares qualquer cliente ou middleware, assume estas regras de autenticação, contexto e operação.

Autenticação

Usa `X-API-Key` ou `Authorization: Bearer`. O contrato público atual está centrado em chave por loja.

Contexto por loja

Cada chave fica presa a uma loja e os dados devolvidos respeitam sempre esse perímetro.

Scopes por operação

Leitura e escrita estão separadas. Ajusta scopes no dashboard e evita dar privilégios a mais.

Paginação

Nas listagens que a suportam, trabalha com `limit` e `offset` e pagina sempre do lado do cliente.

JSON e timestamps

Os exemplos usam payloads JSON e timestamps ISO 8601. Quando um endpoint não recebe body, isso fica explícito na referência.

Versionamento e limites

Trabalha sobre /api/public/v1 e conta hoje com 100 pedidos por minuto por chave.

Casos de uso

Fluxos de integração prontos para arrancar

Se precisas de decidir por onde começar, estes quatro caminhos cobrem os cenários mais óbvios para uma integração externa.

Sincronizar o ciclo de reparações

Consulta backlog, lê detalhe, acompanha timeline e muda estados a partir do teu sistema interno.

  • Lista em /repairs para obter backlog e tracking codes.
  • Lê detalhe, mensagens, pagamentos e eventos por reparação.
  • Usa /repairs/{id}/status só quando já tiveres os scopes de escrita certos.
/api/public/v1/repairs/api/public/v1/repairs/{id}/api/public/v1/repairs/{id}/status

Criar reparações a partir do checkout

Orçamenta antes, cria a reparação validada e guarda o contexto técnico no teu fluxo ecommerce.

  • Calcula preços em /repairs/quote.
  • Cria a reparação em /repairs com cliente, serviços e método de entrega.
  • Segue estado, mensagens e pagamentos no mesmo tracking.
/api/public/v1/repairs/quote/api/public/v1/repairs/api/public/v1/repairs/{id}/payments

Ler clientes e indicadores

Cruza CRM, operação e analítica sem sair da API pública autenticada.

  • Lista clientes com pesquisa e atividade recente.
  • Consulta stats e analítica agregada para dashboards externos.
  • Usa estes dados para BI, follow-up ou reporting interno.
/api/public/v1/customers/api/public/v1/stats/api/public/v1/analytics/repairs

Procurar peças e fechar pedidos

Pesquisa o catálogo, compara ofertas, calcula shipping e só depois cria o pedido.

  • Pesquisa em /spare-parts com filtros por marca, componente e pesquisa livre.
  • Valida shipping em /spare-parts/shipping.
  • Cria o pedido em /spare-parts/order com `parts.read + orders.write`.
/api/public/v1/spare-parts/api/public/v1/spare-parts/shipping/api/public/v1/spare-parts/order

Mapa

Mapa atual da API

Aqui tens o mapa do contrato público atual sem repetir a referência inteira. Cada bloco aponta para um domínio, a respetiva superfície de endpoints e a presença ou não de escrita.

Acesso e contexto

Valida a chave, inspeciona o contexto autenticado e confirma que a tua loja responde com o scope esperado antes de passares para operações mais sensíveis.

2 endpointsLeitura1 scopes
/api/public/v1/health/api/public/v1/me

Catálogo técnico

Consulta o catálogo que suporta os fluxos públicos e operacionais: marcas, categorias, modelos, tipos de avaria, estados e componentes.

6 endpointsLeitura2 scopes
/api/public/v1/catalog/brands/api/public/v1/catalog/categories/api/public/v1/catalog/component-types/api/public/v1/catalog/device-models

Reparações e operação

Toda a camada operacional de reparações: listagem, criação, detalhe, timeline, items, serviços, mensagens, pagamentos e alteração de estado.

12 endpointsLeitura + escrita7 scopes
/api/public/v1/repairs/api/public/v1/repairs/api/public/v1/repairs/quote/api/public/v1/repairs/{id}

Clientes e analítica

Consulta o relacionamento da loja com os clientes e os indicadores operacionais agregados sem sair do canal da API pública.

4 endpointsLeitura2 scopes
/api/public/v1/customers/api/public/v1/customers/{id}/api/public/v1/stats/api/public/v1/analytics/repairs

Peças, ofertas e fornecedores

Tens duas camadas de peças na API: a lista legacy `/parts` e o catálogo expandido `/spare-parts` com shipping, ordering e comparação de ofertas.

5 endpointsLeitura + escrita3 scopes
/api/public/v1/parts/api/public/v1/spare-parts/api/public/v1/spare-parts/order/api/public/v1/spare-parts/shipping

WooCommerce e sync

Endpoints para ligar uma instalação WooCommerce, sincronizar clientes, encomendas e produtos e promover scopes sem reinstalar a chave.

6 endpointsLeitura + escrita4 scopes
/api/public/v1/woocommerce/capabilities/api/public/v1/woocommerce/connect/api/public/v1/woocommerce/customers/upsert/api/public/v1/woocommerce/orders/upsert

Troubleshooting

Erros típicos de integração

Se a tua primeira tentativa falhou, normalmente o problema não está no endpoint: está na chave, nos scopes, no plano ou no payload.

400

Payload ou query inválida

Valida campos obrigatórios, tipos, enums e limites do endpoint antes de repetires o pedido.

401

Chave em falta ou inválida

Confirma header, formato da chave e se não estás a usar uma chave errada para outra loja.

402

Plano ou subscrição necessária

Alguns fluxos dependem de subscrição ativa ou de capacidades adicionais no contexto da loja.

403

Scope insuficiente

Volta ao dashboard, ajusta scopes e testa primeiro em /health antes de tentares o write de novo.

429

Rate limit excedido

Implementa retry com backoff e evita burst desnecessário na mesma chave.

500

Erro interno

Guarda endpoint, payload, hora e resposta recebida para acelerar a análise com a equipa.

Antes de falares com a equipa

  • Valida primeiro o /health com a mesma chave.
  • Confirma scopes, plano e se o endpoint é mesmo público.
  • Guarda path, método, payload e corpo da resposta antes de abrires ticket.
  • Se o fluxo for WooCommerce, confirma também capabilities e ligação atual.

Se precisares mesmo de escalar, envia endpoint, método, payload, hora do pedido e o corpo da resposta. Isso corta bastante o tempo de análise.

Referência

Referência detalhada por endpoint

Cada bloco abaixo usa exemplos de request e response alinhados com os route handlers atuais. Quando um endpoint não aceita body, isso aparece explicitamente.

Base canónica

https://api.revolio.io/api/public/v1

Compatibilidade legacy

https://www.revolio.io/api/public/v1

Host atual do Try it out

https://api.revolio.io/api/public/v1

Estás no host canónico da API, por isso o Try it out corre diretamente sobre a base pública dedicada.

Abrir no domínio API
Referência verificada diretamente a partir dos route handlers atuais e usada também nos downloads públicos. 35 endpoints visíveis com os filtros atuais.

Acesso e contexto

Valida a chave, inspeciona o contexto autenticado e confirma que a tua loja responde com o scope esperado antes de passares para operações mais sensíveis.

GET/api/public/v1/health

Validar a chave API e devolver o contexto autenticado da loja.

Auth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 429Erro possível: 500

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "status": "ok",
  "version": "v1",
  "time": "2026-04-05T12:00:00.000Z",
  "context": {
    "repairShopId": "shop_123",
    "keyId": "key_123",
    "keyName": "WooCommerce sync",
    "scopes": [
      "repairs.read",
      "repairs.write",
      "products.write"
    ]
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/health

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/me

Obter um resumo do perfil autenticado da loja.

Scope necessario: parts.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "ok": true,
  "data": {
    "countryCode": "PT",
    "country": "Portugal",
    "companyName": "Loja Exemplo",
    "city": "Lisboa",
    "postalCode": "1000-001",
    "street": "Rua da Revolio 10"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/me

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.

Catálogo técnico

Consulta o catálogo que suporta os fluxos públicos e operacionais: marcas, categorias, modelos, tipos de avaria, estados e componentes.

GET/api/public/v1/catalog/brands

Listar marcas ativas do catálogo.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=100 max 200offset=0search=name

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "brand_apple",
      "name": "Apple",
      "logo": "https://cdn.revolio.io/brands/apple.svg"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/catalog/brands?limit=100&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/catalog/categories

Listar categorias ativas do catálogo.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=100 max 200offset=0search=name

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "cat_phone",
      "name": "Smartphones",
      "description": "Telemoveis e smartphones",
      "image": null
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/catalog/categories?limit=100&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/catalog/component-types

Listar tipos de componente usados nos filtros de peças.

Scope necessario: parts.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=100 max 200offset=0search=name

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "component_screen",
      "name": "Ecra",
      "icon": "monitor",
      "color": "#0F766E"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/catalog/component-types?limit=100&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/catalog/device-models

Listar modelos de equipamento por marca, categoria ou pesquisa.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=100 max 200offset=0id=deviceModelIdsearch=namebrandId=brand_applecategoryId=cat_phone

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "dm_iphone_14_pro",
      "name": "iPhone 14 Pro",
      "releaseYear": 2022,
      "image": "https://cdn.revolio.io/device-models/iphone-14-pro.png",
      "brand": {
        "id": "brand_apple",
        "name": "Apple"
      },
      "category": {
        "id": "cat_phone",
        "name": "Smartphones"
      }
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/catalog/device-models?limit=100&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/catalog/problem-types

Obter tipos de avaria para alimentar orçamentos e fluxos de criação.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=100 max 200offset=0id=problemTypeIdsearch=name

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "problem_screen",
      "name": "Ecra partido",
      "description": "Substituicao de ecra ou vidro",
      "icon": "smartphone",
      "categoryIds": [
        "cat_phone"
      ],
      "mappingTags": [
        "screen",
        "display"
      ]
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/catalog/problem-types?limit=100&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/catalog/repair-statuses

Listar todos os estados de reparação suportados.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    "PENDING_PAYMENT",
    "PAYMENT_FAILED",
    "PAID",
    "CONFIRMED",
    "IN_REPAIR",
    "COMPLETED",
    "DELIVERED"
  ]
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/catalog/repair-statuses

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.

Reparações e operação

Toda a camada operacional de reparações: listagem, criação, detalhe, timeline, items, serviços, mensagens, pagamentos e alteração de estado.

GET/api/public/v1/repairs

Listar reparacoes da sua loja. Suporta paginacao e filtros.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=20 max 100offset=0status=PENDING_PAYMENTtrackingCode=REP-ABC123

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "repair_123",
      "trackingCode": "REP-ABC123",
      "status": "PENDING_PAYMENT",
      "customerName": "Joao Silva",
      "customerPhone": "+351912345678",
      "deviceDescription": "iPhone 14 Pro",
      "description": "Ecra partido",
      "estimatedPrice": 129.9,
      "finalPrice": 129.9,
      "createdAt": "2026-04-05T12:00:00.000Z",
      "updatedAt": "2026-04-05T12:00:00.000Z",
      "completedDate": null,
      "deliveredAt": null,
      "device": {
        "id": "dm_iphone_14_pro",
        "name": "iPhone 14 Pro",
        "brand": {
          "id": "brand_apple",
          "name": "Apple"
        }
      },
      "problemType": {
        "id": "problem_screen",
        "name": "Ecra partido"
      }
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/repairs?limit=20&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/repairs

Criar uma reparacao (checkout nativo WooCommerce).

Scope necessario: repairs.writeAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

{
  "customer": {
    "name": "Joao Silva",
    "email": "joao@example.com",
    "phone": "+351912345678",
    "city": "Lisboa",
    "postalCode": "1000-001",
    "country": "PT"
  },
  "device": {
    "deviceModelId": "dm_iphone_14_pro",
    "description": "iPhone 14 Pro 128GB"
  },
  "imei": "490154203237518",
  "services": [
    {
      "problemTypeId": "problem_screen",
      "description": "Substituicao de ecra",
      "price": 129.9,
      "estimatedTime": 60
    }
  ],
  "deliveryMethod": "STORE_PICKUP",
  "description": "Cliente deixou o equipamento no balcao",
  "external": {
    "source": "woocommerce",
    "orderId": "WC-1001"
  }
}

Exemplo de response

{
  "data": {
    "repairId": "repair_123",
    "trackingCode": "REP-ABC123",
    "total": 129.9,
    "currency": "EUR",
    "status": "PENDING_PAYMENT"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/repairs

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/repairs/quote

Obter orcamento (precos) para servicos de reparacao.

Scope necessario: pricing.readAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Exemplo de request

{
  "services": [
    {
      "problemTypeId": "problem_screen",
      "deviceModelId": "dm_iphone_14_pro"
    }
  ]
}

Exemplo de response

{
  "data": {
    "currency": "EUR",
    "total": 129.9,
    "lines": [
      {
        "problemTypeId": "problem_screen",
        "repairShopPriceId": "price_123",
        "basePrice": 129.9,
        "hasVariants": false,
        "variants": [],
        "selectedVariantId": null,
        "resolvedPrice": 129.9,
        "estimatedTime": 60,
        "warrantyMonths": 6
      }
    ]
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/repairs/quote

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/repairs/{id}

Obter o detalhe completo de uma reparação.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=repairId

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": {
    "id": "repair_123",
    "trackingCode": "REP-ABC123",
    "status": "PENDING_PAYMENT",
    "priority": "NORMAL",
    "customer": {
      "name": "Joao Silva",
      "phone": "+351912345678",
      "email": "joao@example.com"
    },
    "device": {
      "id": "dm_iphone_14_pro",
      "name": "iPhone 14 Pro",
      "brand": {
        "id": "brand_apple",
        "name": "Apple"
      },
      "description": "iPhone 14 Pro 128GB"
    },
    "problemType": {
      "id": "problem_screen",
      "name": "Ecra partido"
    },
    "description": "Cliente deixou o equipamento no balcao",
    "internalNotes": null,
    "pricing": {
      "estimated": 129.9,
      "final": 129.9,
      "paid": 0
    },
    "parts": [
      {
        "id": "repair_part_1",
        "name": "Ecra OLED",
        "quantity": 1,
        "unitPrice": 79.9,
        "totalPrice": 79.9
      }
    ],
    "dates": {
      "created": "2026-04-05T12:00:00.000Z",
      "updated": "2026-04-05T12:00:00.000Z",
      "estimatedCompletion": null,
      "completed": null,
      "delivered": null
    },
    "statusHistory": [
      {
        "id": "hist_1",
        "status": "PENDING_PAYMENT",
        "notes": "Created via Public API",
        "timestamp": "2026-04-05T12:00:00.000Z"
      }
    ]
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/repairs/{id}/status

Atualizar o estado da reparação e registar notas operacionais.

Scope necessario: repairs.writeAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=repairId

Exemplo de request

{
  "status": "IN_REPAIR",
  "notes": "Equipamento em bancada"
}

Exemplo de response

{
  "data": {
    "id": "repair_123",
    "status": "IN_REPAIR"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}/status

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/repairs/{id}/items

Listar items associados a uma reparação.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=repairId

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "repair_item_1",
      "name": "Ecra OLED",
      "description": "Ecra premium",
      "quantity": 1,
      "price": 79.9,
      "createdAt": "2026-04-05T12:05:00.000Z",
      "updatedAt": "2026-04-05T12:05:00.000Z",
      "part": {
        "id": "part_1",
        "sku": "SCR-IPH14PRO",
        "name": "Ecra OLED"
      }
    }
  ]
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}/items

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/repairs/{id}/services

Listar serviços associados a uma reparação.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=repairId

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "service_1",
      "description": "Substituicao de ecra",
      "price": 129.9,
      "estimatedTime": 60,
      "sortOrder": 0,
      "createdAt": "2026-04-05T12:00:00.000Z",
      "updatedAt": "2026-04-05T12:00:00.000Z",
      "problemType": {
        "id": "problem_screen",
        "name": "Ecra partido"
      },
      "selectedVariant": null,
      "selectedSparePart": null,
      "supplier": null
    }
  ]
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}/services

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/repairs/{id}/messages

Listar mensagens do thread da reparação.

Scope necessario: messages.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=repairId

Parametros de Query:

limit=50 max 100offset=0

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "msg_1",
      "message": "A reparacao ja entrou em bancada.",
      "createdAt": "2026-04-05T13:00:00.000Z",
      "updatedAt": "2026-04-05T13:00:00.000Z",
      "sender": {
        "id": "shop_123",
        "name": "Loja Exemplo",
        "email": "loja@example.com",
        "role": "REPAIR_SHOP"
      }
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 50,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}/messages

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/repairs/{id}/messages

Enviar uma mensagem no thread da reparacao.

Scope necessario: messages.writeAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=repairId

Exemplo de request

{
  "message": "A reparacao ja entrou em bancada."
}

Exemplo de response

{
  "data": {
    "id": "msg_1",
    "message": "A reparacao ja entrou em bancada.",
    "createdAt": "2026-04-05T13:00:00.000Z",
    "updatedAt": "2026-04-05T13:00:00.000Z"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}/messages

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/repairs/{id}/payments

Listar pagamentos de uma reparação.

Scope necessario: payments.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=repairId

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "payment_1",
      "amount": 129.9,
      "currency": "eur",
      "status": "COMPLETED",
      "method": "woocommerce",
      "paymentMethodType": "card",
      "paymentMethodDetails": {
        "orderId": "WC-1001"
      },
      "platformFee": null,
      "shopAmount": null,
      "failureReason": null,
      "createdAt": "2026-04-05T14:00:00.000Z",
      "updatedAt": "2026-04-05T14:00:00.000Z",
      "releasedAt": null
    }
  ]
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}/payments

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/repairs/{id}/payments

Registar um pagamento numa reparacao.

Scope necessario: payments.writeAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=repairId

Exemplo de request

{
  "amount": 129.9,
  "currency": "EUR",
  "status": "COMPLETED",
  "method": "woocommerce",
  "paymentMethodType": "card",
  "details": {
    "orderId": "WC-1001"
  }
}

Exemplo de response

{
  "data": {
    "id": "payment_1",
    "amount": 129.9,
    "currency": "eur",
    "status": "COMPLETED",
    "method": "woocommerce",
    "createdAt": "2026-04-05T14:00:00.000Z",
    "repair": {
      "id": "repair_123",
      "status": "PAID"
    }
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}/payments

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/repairs/{id}/events

Obter a timeline de eventos de uma reparação.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Path params

id=repairId

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "hist_1",
      "type": "status_changed",
      "status": "IN_REPAIR",
      "notes": "Equipamento em bancada",
      "updatedBy": "shop_123",
      "updatedByType": "REPAIR_SHOP",
      "employee": null,
      "createdAt": "2026-04-05T14:10:00.000Z"
    }
  ]
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/repairs/{id}/events

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.

Clientes e analítica

Consulta o relacionamento da loja com os clientes e os indicadores operacionais agregados sem sair do canal da API pública.

GET/api/public/v1/customers

Listar clientes da loja com pesquisa, contagem de reparações e última atividade.

Scope necessario: customers.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=20 max 100offset=0search=name|email|phone

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "customer_1",
      "name": "Joao Silva",
      "email": "joao@example.com",
      "phone": "+351912345678",
      "nif": "123456789",
      "address": "Rua da Revolio 10",
      "city": "Lisboa",
      "postalCode": "1000-001",
      "country": "PT",
      "repairsCount": 3,
      "lastRepairAt": "2026-04-05T12:00:00.000Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/customers?limit=20&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/customers/{id}

Obter o detalhe de um cliente e as suas reparações recentes.

Scope necessario: customers.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Path params

id=customerId

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": {
    "id": "customer_1",
    "name": "Joao Silva",
    "email": "joao@example.com",
    "phone": "+351912345678",
    "nif": "123456789",
    "address": "Rua da Revolio 10",
    "city": "Lisboa",
    "postalCode": "1000-001",
    "country": "PT",
    "repairsCount": 3,
    "recentRepairs": [
      {
        "id": "repair_123",
        "trackingCode": "REP-ABC123",
        "status": "PENDING_PAYMENT",
        "deviceDescription": "iPhone 14 Pro",
        "estimatedPrice": 129.9,
        "finalPrice": 129.9,
        "createdAt": "2026-04-05T12:00:00.000Z"
      }
    ],
    "createdAt": "2025-10-12T09:00:00.000Z",
    "updatedAt": "2026-04-05T12:00:00.000Z"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

/api/public/v1/customers/{id}

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/stats

Obter resumo de reparações, clientes e receita agregada da loja.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": {
    "repairs": {
      "total": 340,
      "thisMonth": 25,
      "lastMonth": 21,
      "byStatus": {
        "pending": 9,
        "inProgress": 7,
        "completed": 17
      }
    },
    "customers": {
      "total": 210
    },
    "revenue": {
      "total": 48210.5,
      "thisMonth": 3290.2
    },
    "generatedAt": "2026-04-05T12:00:00.000Z"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/stats

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/analytics/repairs

Obter analítica agregada de reparações por intervalo temporal.

Scope necessario: repairs.readAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

from=ISO dateto=ISO date

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": {
    "range": {
      "from": "2026-03-01T00:00:00.000Z",
      "to": "2026-03-31T23:59:59.999Z"
    },
    "repairs": {
      "created": 25,
      "completed": 18,
      "byStatus": {
        "PAID": 4,
        "IN_REPAIR": 7,
        "COMPLETED": 10
      },
      "avgCompletionDays": 2.4
    },
    "customers": {
      "unique": 21
    },
    "revenue": {
      "total": 3290.2
    },
    "series": {
      "dailyCreatedRepairs": [
        {
          "date": "2026-03-01",
          "count": 2
        },
        {
          "date": "2026-03-02",
          "count": 1
        }
      ]
    }
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/analytics/repairs

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.

Peças, ofertas e fornecedores

Tens duas camadas de peças na API: a lista legacy `/parts` e o catálogo expandido `/spare-parts` com shipping, ordering e comparação de ofertas.

GET/api/public/v1/parts

Listar a camada legacy de peças.

Scope necessario: parts.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=20 max 100offset=0search=name|skubrandId=brand_appledeviceId=device_123

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "part_1",
      "sku": "SCR-IPH14PRO",
      "name": "Ecra OLED",
      "description": "Ecra premium",
      "category": "Displays",
      "price": 79.9,
      "stock": 12,
      "images": [
        "https://cdn.revolio.io/parts/scr-iph14pro.png"
      ],
      "brand": {
        "id": "brand_apple",
        "name": "Apple"
      },
      "device": {
        "id": "device_123",
        "name": "iPhone 14 Pro"
      },
      "createdAt": "2026-04-05T12:00:00.000Z",
      "updatedAt": "2026-04-05T12:00:00.000Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/parts?limit=20&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/spare-parts

Listar peças com filtros por marca, equipamento, categoria, componente e pesquisa livre.

Scope necessario: parts.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=20 max 100offset=0search=name|sku|descriptionbrandId=brand_appledeviceId=device_123categoryId=cat_phonecomponentTypeId=component_screensortBy=price_asc

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "spare_part_1",
      "sku": "SCR-IPH14PRO",
      "ean": "1234567890123",
      "name": "Ecra OLED",
      "description": "Ecra premium",
      "price": 74.9,
      "originalPrice": 79.9,
      "stock": 12,
      "images": [
        "https://cdn.revolio.io/parts/scr-iph14pro.png"
      ],
      "availability": true,
      "deliveryTime": 1,
      "category": {
        "id": "cat_phone",
        "name": "Smartphones"
      },
      "brand": {
        "id": "brand_apple",
        "name": "Apple",
        "logo": "https://cdn.revolio.io/brands/apple.svg"
      },
      "device": {
        "id": "dm_iphone_14_pro",
        "name": "iPhone 14 Pro",
        "image": "https://cdn.revolio.io/device-models/iphone-14-pro.png"
      },
      "componentType": {
        "id": "component_screen",
        "name": "Ecra"
      },
      "compatibility": [
        "iPhone 14 Pro"
      ],
      "createdAt": "2026-04-05T12:00:00.000Z",
      "offers": [
        {
          "source": "SPARE_PART",
          "partId": "spare_part_1",
          "supplierName": "Revolio",
          "isOfficialSupplier": true,
          "price": 79.9,
          "stock": 12,
          "availability": true,
          "deliveryTime": 1
        },
        {
          "source": "SUPPLIER_PRODUCT",
          "supplierProductId": "sup_prod_1",
          "supplierId": "supplier_1",
          "supplierName": "Distribuidor X",
          "supplierLogo": null,
          "isOfficialSupplier": false,
          "price": 74.9,
          "stock": 5,
          "availability": true,
          "deliveryTime": 2
        }
      ]
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/spare-parts?limit=20&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/spare-parts/order

Criar um pedido de peças com validação de stock, tax e total final.

Scope necessario: parts.read + orders.writeAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

{
  "items": [
    {
      "partId": "spare_part_1",
      "quantity": 1
    }
  ],
  "notes": "Pedido para bancada 3"
}

Exemplo de response

{
  "data": {
    "id": "sp_order_1",
    "orderNumber": "SP1712323123ABCD",
    "status": "PENDING",
    "items": [
      {
        "id": "item_1",
        "name": "Ecra OLED",
        "sku": "SCR-IPH14PRO",
        "quantity": 1,
        "price": 79.9,
        "totalPrice": 79.9
      }
    ],
    "shippingCost": 5.5,
    "tax": 19.66,
    "total": 105.06,
    "currency": "EUR",
    "createdAt": "2026-04-05T15:00:00.000Z"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/spare-parts/order

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/spare-parts/shipping

Calcular custo de envio de peças antes de fechar a encomenda.

Scope necessario: parts.readAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

{
  "items": [
    {
      "partId": "spare_part_1",
      "quantity": 1
    }
  ]
}

Exemplo de response

{
  "ok": true,
  "data": {
    "shippingCost": 5.5,
    "breakdown": [
      {
        "supplierId": "REVOLIO",
        "cost": 5.5
      }
    ]
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/spare-parts/shipping

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
GET/api/public/v1/suppliers

Listar fornecedores aprovados e filtrar por pesquisa.

Scope necessario: suppliers.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Parametros de Query:

limit=20 max 100offset=0search=name

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "data": [
    {
      "id": "supplier_1",
      "name": "Distribuidor X",
      "email": "comercial@distribuidorx.pt",
      "phone": "+351210000000",
      "website": "https://distribuidorx.pt",
      "taxId": "PT123456789",
      "address": "Av. Central 20",
      "city": "Porto",
      "postalCode": "4000-100",
      "country": "PT",
      "contactPerson": "Ana Costa",
      "paymentTerms": "30 dias",
      "rating": 4.8,
      "isReparia": false,
      "isActive": true,
      "createdAt": "2025-11-10T10:00:00.000Z",
      "updatedAt": "2026-04-05T11:00:00.000Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/suppliers?limit=20&offset=0

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.

WooCommerce e sync

Endpoints para ligar uma instalação WooCommerce, sincronizar clientes, encomendas e produtos e promover scopes sem reinstalar a chave.

GET/api/public/v1/woocommerce/capabilities

Consultar o que a instalação WooCommerce pode sincronizar com a tua chave atual.

Scope necessario: products.readAuth por API key
Sucesso esperado: 200Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

Este endpoint não recebe body JSON.

Exemplo de response

{
  "ok": true,
  "data": {
    "repairShopId": "shop_123",
    "siteUrl": "https://lojaexemplo.pt",
    "integration": {
      "appId": "woocommerce",
      "installationId": "install_1",
      "status": "ACTIVE"
    },
    "apps": {
      "inventoryManager": true
    }
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/woocommerce/capabilities

Body JSON editável

Este endpoint não recebe body JSON.

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/woocommerce/connect

Ligar uma instalação WooCommerce, gerar credenciais e preparar webhooks de sincronização.

Auth por email e password
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 402Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

{
  "email": "owner@lojaexemplo.pt",
  "password": "password-super-segura",
  "siteUrl": "https://lojaexemplo.pt",
  "installationName": "Woo principal"
}

Exemplo de response

{
  "ok": true,
  "data": {
    "installationId": "install_1",
    "webhookSecret": "whsec_xxxxxxxxxxxxxxxxx",
    "publicApiKey": {
      "token": "rvl_abcd_xxxxxxxxxxxxxxxxxxxxxx",
      "keyName": "WooCommerce",
      "scopes": [
        "repairs.read",
        "repairs.write",
        "customers.read",
        "products.write"
      ]
    }
  }
}

Try it out

Este endpoint usa credenciais no body e não envia API key no header.

URL executada

https://api.revolio.io/api/public/v1/woocommerce/connect

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/woocommerce/customers/upsert

Criar ou atualizar clientes vindos do WooCommerce.

Scope necessario: customers.writeAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

{
  "siteUrl": "https://lojaexemplo.pt",
  "wooCustomerId": 501,
  "email": "cliente@example.com",
  "name": "Joao Silva",
  "phone": "+351912345678",
  "city": "Lisboa",
  "postalCode": "1000-001",
  "country": "PT"
}

Exemplo de response

{
  "ok": true,
  "data": {
    "revolioCustomerId": "customer_1"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/woocommerce/customers/upsert

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/woocommerce/orders/upsert

Criar ou atualizar encomendas vindas do WooCommerce.

Scope necessario: orders.writeAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

{
  "siteUrl": "https://lojaexemplo.pt",
  "wooOrderId": 1001,
  "wooOrderNumber": "1001",
  "status": "processing",
  "customer": {
    "name": "Joao Silva",
    "email": "joao@example.com",
    "phone": "+351912345678",
    "nif": "123456789"
  },
  "currency": "EUR",
  "items": [
    {
      "name": "Ecra OLED",
      "sku": "SCR-IPH14PRO",
      "quantity": 1,
      "unitPrice": 79.9,
      "taxRate": 23
    }
  ]
}

Exemplo de response

{
  "ok": true,
  "data": {
    "posOrderId": "pos_order_1",
    "status": "PAID"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/woocommerce/orders/upsert

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/woocommerce/products/upsert

Criar ou atualizar produtos vindos do WooCommerce.

Scope necessario: products.writeAuth por API key
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 403Erro possível: 429Erro possível: 500

Exemplo de request

{
  "siteUrl": "https://lojaexemplo.pt",
  "wooProductId": 2001,
  "sku": "SCR-IPH14PRO",
  "name": "Ecra OLED",
  "description": "Ecra premium",
  "salePrice": 79.9,
  "stock": 12,
  "images": [
    "https://lojaexemplo.pt/wp-content/uploads/scr-iph14pro.png"
  ]
}

Exemplo de response

{
  "ok": true,
  "data": {
    "inventoryProductId": "inventory_1",
    "marketplaceProductId": "marketplace_1"
  }
}

Try it out

Este pedido usa a configuração de autenticação definida no topo do explorer.

URL executada

https://api.revolio.io/api/public/v1/woocommerce/products/upsert

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.
POST/api/public/v1/woocommerce/upgrade-scopes

Promover uma chave existente com os scopes necessários para WooCommerce.

Auth por email e password
Sucesso esperado: 200Erro possível: 400Erro possível: 401Erro possível: 402Erro possível: 403Erro possível: 404Erro possível: 429Erro possível: 500

Exemplo de request

{
  "email": "owner@lojaexemplo.pt",
  "password": "password-super-segura",
  "apiKey": "rvl_abcd_xxxxxxxxxxxxxxxxxxxxxx"
}

Exemplo de response

{
  "ok": true,
  "upgraded": true,
  "added": [
    "orders.write",
    "products.write"
  ],
  "scopes": [
    "repairs.read",
    "repairs.write",
    "orders.write",
    "products.write"
  ]
}

Try it out

Este endpoint usa credenciais no body e não envia API key no header.

URL executada

https://api.revolio.io/api/public/v1/woocommerce/upgrade-scopes

Body JSON editável

Resposta em direto

Executa o pedido neste card para validares status, tempo e corpo real da resposta.

Ainda não executaste nenhum pedido neste endpoint.

Governança

Acessos, artefactos e suporte

A parte crítica desta API não é decorar paths: é controlar scopes, separar chaves por sistema e saber quando uma integração precisa mesmo de apoio técnico.

Scopes e principio do menor privilegio

Usa o princípio do menor privilégio: ativa apenas os scopes que a tua integração precisa e mantém chaves separadas por sistema ou ambiente.

customers.readcustomers.writemessages.readmessages.writeorders.writeparts.readpayments.readpayments.writepricing.readproducts.readproducts.writerepairs.readrepairs.writesuppliers.read

As chaves criadas por defeito arrancam num perfil mais conservador, centrado em leitura operacional. Se precisares de escrita ou sync mais profunda, ajusta os scopes no dashboard.

Artefactos e pontos de apoio

As chaves são geridas no dashboard do lojista. Se precisares de ajustar scopes, validar a tua integração ou discutir um fluxo específico, usa os acessos abaixo.

Changelog

Alterações recentes do contrato público

Se vais integrar fluxos de escrita, não te fiques pela data do topo da página. Usa esta lista para perceber o que mudou recentemente na superfície pública.

Abril 2026

OpenAPI e Postman gerados a partir da source of truth atual

Os artefactos públicos passaram a ser gerados da mesma base que alimenta a referência desta página.

Abril 2026

Rate limit consolidado por chave

A camada pública trabalha hoje com 100 pedidos por minuto por chave, com proteção de backend mais consistente.

Abril 2026

WooCommerce com elevação de scopes mais restrita

A promoção de scopes WooCommerce já não confia apenas na API key e pede validação adicional no fluxo.

Abril 2026

Pedidos de peças com requisitos de escrita mais claros

A escrita em /spare-parts/order depende agora explicitamente de `parts.read + orders.write`.

Precisas de credenciais ou de ajuda com scopes?

Gera a tua chave, valida `/health` e fala connosco se precisares de mapear scopes, payloads ou um fluxo específico de integração.