Ana içeriğe geç

Makine Olayları API

Uç nokta

text GET /api/v1/machine-events

Çözümlenmiş kiracı ve makine için alarms koleksiyonundan imleç tabanlı sayfalanmış makine alarm olaylarını döndüren salt okunur uç nokta.

Sözleşme referansı: api/openapi.yaml

Kimlik doğrulama

AUTH_ENABLED=true iken istekler JWT Bearer erişim token'ı içermelidir:

http Authorization: Bearer <access_token>

AUTH_ENABLED=false iken uç nokta yerel geliştirme için açıktır.

Eksik token 401 AUTHENTICATION_REQUIRED, geçersiz veya süresi dolmuş token 401 INVALID_TOKEN döner.

Accept müzakere

Değer Açıklama
application/json JSON yanıt (Accept gönderilmezse varsayılan)
application/xml XML yanıt
text/xml XML yanıt
*/* JSON yanıt

Desteklenmeyen Accept değerleri 406 Not Acceptable (NOT_ACCEPTABLE) döner.

Kiracı bağlamı

company_id ve organization_id isteğe bağlı sorgu parametreleridir. Token claim'lerinden türetilmez.

Durum Sonuç
Her iki sorgu değeri mevcut İstek çifti kullanılır
Hiç sorgu değeri yok Her iki ortam değeri yapılandırılmışsa DEFAULT_COMPANY_ID ve DEFAULT_ORGANIZATION_ID kullanılır
Tam olarak bir sorgu değeri 400 TENANT_CONTEXT_INCOMPLETE (ortam varsayılanları uygulanmaz)
Ne sorgu ne yapılandırılmış varsayılan 400 TENANT_CONTEXT_REQUIRED
Sağlanan değerde geçersiz ObjectID 400 INVALID_TENANT_CONTEXT

Tüm okumalar çözümlenmiş kiracıya kapsamlanır. Servis kiracı filtresi olmadan çalışmaz.

Başlangıçtaki yapılandırma doğrulaması:

  • Her iki DEFAULT_* boş → izin verilir
  • Her ikisi geçerli ObjectID → izin verilir
  • Yalnızca biri set → başlangıç doğrulama hatası

Bkz. Yapılandırma.

Sorgu parametreleri

Parametre Zorunlu Açıklama
machine_code Evet Çözümlenmiş kiracı içinde makine kodu
company_id Hayır Kiracı şirket ObjectID (çift kuralı geçerli)
organization_id Hayır Kiracı organizasyon ObjectID (çift kuralı geçerli)
project_code Hayır Proje koduna göre filtre
production_code Hayır Üretim koduna göre filtre
production_stage_code Hayır Üretim aşama koduna göre filtre
start_time Hayır Alt sınır (RFC 3339; ofset kabul edilir, UTC'ye normalize)
end_time Hayır Üst sınır (RFC 3339; ofset kabul edilir, UTC'ye normalize)
limit Hayır Sayfa boyutu. Varsayılan 100, minimum 1, maksimum 1000
cursor Hayır Önceki yanıttan opak imleç

Maksimum tarih aralığı sınırı yoktur. start_time ve end_time birlikte verildiğinde start_time, end_time'dan kesinlikle önce olmalıdır.

end_time verilmezse etkin üst sınır, istek işleme anındaki güncel UTC zamandır.

Sayfalama

Anahtar kümesi sayfalama (timestamp DESC, _id DESC) kullanır.

  • Yanıttaki effective_end_time imleç zinciri için sabitlenir
  • İmleçler bu sınırı ve filtre parmak izini taşır
  • Son sayfada pagination.next_cursor null olur
  • Boş sonuç HTTP 200 ve "items": [] döner

Yanıt eşlemesi

API alanı Kaynak / kural
production_stage_code MongoDB production_stage alanı
event_type, type_code Normalize edilmiş kanonik snake_case
timestamp, effective_end_time Z sonekli RFC 3339 UTC
status API yanıtından hariç tutulur
reconnecting olayları Dahil edilir; eski aliaslar (reconnect, re-connect, re_connect, büyük/küçük harf fark etmez) yalnız kanonik reconnecting değerine normalize edilir

Her öğe iç içe employees, input_products ve output_products dizileri içerebilir.

Örnek istek

http GET /api/v1/machine-events?machine_code=MACHINE-001&company_id=6a2bc9fbeb8679852cddac2a&organization_id=6a2bd388eb8679852cddac2c&limit=50 HTTP/1.1 Host: localhost:8080 Authorization: Bearer <access_token> Accept: application/json

Örnek yanıt

json { "success": true, "request_id": "550e8400-e29b-41d4-a716-446655440000", "data": { "effective_end_time": "2026-08-06T15:00:00Z", "items": [ { "machine_name": "CNC Makinesi", "machine_code": "MACHINE-001", "event_type": "stop", "timestamp": "2026-08-06T14:30:00Z", "employees": [], "input_products": [], "output_products": [], "project_name": "Proje Adı", "project_code": "PROJE-001", "production_code": "URETIM-001", "production_name": "Üretim Emri Adı", "production_stage_code": "ASAMA-001", "stop_answer_reason": "", "type_code": "planned" } ], "pagination": { "limit": 50, "returned_count": 1, "has_more": false, "next_cursor": null } }, "error": null }

Hata yanıtları

HTTP Kod Ne zaman
400 MACHINE_CODE_REQUIRED machine_code eksik veya boş
400 TENANT_CONTEXT_REQUIRED Sorguda kiracı yok ve yapılandırılmış varsayılan yok
400 TENANT_CONTEXT_INCOMPLETE Sorguda company_id / organization_id'den yalnızca biri
400 INVALID_TENANT_CONTEXT Kiracı alanlarında geçersiz ObjectID
400 INVALID_START_TIME / INVALID_END_TIME Hatalı biçimlendirilmiş zaman parametresi
400 INVALID_TIME_RANGE start_time, end_time'dan önce değil
400 INVALID_LIMIT limit 1–1000 dışında
400 INVALID_CURSOR İmleç geçersiz veya filtre uyuşmazlığı
401 AUTHENTICATION_REQUIRED / INVALID_TOKEN Kimlik doğrulama hatası
404 MACHINE_NOT_FOUND Kiracı + machine_code için makine yok
406 NOT_ACCEPTABLE Desteklenmeyen Accept
503 DATABASE_UNAVAILABLE MongoDB kullanılamıyor

Bkz. Hata Kodları.

Veritabanı indeksleri

Benzersiz olmayan alarm indeksleri migration CLI ile oluşturulur (istek başına değil):

  • ix_alarms_machine_timestamp_id_desc — makine olayları anahtar kümesi sayfalama
  • ix_alarms_project_production_stage_machine_timestamp_id — kapsamlı alarm taramaları

Üretimde bu uç noktalara güvenmeden önce migration'ları dağıtım sürecinize göre çalıştırın.