Συνεδρίες Device User

Ενημερώστε το Nomid για το ποιος χρησιμοποιεί ποια συσκευή όταν η δική σας εφαρμογή συνδέει τους χρήστες της και διαβάστε κάθε συνεδρία Device User.

Πώς λειτουργεί

Χρησιμοποιήστε αυτά τα τελικά σημεία όταν μια δική σας εφαρμογή επαληθεύει την ταυτότητα των δικών της χρηστών σε μια διαχειριζόμενη συσκευή. Η εφαρμογή ταυτοποιεί τη συσκευή μέσω του σειριακού αριθμού της, για παράδειγμα αυτού που της έχει μεταβιβαστεί στη διαχειριζόμενη διαμόρφωσή της. Όταν ένας χρήστης συνδέεται, το backend σας αναφέρει τη σύνδεση με αυτόν τον σειριακό αριθμό και το δικό σας αναγνωριστικό για τον χρήστη, και διατηρεί το loginId που λαμβάνει ως απάντηση. Όταν ο χρήστης αποσυνδέεται, το backend σας αναφέρει την αποσύνδεση.

Η πρώτη σύνδεση ενός externalUserId δημιουργεί έναν Device User με auth EXTERNAL για αυτόν. Μεταγενέστερες συνδέσεις του ίδιου externalUserId επαναχρησιμοποιούν αυτόν τον χρήστη, και ένα userName που διαφέρει από το τρέχον όνομά του τον μετονομάζει. Μπορείτε επίσης να αναφέρετε τη σύνδεση ενός υπάρχοντος Device User οποιουδήποτε auth μέσω του deviceUserId του.

Το GET /device-user-logins επιστρέφει τις συνεδρίες Device User της εταιρείας, με τις νεότερες πρώτα: εκείνες που αναφέρει το σύστημά σας και τις συνδέσεις με PIN και SSO που αναφέρει ο Nomid agent από τη συσκευή. Τα loginSource και logoutSource δηλώνουν ποιος ανέφερε κάθε μισό μιας συνεδρίας.

Μια συνεδρία που αναφέρεται μέσω του API δεν έχει λήξη στο Nomid: παραμένει ανοιχτή μέχρι να αναφέρετε την αποσύνδεσή της. Κάθε κλήση σύνδεσης καταγράφει μια νέα συνεδρία, ακόμη και όταν ο ίδιος χρήστης είναι ήδη συνδεδεμένος σε αυτήν τη συσκευή.

Το API κλείνει μόνο συνεδρίες που αναφέρθηκαν μέσω του API. Μια σύνδεση με PIN ή SSO στον Nomid agent κλείνει από τη συσκευή.

Απαιτήσεις

  • Το GET /device-user-logins απαιτεί το DEVICES_READ, όπως και οι υπόλοιπες αναγνώσεις συσκευών.
  • Η αναφορά συνδέσεων και αποσυνδέσεων Device User (POST /device-user-logins και POST /device-user-logins/logout) απαιτεί το DEVICES_COMMAND, το δικαίωμα που στέλνει εντολές σε συσκευές· ένα κλειδί το αποκτά μόνο μαζί με το DEVICES_READ. Οι συνεδρίες Device User δεν έχουν δικό τους δικαίωμα.
  • Για να αναφέρετε μια σύνδεση, το asset πρέπει να διαθέτει μια διαχειριζόμενη συσκευή, δηλαδή μια συσκευή εγγεγραμμένη στο Nomid αυτήν τη στιγμή.
  • Το επικυρωμένο κλειδί επιλέγει την εταιρεία· τα αιτήματα δεν έχουν παράμετρο tenant ή εταιρείας. Τα τελικά σημεία σύνδεσης και αποσύνδεσης μπορούν να απευθυνθούν σε κάθε asset της εταιρείας.

Τελικά σημεία

Οι διαδρομές είναι σχετικές με τη βασική διεύθυνση URL του API και απαιτούν την κεφαλίδα X-API-Key.

https://api.nomid.tech/emm/api/v1

ΜέθοδοςEndpointΔικαίωμαΠεριγραφή
GET/device-user-loginsDEVICES_READΠροβολή λίστας συνεδριών Device User, με τις νεότερες πρώτα, με προαιρετικά φίλτρα
POST/device-user-loginsDEVICES_COMMANDΑναφορά ότι ένας χρήστης του οποίου την ταυτότητα επαλήθευσε το σύστημά σας συνδέθηκε σε μια συσκευή· επιστρέφει 201 με τη συνεδρία
POST/device-user-logins/logoutDEVICES_COMMANDΑναφορά αποσύνδεσης, βάσει loginId ή βάσει συσκευής και χρήστη· επιστρέφει τις σχετικές συνεδρίες

Λίστα συνεδριών

Κάθε παράμετρος ερωτήματος είναι προαιρετική. Χωρίς φίλτρα, το τελικό σημείο επιστρέφει τις πιο πρόσφατες συνεδρίες της εταιρείας.

ΠαράμετροςΠεριγραφή
assetIdΜόνο συνεδρίες σε αυτό το στοιχείο εξοπλισμού. Όχι μαζί με το serialNumber.
serialNumberΜόνο συνεδρίες στο στοιχείο εξοπλισμού με αυτόν τον σειριακό αριθμό. Όχι μαζί με το assetId.
deviceUserIdΜόνο συνεδρίες του Device User με αυτό το αναγνωριστικό Nomid, deviceUser.id σε μια συνεδρία.
externalUserIdΜόνο συνεδρίες του EXTERNAL Device User με αυτό το αναγνωριστικό από το σύστημά σας.
openΤο true επιστρέφει μόνο τις συνεδρίες που είναι ακόμα ανοιχτές: δεν έχουν αποσυνδεθεί και δεν έχουν λήξει. Η προεπιλογή είναι false, το οποίο επιστρέφει ανοιχτές και κλειστές συνεδρίες.
fromΜόνο συνεδρίες που ξεκίνησαν σε αυτήν ή μετά από αυτήν τη χρονική στιγμή ISO-8601, όπως 2026-10-01T00:00:00Z.
toΜόνο συνεδρίες που ξεκίνησαν πριν από αυτήν τη χρονική στιγμή ISO-8601. Το from πρέπει να είναι προγενέστερο του to, και τα δύο πρέπει να βρίσκονται μεταξύ του 1970 και του 9999.
limitΜέγιστος αριθμός συνεδριών προς επιστροφή. Προεπιλογή σε 50· μια τιμή πάνω από 200 επιστρέφει 200.

Οι συνεδρίες ενός στοιχείου εξοπλισμού περιλαμβάνουν εκείνες που καταγράφηκαν σε προηγούμενες εγγραφές του ίδιου υλικού, με τον ίδιο σειριακό αριθμό, ώστε μια επανεγγεγραμμένη συσκευή να διατηρεί το ιστορικό της. Ένα άγνωστο στοιχείο εξοπλισμού επιστρέφει 404 με κωδικό asset_not_found· ένα άγνωστο deviceUserId ή externalUserId δεν αντιστοιχεί σε καμία συνεδρία και επιστρέφει μια κενή λίστα.

Αναφορά σύνδεσης

Στείλτε ένα πεδίο συσκευής και ένα πεδίο χρήστη. Η αποστολή και των δύο ή κανενός από ένα ζεύγος επιστρέφει 400.

ΠεδίοΜέγιστο μήκοςΠεριγραφή
serialNumber255Ο σειριακός αριθμός της συσκευής. Είτε αυτό είτε το assetId.
assetId255Το αναγνωριστικό του στοιχείου εξοπλισμού. Είτε αυτό είτε το serialNumber.
externalUserId100Το δικό σας αναγνωριστικό για τον χρήστη. Η πρώτη του σύνδεση δημιουργεί έναν Device User με έλεγχο ταυτότητας EXTERNAL· οι μεταγενέστερες συνδέσεις το επαναχρησιμοποιούν. Τα αρχικά και τελικά κενά διαστήματα αφαιρούνται και οι χαρακτήρες ελέγχου απορρίπτονται. Είτε αυτό είτε το deviceUserId.
deviceUserId36Το αναγνωριστικό ενός υπάρχοντος Nomid Device User. Είτε αυτό είτε το externalUserId.
userName50Προαιρετικό όνομα εμφάνισης, χρησιμοποιείται μόνο με το externalUserId. Ένας νέος χρήστης EXTERNAL το λαμβάνει, ή το externalUserId του περικομμένο σε 50 χαρακτήρες όταν απουσιάζει. Μια μεταγενέστερη σύνδεση με διαφορετικό userName μετονομάζει τον χρήστη.

Κρατήστε το loginId από την απόκριση: είναι η απόδειξη που αποσυνδέει ακριβώς αυτήν τη συνεδρία. Εάν χαθεί μια απόκριση σύνδεσης και στείλετε ξανά τη σύνδεση, καταγράφεται μια δεύτερη συνεδρία· μια αποσύνδεση ανά συσκευή και χρήστη κλείνει και τις δύο.

Αναφορά αποσύνδεσης

Στείλτε είτε το loginId είτε ένα πεδίο συσκευής και ένα πεδίο χρήστη για να κλείσετε κάθε ανοιχτή συνεδρία που άνοιξε το API για αυτόν τον χρήστη σε αυτήν τη συσκευή, συμπεριλαμβανομένων των προηγούμενων εγγραφών του ίδιου υλικού.

ΠεδίοΜέγιστο μήκοςΠεριγραφή
loginId36Η απόδειξη που επέστρεψε η σύνδεση. Ένα πεδίο συσκευής ή χρήστη που αποστέλλεται μαζί της πρέπει να ανήκει στην ίδια τη συνεδρία, διαφορετικά το αίτημα επιστρέφει 409.
serialNumber255Ο σειριακός αριθμός της συσκευής. Όχι μαζί με το assetId.
assetId255Το id του asset. Όχι μαζί με το serialNumber.
externalUserId100Το δικό σας id για τον χρήστη. Όχι μαζί με το deviceUserId.
deviceUserId36Το Nomid id του Device User. Όχι μαζί με το externalUserId.

Η απόκριση είναι 200 με τη λίστα των σχετικών συνεδριών. Η αποσύνδεση μιας συνεδρίας που είναι ήδη κλειστή δεν αλλάζει τίποτα και την επιστρέφει ως έχει, επομένως η αποσύνδεση μπορεί να επιχειρηθεί ξανά με ασφάλεια. Μια αποσύνδεση βάσει συσκευής και χρήστη επιστρέφει μια κενή λίστα όταν ο χρήστης δεν έχει ανοιχτή συνεδρία API εκεί.

Πεδία συνεδρίας

Κάθε τελικό σημείο επιστρέφει συνεδρίες με αυτά τα πεδία. Ένα πεδίο χωρίς τιμή παραλείπεται· το open είναι πάντα παρόν. Οι ώρες είναι χρονικές στιγμές κατά ISO-8601 σε UTC.

ΠεδίοΠεριγραφή
loginIdΤο id της συνεδρίας, η απόδειξη που την αποσυνδέει.
deviceUserΠοιος συνδέθηκε: id (το Nomid id), name, auth (PIN, SSO ή EXTERNAL) και, για έναν χρήστη EXTERNAL, externalUserId.
assetΠού: assetId, serialNumber και name. Παραλείπεται μόνο όταν η συσκευή δεν ανήκει πλέον σε κανένα asset.
loginAtΠότε συνδέθηκε ο χρήστης. Παραλείπεται μόνο για αποσύνδεση που ανέφερε η συσκευή χωρίς σύνδεση.
logoutAtΠότε έληξε η συνεδρία. Παραλείπεται ενόσω είναι ανοιχτή.
expiresAtΠότε λήγει η συνεδρία από μόνη της, εάν η πολιτική ορίζει λήξη. Οι συνεδρίες που αναφέρονται μέσω του API δεν έχουν καμία.
opentrue ενόσω κανείς δεν έχει αποσυνδέσει τη συνεδρία και αυτή δεν έχει λήξει.
loginSourceΠοιος ανέφερε τη σύνδεση: DEVICE (ο πράκτορας Nomid στη συσκευή, σύνδεση με PIN ή SSO) ή API (το σύστημά σας, μέσω αυτού του API).
logoutSourceΠοιος ανέφερε την αποσύνδεση: DEVICE, API ή EXPIRY όταν η συνεδρία έληξε. Παραλείπεται ενόσω η συνεδρία είναι ανοιχτή.

Παραδείγματα

Αναφέρετε μια σύνδεση βάσει σειριακού αριθμού για έναν χρήστη του δικού σας συστήματος.

curl -X POST "https://api.nomid.tech/emm/api/v1/device-user-logins" \
  -H "X-API-Key: $NOMID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"serialNumber": "R58N123ABCD", "externalUserId": "emp-1042", "userName": "Ana Souza"}'
HTTP/1.1 201 Created

{
  "loginId": "5f0c2a8e-3b1d-4e7a-9c64-2d8f1b7e0a93",
  "deviceUser": {
    "id": "b2e47c19-8a3f-4d65-a0e1-6c9d2f5b8e74",
    "name": "Ana Souza",
    "auth": "EXTERNAL",
    "externalUserId": "emp-1042"
  },
  "asset": {
    "assetId": "k3x9m2pa",
    "serialNumber": "R58N123ABCD",
    "name": "Warehouse scanner 12"
  },
  "loginAt": "2026-10-29T11:02:41.518204Z",
  "open": true,
  "loginSource": "API"
}

Αποσυνδέστε αυτήν τη συνεδρία με το loginId της.

curl -X POST "https://api.nomid.tech/emm/api/v1/device-user-logins/logout" \
  -H "X-API-Key: $NOMID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"loginId": "5f0c2a8e-3b1d-4e7a-9c64-2d8f1b7e0a93"}'
HTTP/1.1 200 OK

[
  {
    "loginId": "5f0c2a8e-3b1d-4e7a-9c64-2d8f1b7e0a93",
    "deviceUser": {
      "id": "b2e47c19-8a3f-4d65-a0e1-6c9d2f5b8e74",
      "name": "Ana Souza",
      "auth": "EXTERNAL",
      "externalUserId": "emp-1042"
    },
    "asset": {
      "assetId": "k3x9m2pa",
      "serialNumber": "R58N123ABCD",
      "name": "Warehouse scanner 12"
    },
    "loginAt": "2026-10-29T11:02:41.518204Z",
    "logoutAt": "2026-10-29T19:30:05.204117Z",
    "open": false,
    "loginSource": "API",
    "logoutSource": "API"
  }
]

Ή κλείστε κάθε ανοιχτή συνεδρία API του χρήστη σε αυτήν τη συσκευή.

curl -X POST "https://api.nomid.tech/emm/api/v1/device-user-logins/logout" \
  -H "X-API-Key: $NOMID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"serialNumber": "R58N123ABCD", "externalUserId": "emp-1042"}'

Διαβάστε τις συνεδρίες μίας συσκευής από την 1η Οκτωβρίου. Αυτή είναι μια σύνδεση με PIN στη συσκευή η οποία έληξε.

curl "https://api.nomid.tech/emm/api/v1/device-user-logins?serialNumber=R58N123ABCD&from=2026-10-01T00:00:00Z&limit=20" \
  -H "X-API-Key: $NOMID_API_KEY"
HTTP/1.1 200 OK

[
  {
    "loginId": "e91d4b7a-0c2f-4a58-8b13-7f6e5d4c3b2a",
    "deviceUser": {
      "id": "4c8a1e2f-6b3d-4f70-9e15-0a2b3c4d5e6f",
      "name": "Shift 2 operator",
      "auth": "PIN"
    },
    "asset": {
      "assetId": "k3x9m2pa",
      "serialNumber": "R58N123ABCD",
      "name": "Warehouse scanner 12"
    },
    "loginAt": "2026-10-28T14:00:09.731552Z",
    "logoutAt": "2026-10-28T22:00:09.731552Z",
    "expiresAt": "2026-10-28T22:00:09.731552Z",
    "open": false,
    "loginSource": "DEVICE",
    "logoutSource": "EXPIRY"
  }
]

Σφάλμα: μια συνεδρία που ανέφερε η συσκευή

HTTP/1.1 409 Conflict
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Conflict",
  "status": 409,
  "detail": "The login was reported by the device, not through the API",
  "instance": "/emm/api/v1/device-user-logins/logout",
  "code": "login_not_reported_by_api"
}

Σφάλματα

Τα τελικά σημεία συνεδρίας Device User απαντούν με 400, 404 και 409 με application/problem+json και ένα μέλος code για διακλάδωση· δεν στέλνουν μέλος retryable. Δύο εξαιρέσεις δεν έχουν code: το 401 και το 403, καθώς και ένα 400 για μη έγκυρη παράμετρο ερωτήματος του GET /device-user-logins.

ΚατάστασηΚωδικόςΣημασία
400invalid_argumentΣύνδεση ή αποσύνδεση: το σώμα λείπει ή δεν είναι έγκυρο JSON της τεκμηριωμένης μορφής, απεστάλησαν και τα δύο ή κανένα από το ζεύγος συσκευής ή χρήστη, μια αποσύνδεση χωρίς loginId δεν περιέχει τη συσκευή ή τον χρήστη, ή το externalUserId (πάνω από 100 χαρακτήρες) ή το userName (πάνω από 50 χαρακτήρες) είναι πολύ μεγάλο ή περιέχει χαρακτήρες ελέγχου. Η λεπτομέρεια αναφέρει ποιο.
400-Μόνο λίστα: assetId και serialNumber μαζί, το from δεν είναι προγενέστερο του to, το from ή το to δεν είναι χρονική στιγμή ISO-8601 ή βρίσκεται εκτός του 1970 έως 9999, όριο κάτω του 1, ή το open δεν είναι true ή false.
401-Το κλειδί API λείπει, δεν είναι έγκυρο, έχει λήξει ή έχει ανακληθεί.
403-Από το κλειδί λείπει το DEVICES_READ (λίστα) ή το DEVICES_COMMAND (σύνδεση και αποσύνδεση).
404asset_not_foundΔεν υπάρχει πάγιο με αυτό το assetId ή serialNumber στην εταιρεία του κλειδιού.
404device_user_not_foundΔεν υπάρχει Device User με αυτό το deviceUserId στην εταιρεία του κλειδιού ή, σε περίπτωση αποσύνδεσης, κανένας με αυτό το externalUserId επειδή δεν συνδέθηκε ποτέ μέσω του API.
404login_not_foundΔεν υπάρχει περίοδος σύνδεσης με αυτό το loginId στην εταιρεία του κλειδιού.
409no_managed_deviceΤο πάγιο δεν διαθέτει διαχειριζόμενη συσκευή, επομένως δεν μπορεί να καταγραφεί σύνδεση σε αυτό.
409device_user_disabledΟ Device User είναι απενεργοποιημένος.
409device_user_not_externalΟ Device User με αυτό το externalUserId δεν έχει πλέον έλεγχο ταυτότητας EXTERNAL.
409login_device_mismatchΗ περίοδος σύνδεσης με αυτό το loginId δεν πραγματοποιήθηκε στη συσκευή που απεστάλη μαζί του.
409login_user_mismatchΗ περίοδος σύνδεσης με αυτό το loginId δεν ανήκει στον απεσταλμένο χρήστη.
409login_not_reported_by_apiΗ περίοδος σύνδεσης αναφέρθηκε από τη συσκευή, μια σύνδεση με PIN ή SSO στον Nomid agent. Την κλείνει η συσκευή, όχι το API.

Όρια ρυθμού

Αυτά τα τελικά σημεία δεν αποτελούν μέρος του ορίου εγγραφής των 10 αιτημάτων ανά λεπτό ανά κλειδί που μοιράζονται οι εντολές συσκευών, οι αλλαγές πολιτικών και οι κωδικοί QR παροχής. Διαμορφώστε το client σας ώστε να εφαρμόζει backoff σε σφάλματα 429 ούτως ή άλλως.

Εργαλείο MCP

Το εργαλείο MCP μόνο για ανάγνωση list_device_user_logins λαμβάνει τα ίδια φίλτρα ως ορίσματα και απαιτεί DEVICES_READ. Με το Sign in with Nomid, ένας χρήστης που βλέπει μόνο ορισμένες πολιτικές λαμβάνει μόνο τις περιόδους σύνδεσης σε πάγια αυτών των πολιτικών. Η αναφορά συνδέσεων και αποσυνδέσεων γίνεται μόνο μέσω REST: κανένα εργαλείο MCP δεν την εκτελεί.

list_device_user_loginsDEVICES_READΠερίοδοι σύνδεσης Device User, πρώτα οι νεότερες, με τα φίλτρα του GET /device-user-logins: ποιος συνδέθηκε σε ποιο πάγιο, πότε, και ποιος ανέφερε τη σύνδεση και την αποσύνδεση. Ακολουθεί το εύρος πολιτικής του καλούντος. Σφάλμα εργαλείου εάν το πάγιο δεν βρεθεί.

Διακομιστής MCP

Επιλέξτε την ώρα σας

Φόρτωση...
Άνοιγμα ημερολογίου κρατήσεων