HTrack API
API Endpoint
http://localhost/htrack-apiAPI REST para gerenciamento de operações, equipamentos, colaboradores e rastreamento de atividades empresariais.
Versão: 1.0
Autor: Sandro Jordão
Base URL: http://localhost/htrack-api
Autenticação
Todos os endpoints (exceto Login e Send Password) requerem os seguintes headers:
Authorization: Bearer {token}
Company-ID: {company_id}
User-ID: {user_id}
Content-Type: application/json
Autenticação ¶
Endpoints para gerenciamento de autenticação e sessões de usuários.
Login ¶
Headers
Content-Type: application/jsonBody
{
"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
Authorization: Bearer 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.
Reset de Senha ¶
Headers
Content-Type: application/json
Authorization: Bearer abc123def456ghi789jkl012mno345
User-ID: 1Body
{
"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.
Enviar Nova Senha ¶
Headers
Content-Type: application/jsonBody
{
"email": "usuario@example.com"
}Headers
Content-Type: application/jsonBody
{
"status": 200,
"message": "E-mail de redefinição enviado! Verifique sua caixa de entrada."
}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": 401,
"message": "Não foi possível redefinir sua senha. Verifique se o e-mail está correto."
}Enviar Nova SenhaPOST/send_password
Gera uma nova senha aleatória e envia para o e-mail do usuário.
Colaboradores ¶
Gerenciamento de colaboradores da empresa.
Listar Colaboradores ¶
Headers
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Body
{
"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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Body
{
"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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1
User-ID: 1Body
{
"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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Body
{
"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
Authorization: Bearer abc123def456ghi789jkl012mno345
Company-ID: 1Headers
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.
Enviar E-mail ¶
Headers
Content-Type: application/json
Authorization: Bearer abc123def456ghi789jkl012mno345Body
{
"to": "destinatario@example.com",
"subject": "Relatório Semanal de Operações",
"message": "<h1>Relatório</h1><p>Conteúdo do e-mail em HTML ou texto.</p>"
}Headers
Content-Type: application/jsonBody
{
"status": 202,
"message": "Email sent successfully."
}Headers
Content-Type: application/jsonBody
{
"status": 400,
"message": "Missing required fields."
}Headers
Content-Type: application/jsonBody
{
"status": 500,
"message": "Error sending email."
}Enviar E-mailPOST/email/send
Envia e-mail customizado através do sistema.
Aceitar Termos ¶
Headers
Authorization: Bearer abc123def456ghi789jkl012mno345
User-ID: 1Headers
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
Authorization: Bearer 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": "http://localhost/htrack-api/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 26 Feb 2026