Trackone API
API Endpoint
https://api.trackone.app.brAPI REST para gerenciamento de operações, equipamentos, colaboradores e rastreamento de atividades empresariais.
Versão: 1.0
Autor: Sandro Jordão
Base URL: https://api.trackone.app.br
Autenticação
Existem dois mecanismos de autenticação, não intercambiáveis:
-
Access-Token (por usuário): obtido no login, exigido pela maioria dos endpoints.
-
Auth-Key (chave compartilhada da aplicação,
env('APP_KEY')): exigido apenas em/credentials(login) e/send_password— endpoints que ainda não têm um usuário autenticado no momento da chamada.
Access-Token: {token}
Content-Type: application/json
Identidade do usuário e da empresa são resolvidas pelo servidor a partir do Access-Token — não é necessário enviar Company-ID ou User-ID em nenhum endpoint; esses headers não existem na API.
Autenticação ¶
Endpoints para gerenciamento de autenticação e sessões de usuários.
Login ¶
Headers
Content-Type: application/json
Auth-Key: {sua_app_key}Body
{
"login": "usuario@example.com",
"password": "senha123"
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Login realizado com sucesso! Bem-vindo(a).",
"token": "abc123def456ghi789jkl012mno345",
"token_expired": "2026-02-27 12:00:00",
"user": {
"id": 1,
"name": "João Silva",
"email": "joao@example.com",
"signed": true,
"signed_at": "2026-01-15 10:30:00",
"is_admin": true,
"profile": "Administrador",
"score": 98.5
},
"company": {
"id": 1,
"name": "Empresa Exemplo LTDA",
"image": "https://example.com/logo.png",
"phone": "(11) 3000-0000",
"email": "contato@empresa.com",
"address": "Rua Exemplo, 123 - São Paulo/SP",
"cnpj": "00.000.000/0001-00",
"notes": "Observações da empresa"
},
"segment": {
"id": 1,
"name": "Industrial",
"icon": "factory",
"color": "#3498db",
"singular": "Máquina",
"plural": "Máquinas"
},
"branch": {
"id": 1,
"name": "Filial Centro"
},
"icons": {
"operation_index": "cog",
"employee_list": "users",
"equipment_list": "box"
}
}Headers
Content-Type: application/jsonBody
{
"status": 400,
"message": "Por favor, informe seu login e senha para continuar."
}Headers
Content-Type: application/jsonBody
{
"status": 401,
"message": "Senha incorreta. Por favor, tente novamente."
}LoginPOST/credentials
Realiza autenticação do usuário e retorna token de acesso com informações do usuário e empresa.
Logout ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Você saiu com sucesso. Até logo!"
}Headers
Content-Type: application/jsonBody
{
"status": 400,
"message": "Não foi possível finalizar sua sessão. Tente novamente."
}LogoutDELETE/logout
Encerra a sessão do usuário autenticado e invalida o token.
Ativar Biometria ¶
Headers
Content-Type: application/json
Access-Token: abc123def456ghi789jkl012mno345Body
{
"device_id": "3f2b9c1e-7a4d-4e8b-9f10-2c6d8e4a1b7f",
"device_name": "Samsung Galaxy A54 (Android 14)"
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Login por biometria ativado neste aparelho.",
"device_token": "93a04612dcb77bc68c72cf87990eb0a2e42baffa6274a4a7e189cd6c33d2f3d7",
"device_token_expired": "2027-01-13 17:19:23"
}Headers
Content-Type: application/jsonBody
{
"status": 400,
"message": "Não foi possível identificar este aparelho."
}Ativar BiometriaPOST/biometric/enroll
Ativa o login por biometria no aparelho e retorna um device token. O app deve guardá-lo no cofre do aparelho (Keychain/Keystore) protegido pela biometria. Ativar de novo no mesmo device_id substitui o token anterior. O token vale por 90 dias e o prazo é renovado a cada login por biometria. Trocar a senha (/reset_password ou /send_password) desativa a biometria em todos os aparelhos do usuário.
Login por Biometria ¶
Headers
Content-Type: application/json
Auth-Key: {sua_app_key}Body
{
"device_id": "3f2b9c1e-7a4d-4e8b-9f10-2c6d8e4a1b7f",
"device_token": "93a04612dcb77bc68c72cf87990eb0a2e42baffa6274a4a7e189cd6c33d2f3d7"
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Login realizado com sucesso! Bem-vindo(a).",
"token": "abc123def456ghi789jkl012mno345",
"token_expired": "2026-02-27 12:00:00",
"user": {},
"company": {},
"segment": {},
"branch": {},
"profile": {},
"icons": {}
}Headers
Content-Type: application/jsonBody
{
"status": 401,
"message": "A biometria não está mais ativa neste aparelho. Entre com sua senha."
}Desativar Biometria ¶
Headers
Content-Type: application/json
Access-Token: abc123def456ghi789jkl012mno345Body
{
"device_id": "3f2b9c1e-7a4d-4e8b-9f10-2c6d8e4a1b7f"
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Login por biometria desativado neste aparelho."
}Desativar BiometriaDELETE/biometric/revoke
Desativa o login por biometria no aparelho informado. Responde 200 mesmo se a biometria já não estava ativa.
Reset de Senha ¶
Headers
Content-Type: application/json
Access-Token: abc123def456ghi789jkl012mno345Body
{
"current": "senha_atual123",
"password": "nova_senha_segura123"
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Sua senha foi atualizada com sucesso."
}Reset de SenhaPOST/reset_password
Atualiza a senha do usuário autenticado. Exige a senha atual para confirmação.
Enviar Nova Senha ¶
Headers
Content-Type: application/json
Auth-Key: {sua_app_key}Body
{
"email": "usuario@example.com"
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Se esse e-mail estiver cadastrado, enviamos um link para você criar uma nova senha."
}Headers
Content-Type: application/jsonBody
{
"status": 400,
"message": "O e-mail informado não é válido. Verifique e tente novamente."
}Headers
Content-Type: application/jsonBody
{
"status": 429,
"message": "Muitas tentativas. Aguarde alguns minutos e tente novamente."
}Enviar Nova SenhaPOST/send_password
Envia para o e-mail do usuário um link (válido por 30 minutos, uso único) para a tela de nova senha do painel. A senha atual só muda quando o dono do e-mail abre o link e define a nova.
A resposta é a mesma exista ou não uma conta com esse e-mail. Depois de 5 pedidos para o mesmo e-mail, novos pedidos ficam bloqueados por 15 minutos (429).
Colaboradores ¶
Gerenciamento de colaboradores da empresa.
Listar Colaboradores ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"id": 1,
"name": "João Silva",
"email": "joao.silva@example.com",
"phone": "(11) 98765-4321",
"type_name": "Operador",
"notes": "Especialista em manutenção preventiva"
},
{
"id": 2,
"name": "Maria Santos",
"email": "maria.santos@example.com",
"phone": "(11) 98765-1234",
"type_name": "Supervisor",
"notes": "Responsável pelo turno da manhã"
}
]Headers
Content-Type: application/jsonBody
{
"status": 404,
"message": "No employees found."
}Listar ColaboradoresGET/employee/list
Retorna lista de todos os colaboradores ativos da empresa.
Visualizar Colaborador ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"id": 1,
"name": "João Silva",
"email": "joao.silva@example.com",
"phone": "(11) 98765-4321",
"type_name": "Operador",
"notes": "Especialista em manutenção preventiva"
}Headers
Content-Type: application/jsonBody
{
"status": 404,
"message": "Employee not found."
}Visualizar ColaboradorGET/employee/view/{id}
Retorna detalhes de um colaborador específico.
- id
number(required) Example: 1ID do colaborador
Equipamentos ¶
Gerenciamento de equipamentos e máquinas.
Listar Equipamentos ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"id": 1,
"name": "Torno CNC 1200",
"code": "EQP-001",
"status": "Ativo",
"location": "Setor A - Linha 3",
"notes": "Equipamento principal de usinagem"
},
{
"id": 2,
"name": "Fresadora Universal",
"code": "EQP-002",
"status": "Em Manutenção",
"location": "Setor B - Linha 1",
"notes": "Manutenção programada até 28/02"
}
]Headers
Content-Type: application/jsonBody
{
"status": 404,
"message": "No equipment found."
}Listar EquipamentosGET/equipment/list
Retorna lista de todos os equipamentos da empresa.
Monitorar Equipamentos ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"equipment_id": 1,
"equipment_name": "Torno CNC 1200",
"status": "Operando",
"current_operation": "Usinagem Pesada",
"progress": 65,
"operator": "João Silva",
"started_at": "2026-02-26 08:00:00",
"estimated_finish": "2026-02-26 16:00:00",
"alerts": 0
}
]Monitorar EquipamentosGET/equipment/monitor
Retorna status e métricas em tempo real dos equipamentos.
Visualizar Equipamento ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"id": 1,
"name": "Torno CNC 1200",
"code": "EQP-001",
"status": "Ativo",
"location": "Setor A - Linha 3",
"manufacturer": "Romi",
"model": "Galaxy 20",
"serial_number": "12345678",
"acquisition_date": "2025-05-15",
"notes": "Equipamento principal de usinagem"
}Headers
Content-Type: application/jsonBody
{
"status": 404,
"message": "Equipment not found."
}Visualizar EquipamentoGET/equipment/view/{id}
Retorna detalhes completos de um equipamento específico.
- id
number(required) Example: 1ID do equipamento
Operações ¶
Gerenciamento de operações e processos.
Visualizar Operações ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"operations": [
{
"operation_id": 1,
"name": "Manutenção Preventiva",
"color": "#FF5733",
"icon": "wrench",
"min_times": 1,
"max_times": 5,
"events_amount": 3,
"operation_type": "Manutenção",
"notes": "Realizada mensalmente",
"events": [
{
"event_id": 1,
"name": "Verificação Inicial",
"color": "#2ECC71",
"icon": "check-circle",
"min_time": 15,
"max_time": 30,
"is_machine": false,
"is_supplies": true,
"is_employee": true,
"is_instrument": true,
"is_photo": true,
"max_number_photo": 5,
"is_productive": true,
"is_sequential": true,
"order_number": 1,
"notes": "Verificar nível de óleo e pressão"
}
],
"fields": [
{
"field_id": 1,
"title": "Nível de Óleo",
"code": "oil_level",
"type_name": "Seleção",
"placeholder": "Selecione o nível",
"required": true,
"value_options": [
"Baixo",
"Normal",
"Alto"
],
"order_number": 1
}
]
}
]
}Headers
Content-Type: application/jsonBody
{
"status": 404,
"message": "Equipment without configured operation."
}Visualizar OperaçõesGET/operation{?equipment_id}
Retorna todas as operações configuradas para um equipamento, incluindo eventos e campos.
- equipment_id
number(required) Example: 1ID do equipamento
Listar Campos ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"field_id": 1,
"title": "Nível de Óleo",
"code": "oil_level",
"type_name": "Seleção",
"description": "Verificar visualmente o nível",
"placeholder": "Selecione o nível",
"required": true,
"order_number": 1
}
]Listar CamposGET/field{?operation_id}
Retorna campos configurados para uma operação.
- operation_id
number(required) Example: 1ID da operação
Criar Campo ¶
Headers
Content-Type: application/json
Access-Token: abc123def456ghi789jkl012mno345Body
{
"operation_id": 1,
"title": "Temperatura",
"code": "temperature",
"type": "number",
"required": true,
"placeholder": "Informe a temperatura em °C",
"order_number": 2
}Headers
Content-Type: application/jsonBody
{
"status": 201,
"message": "Campo criado com sucesso.",
"field_id": 2
}Criar CampoPOST/field
Cria um novo campo para uma operação.
Atualizar Campo ¶
Headers
Content-Type: application/json
Access-Token: abc123def456ghi789jkl012mno345Body
{
"title": "Nível de Óleo (atualizado)",
"required": false
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Campo atualizado com sucesso."
}Atualizar CampoPUT/field/update/{id}
Atualiza um campo existente.
- id
number(required) Example: 1ID do campo
Deletar Campo ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Campo deletado com sucesso."
}Deletar CampoDELETE/field/delete/{id}
Remove um campo de uma operação.
- id
number(required) Example: 1ID do campo
Listar Eventos ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"event_id": 1,
"name": "Verificação Inicial",
"color": "#2ECC71",
"icon": "check-circle",
"min_time": 15,
"max_time": 30,
"is_productive": true,
"is_sequential": true,
"order_number": 1
}
]Listar EventosGET/event{?operation_id}
Retorna eventos configurados para uma operação.
- operation_id
number(required) Example: 1ID da operação
Registrar Interferência ¶
Headers
Content-Type: application/json
Access-Token: abc123def456ghi789jkl012mno345Body
{
"operation_id": 1,
"equipment_id": 1,
"description": "Falha no sistema hidráulico",
"severity": "Alta",
"stopped_operation": true
}Headers
Content-Type: application/jsonBody
{
"status": 201,
"message": "Interferência registrada com sucesso.",
"interference_id": 45
}Registrar InterferênciaPOST/interference
Registra uma interferência ou problema durante uma operação.
Instrumentos ¶
Gerenciamento de instrumentos e ferramentas.
Listar Instrumentos ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"id": 1,
"name": "Paquímetro Digital",
"code": "INST-001",
"status": "Disponível",
"calibration_date": "2026-01-15",
"next_calibration": "2027-01-15",
"notes": "Calibrado e certificado"
}
]Listar InstrumentosGET/instrument/list
Retorna lista de todos os instrumentos disponíveis.
Visualizar Instrumento ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"id": 1,
"name": "Paquímetro Digital",
"code": "INST-001",
"status": "Disponível",
"calibration_date": "2026-01-15",
"next_calibration": "2027-01-15",
"manufacturer": "Mitutoyo",
"model": "CD-6 CSX",
"notes": "Calibrado e certificado"
}Visualizar InstrumentoGET/instrument/view/{id}
Retorna detalhes de um instrumento específico.
- id
number(required) Example: 1ID do instrumento
Máquinas ¶
Gerenciamento de máquinas auxiliares.
Listar Máquinas ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"id": 1,
"name": "Compressor de Ar",
"code": "MAC-001",
"status": "Operando",
"location": "Sala de Máquinas",
"notes": "Pressão: 8 bar"
}
]Listar MáquinasGET/machine/list
Retorna lista de todas as máquinas disponíveis.
Visualizar Máquina ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"id": 1,
"name": "Compressor de Ar",
"code": "MAC-001",
"status": "Operando",
"location": "Sala de Máquinas",
"notes": "Pressão: 8 bar"
}Visualizar MáquinaGET/machine/view/{id}
Retorna detalhes de uma máquina específica.
- id
number(required) Example: 1ID da máquina
Suprimentos ¶
Gerenciamento de suprimentos e materiais.
Listar Suprimentos ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"id": 1,
"name": "Óleo Lubrificante SAE 40",
"code": "SUP-001",
"quantity": 150,
"unit": "Litros",
"min_stock": 50,
"notes": "Uso geral para máquinas"
}
]Listar SuprimentosGET/supplies/list
Retorna lista de todos os suprimentos disponíveis.
Visualizar Suprimento ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"id": 1,
"name": "Óleo Lubrificante SAE 40",
"code": "SUP-001",
"quantity": 150,
"unit": "Litros",
"min_stock": 50,
"supplier": "Lubrificantes ABC",
"notes": "Uso geral para máquinas"
}Visualizar SuprimentoGET/supplies/view/{id}
Retorna detalhes de um suprimento específico.
- id
number(required) Example: 1ID do suprimento
Alertas ¶
Gerenciamento de alertas e notificações.
Listar Alertas ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
[
{
"id": 1,
"title": "Manutenção Vencida",
"description": "Equipamento EQP-001 com manutenção atrasada",
"severity": "Alta",
"equipment_id": 1,
"equipment_name": "Torno CNC 1200",
"status": "Pendente",
"created_at": "2026-02-25 14:30:00"
}
]Listar AlertasGET/alerts/list
Retorna lista de todos os alertas ativos.
Atualizar Alerta ¶
Headers
Content-Type: application/json
Access-Token: abc123def456ghi789jkl012mno345Body
{
"status": "Resolvido",
"notes": "Manutenção realizada em 26/02/2026"
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Alerta atualizado com sucesso."
}Atualizar AlertaPUT/alerts/update/{id}
Atualiza o status de um alerta.
- id
number(required) Example: 1ID do alerta
Deletar Alerta ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "Alerta deletado com sucesso."
}Deletar AlertaDELETE/alerts/delete/{id}
Remove um alerta do sistema.
- id
number(required) Example: 1ID do alerta
Utilitários ¶
Funcionalidades auxiliares e utilitárias.
Aceitar Termos ¶
Headers
Access-Token: abc123def456ghi789jkl012mno345Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "User successfully updated."
}Headers
Content-Type: application/jsonBody
{
"status": 500,
"message": "Error updating user."
}Aceitar TermosPATCH/signed
Registra o aceite de termos de uso pelo usuário.
Enviar Foto ¶
Headers
Content-Type: multipart/form-data
Access-Token: abc123def456ghi789jkl012mno345Body
------WebKitFormBoundary
Content-Disposition: form-data; name="photo"; filename="imagem.jpg"
Content-Type: image/jpeg
(binary data)
------WebKitFormBoundary--Headers
Content-Type: application/jsonBody
{
"status": 201,
"message": "Foto enviada com sucesso.",
"filename": "20260226_143052_imagem.jpg",
"url": "https://api.trackone.app.br/uploads/20260226_143052_imagem.jpg"
}Headers
Content-Type: application/jsonBody
{
"status": 400,
"message": "Nenhuma foto foi enviada."
}Enviar FotoPOST/photo/send
Faz upload de foto para o servidor.
Generated by aglio on 21 Oct 2026