1. Página de resumo
Depois de guardar a configuração do fluxo, abre-se uma página de resumo que apresenta todas as informações necessárias à extração de dados.
Modificar a configuração
Pode modificar as informações previamente introduzidas clicando no separador «Editar a configuração do fluxo».

Pode também aceder a esta página através do separador «Configurações de fluxo», clicando no símbolo do olho na coluna «Ações» da tabela.

2. Elementos de extração
As condições de extração da origem escolhida são apresentadas sob a forma de três elementos obrigatórios a combinar:
Método
GET: protocolo de pedido utilizado para recuperar os dados.
Autorização
Bearer Token: chave de segurança necessária para aceder ao conteúdo.
URL do ponto final
URL em formato JSON ou CSV:
https://gate.teeptrak.net/api/....json
https://gate.teeptrak.net/api/....csv
3. Notas importantes
Paginação e limites de pedidos
Os dados são devolvidos por blocos para garantir um desempenho ótimo.
Limites de pedidos
- Máximo: 1 pedido a cada 2 segundos por token
- Quota horária: 500 pedidos por hora por token
Se este limite for ultrapassado, a API devolve um erro 429 Too Many Requests.
Recomendação: espace os seus pedidos em, pelo menos, 8 segundos para se manter confortavelmente dentro dos dois limites.
Resultados por página
Cada pedido devolve um máximo de 2000 resultados por página (2000 linhas). Para uma exportação de 5000 resultados, é necessário efetuar vários pedidos, sendo os resultados repartidos em blocos de 2000 linhas.
Exceção: a contagem de produtos está limitada a 1000 resultados por página.
4. Exemplo de recuperação de dados
Através da utilização do método GET, da autorização Bearer Token e do URL fornecido, pode exportar os seus dados em formato JSON e/ou CSV.
Procedimento com o Postman
- Insira as informações da API nos campos correspondentes do Postman
- Os dados exportados em formato JSON são apresentados na secção inferior

5. Parâmetros opcionais e paginação
É possível aplicar filtros às exportações para afinar e otimizar as suas necessidades de extração.
Utilização no Postman
- Clique em «Params»
- Insira as chaves e os valores correspondentes
- Clique em «Send» para validar o filtro
Lista dos parâmetros disponíveis
| N.º | Parâmetro | Descrição |
|---|---|---|
| 1 | page |
Definir o número de página devolvido pela API |
| 2 | created_at_gte |
Definir o limiar «maior ou igual a» (criado em…) |
| 3 | created_at_lte |
Definir o limiar «menor ou igual a» (criado em…) |
| 4 | updated_at_lte |
Definir o limiar «menor ou igual a» (atualizado em…) |
| 5 | with_custom_fields |
Autorizar a apresentação dos campos personalizados |
| 6 | machine_ids |
Filtrar o pedido por uma ou várias máquinas |
6. Dados brutos - Alternativa V2 com paginação por cursor
Apresentação
Para a API de dados brutos, está disponível uma alternativa opcional: a API Performance Logs V2. Esta API oferece uma paginação por cursor mais robusta do que a paginação clássica por número de página, garantindo que cada registo é devolvido exatamente uma vez, mesmo que os dados mudem entre os seus pedidos.
Endpoints V2:
GET /api/v1/external/performance_logs.json
GET /api/v1/external/performance_logs.csv
GET /api/v1/external/performance_logs/simplified_losses.json
GET /api/v1/external/performance_logs/simplified_losses.csv
Endpoints V1 clássicos (continuam disponíveis):
GET /api/v1/external/raw_data
GET /api/v1/external/simplified_losses
Pode continuar a utilizar a paginação clássica por page ou adotar a paginação por cursor, consoante as suas necessidades.
Quando utilizar a V2 (cursor)?
- Tem uma sincronização regular de dados (diária, horária, etc.)
- Pretende garantir zero perdas ou duplicações de dados
- Gere grandes volumes e pretende uma exportação CSV num único pedido
Quando permanecer na V1 (página)?
- Efetua exportações pontuais simples
- Prefere a paginação clássica por número de página
- A sua integração existente funciona bem com a V1
Paginação por cursor: modo de utilização
Parâmetros específicos da V2
| Parâmetro | Descrição |
|---|---|
since |
Data ISO 8601 para o primeiro pedido (ex.: 2025-01-01T00:00:00Z). |
cursor |
Chave de paginação para os pedidos seguintes. Ver abaixo. |
limit |
Número de resultados por página (predefinição: 2000, máx.: 2000) |
Conceito
O cursor é uma chave de paginação que garante que cada registo é devolvido exatamente uma vez, mesmo que os dados mudem entre os seus pedidos. Isto oferece uma melhor integridade dos dados em comparação com a paginação simples por número de página.
Primeiro pedido (sincronização inicial)
Lance o seu primeiro pedido sem cursor, utilizando o parâmetro since ou sem qualquer parâmetro:
GET /api/v1/external/performance_logs?since=2025-01-01T00:00:00Z
A resposta JSON inclui um objeto meta que contém um next_cursor:
{
"data": [ ... ],
"meta": {
"next_cursor": "eyJ1cGRhdGVkX2F0IjoiMjAyNS0wNi0wMVQxMDoxNTowMC4wMDAwMDBaIiwiaWQiOjJ9"
},
"links": {
"next": "https://gate.teeptrak.net/api/v1/external/performance_logs?cursor=eyJ1cGRhdGVkX2F0Ij..."
}
}
Pedidos seguintes (sincronização incremental)
Guarde o último next_cursor recebido. Para o pedido seguinte, utilize este cursor como parâmetro:
GET /api/v1/external/performance_logs?cursor=eyJ1cGRhdGVkX2F0IjoiMjAyNS0wNi0wMVQxMDoxNTowMC4wMDAwMDBaIiwiaWQiOjJ9
A resposta devolve um novo next_cursor para o pedido seguinte. Repita este ciclo até que next_cursor seja null, o que indica que obteve todos os dados disponíveis.
Fim da paginação
Quando meta.next_cursor é null ou o número de resultados é inferior ao limite, recuperou todos os registos disponíveis.
Para prosseguir o pedido mais tarde e obter os novos dados, recomenda-se conservar o último cursor que não seja null.
Caso de erro: cursor perdido
Se perder o seu último cursor guardado, relance um pedido com o parâmetro since e uma data aproximada da sua última sincronização bem-sucedida. Recuperará então os dados a partir dessa data.
Exemplo completo de uma sincronização em três pedidos
- Sincronização inicial
Pedido 1: GET /api/v1/external/performance_logs?since=2025-01-01T00:00:00Z
Resposta: 2000 registos + next_cursor = "cursor_ABC"
Guarde "cursor_ABC"
- Sincronização incremental
Pedido 2: GET /api/v1/external/performance_logs?cursor=cursor_ABC
Resposta: 2000 registos + next_cursor = "cursor_XYZ"
Guarde "cursor_XYZ"
- Última sincronização incremental
Pedido 3: GET /api/v1/external/performance_logs?cursor=cursor_XYZ
Resposta: 1500 registos + next_cursor = "cursor_qsd"
Guarde "cursor_qsd"
Sincronização terminada
7. Gestão do cursor com o Postman (variáveis de ambiente)
Para automatizar a gestão do cursor no Postman, utilize as variáveis de ambiente.
Configuração inicial
- Abra o Postman e aceda a «Manage Environments» (ícone de engrenagem)
- Crie ou modifique o seu ambiente Gate
- Adicione duas variáveis:
- Chave:
cursor| Valor: (deixar vazio) - Chave:
token| Valor: o seu Bearer Token
- Chave:
Primeiro pedido
No separador Params, adicione:
| Chave | Valor |
|---|---|
since |
2025-01-01T00:00:00Z |
No separador Authorization, selecione Bearer Token e introduza o seu token.
Clique em Send.
Atualização do cursor após cada resposta
- Aceda ao separador Tests
- Adicione este script para guardar automaticamente o
next_cursor:
if (pm.response.code === 200) {
const responseData = pm.response.json();
if (responseData.meta && responseData.meta.next_cursor) {
pm.environment.set("cursor", responseData.meta.next_cursor);
console.log("Cursor guardado:", responseData.meta.next_cursor);
} else {
console.log("Fim da paginação: next_cursor é null");
}
}
Pedidos seguintes
- No separador Params, elimine o parâmetro
since - Adicione o parâmetro
cursorcom o valor{{cursor}} - Clique em Send
O Postman substituirá automaticamente {{cursor}} pelo último valor guardado. Após cada resposta, o script atualiza a variável com o novo cursor.
Repetir até ao fim
Continue a enviar o pedido. O cursor é atualizado automaticamente após cada chamada. Quando next_cursor é null, a sincronização está terminada.
8. Estrutura da resposta V2
Resposta JSON
{
"data": [
{
"id": 1,
"duration": 300,
"machine_id": 10,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T11:00:00Z",
"custom_fields": {
"Team": "Morning",
"Line": "L3"
}
}
],
"meta": {
"next_cursor": "eyJ1cGRhdGVkX2F0IjoiMjAyNS0wNi0wMVQxMDoxNTowMC4wMDAwMDBaIiwiaWQiOjJ9"
},
"links": {
"next": "https://gate.teeptrak.net/api/v1/external/performance_logs?cursor=eyJ..."
}
}
Elementos-chave
| Elemento | Descrição |
|---|---|
data |
Tabela que contém os registos de desempenho |
meta.next_cursor |
Cursor para o pedido seguinte. null se for o fim da paginação |
links.next |
URL pré-construído para o pedido seguinte (opcional) |
data.custom_fields |
Objeto que contém os campos personalizados (se ativados) |
Formato das datas
Todas as datas são devolvidas em formato ISO 8601 em UTC (ex.: 2025-01-15T10:30:00Z).
10. Exemplos de integrações com a V2
Exportação CSV completa
Para exportar todos os dados em CSV de uma só vez:
GET /api/v1/external/performance_logs.csv?since=2025-01-01T00:00:00Z
Este pedido único devolve todos os resultados num único ficheiro CSV, sem necessidade de paginação. Ideal para as exportações pontuais.
Filtragem por máquinas
Para extrair os dados de máquinas específicas:
GET /api/v1/external/performance_logs?cursor=...&machine_ids=10,20,30
Campos personalizados
Para incluir os campos personalizados na resposta:
GET /api/v1/external/performance_logs?cursor=...&with_custom_fields=true
Aparecerão no objeto with_custom_fields de cada registo.