Polecenia urządzeń

Punkty końcowe poleceń urządzeń wysyłają polecenie do jednego zarządzanego urządzenia. Wymagają klucza API z uprawnieniem DEVICES_COMMAND lub DEVICES_COMMAND_DESTRUCTIVE w przypadku czterech poleceń destrukcyjnych.

Przegląd

Każde wywołanie dotyczy dokładnie jednego urządzenia, identyfikowanego przez jego assetId, który jest wartością pathName zwracaną przez GET /assets. Nie ma punktu końcowego do operacji zbiorczych. Aby wysłać polecenie do kilku urządzeń, wykonaj jedno wywołanie na urządzenie w ramach limitu żądań. Punkty końcowe działają tak samo jak narzędzia poleceń MCP.

Klucz wymaga uprawnień DEVICES_COMMAND i DEVICES_READ. change-policy wymaga również POLICIES_READ. Polecenia destrukcyjne wymagają zamiast tego DEVICES_COMMAND_DESTRUCTIVE i DEVICES_READ. Wyślij klucz w nagłówku X-API-Key. Interfejs REST API nie akceptuje nagłówka Authorization.

Urządzenie musi być zarejestrowane (stan ACTIVE, INACTIVE lub SYNCHRONIZING). Niektóre polecenia działają tylko na jednym typie urządzeń, zgodnie z poniższymi opisami: urządzenia z Android Management (zarządzane przez Google) lub urządzenia zarządzane przez agenta Nomid (AOSP). W przypadku każdego innego urządzenia zwracany jest kod 409. Wiadomość jest powiadomieniem push wysyłanym do agenta Nomid i wymaga zarejestrowanego tokenu push.

Punkty końcowe

MetodaPunkt końcowyOpis
POST/assets/{assetId}/commands/lockNatychmiast zablokuj ekran urządzenia. Tylko urządzenia Android Management. Brak treści żądania.
POST/assets/{assetId}/commands/lost-modeZablokuj urządzenie i wyświetl komunikat, z opcjonalnymi danymi kontaktowymi, na jego ekranie blokady. Tylko urządzenia Android Management.
POST/assets/{assetId}/commands/foundZakończ tryb utracony. Jeśli urządzenie nie było w trybie utraconym, nic się nie dzieje i żaden błąd nie jest zwracany. Tylko urządzenia Android Management. Brak treści żądania.
POST/assets/{assetId}/commands/messageWyświetl powiadomienie push w postaci zwykłego tekstu na urządzeniu.
POST/assets/{assetId}/commands/status-reportZażądaj od urządzenia natychmiastowego wysłania nowego raportu o stanie. Raport nadejdzie później: odczytaj go za pomocą GET /assets/ASSET_ID. Brak treści żądania.
POST/assets/{assetId}/commands/location-updateZażądaj od urządzenia natychmiastowego zgłoszenia bieżącej lokalizacji. Lokalizacja nadejdzie później: odczytaj ją za pomocą GET /assets/ASSET_ID. Brak treści żądania.
POST/assets/{assetId}/commands/sync-policyWyślij urządzeniu ponownie jego bieżące zasady. Tylko urządzenia zarządzane przez agenta Nomid (AOSP): urządzenia Android Management otrzymują zmiany zasad automatycznie i zwracają kod 409. Brak treści żądania.
POST/assets/{assetId}/commands/rebootUruchom ponownie urządzenie teraz. Praca osoby, która go używa, zostanie przerwana, a niezapisane dane mogą zostać utracone. Brak treści żądania.
POST/assets/{assetId}/commands/shutdownWyłącz urządzenie teraz. Nie można go włączyć ponownie zdalnie. Tylko urządzenia zarządzane przez agenta Nomid (AOSP). Brak treści żądania.
POST/assets/{assetId}/commands/launch-appOtwórz zainstalowaną aplikację na urządzeniu według nazwy pakietu. Tylko urządzenia zarządzane przez agenta Nomid (AOSP).
POST/assets/{assetId}/commands/clear-app-dataUsuń wszystkie dane podanych aplikacji (konta, ustawienia i pliki), tak jakby dopiero zostały zainstalowane. Działania nie można cofnąć. Tylko urządzenia Android Management.
POST/assets/{assetId}/commands/change-policyPrzenieś urządzenie do innych zasad firmy. Urządzenie zastosuje aplikacje, ograniczenia i ustawienia nowych zasad, a wszystko, co znajdowało się wyłącznie w bieżących zasadach, zostanie usunięte. Wymaga również uprawnienia POLICIES_READ.

Przesyłaj Content-Type: application/json wraz z punktami końcowymi lost-mode, message, launch-app, clear-app-data, change-policy oraz change-screen-lock-password. Pozostałe punkty końcowe nie przyjmują treści. Nieznane pola są odrzucane, a wymagane pola tekstowe nie mogą być puste.

Polecenia destrukcyjne

Cztery polecenia usuwają dane, zdejmują lub zmieniają blokadę ekranu bądź kończą zarządzanie urządzeniem. W przypadku użycia klucza API są one wykonywane natychmiast po zaakceptowaniu żądania. W portalu nie ma etapu zatwierdzania.

Wymagają one klucza API z uprawnieniami DEVICES_COMMAND_DESTRUCTIVE oraz DEVICES_READ. Firma musi również włączyć polecenia destrukcyjne w sekcji dostępu agenta AI w portalu. To ustawienie jest domyślnie wyłączone i wymaga także włączenia poleceń urządzeń. Bez tego żądanie zwraca kod 403 z błędem forbidden.

MetodaPunkt końcowyOpis
POST/assets/{assetId}/commands/wipeUsuń urządzenie z zarządzania i wyczyść jego zarządzane dane. Urządzenie firmowe zostanie przywrócone do ustawień fabrycznych: wszystkie aplikacje i dane na nim zostaną usunięte. Na urządzeniu prywatnym z profilem służbowym usuwany jest tylko profil służbowy oraz jego aplikacje i dane; prywatne aplikacje i dane pozostają nienaruszone. Działanie nieodwracalne. Brak treści żądania.
POST/assets/{assetId}/commands/reset-screen-lockUsuń blokadę ekranu urządzenia (PIN, wzór lub hasło), aby można je było odblokować bez niej. Tylko urządzenia Android Management. Brak treści żądania.
POST/assets/{assetId}/commands/change-screen-lock-passwordUstaw nowe hasło blokady ekranu. Urządzenie zablokuje się i tylko nowe hasło je odblokuje. Tylko urządzenia Android Management.
POST/assets/{assetId}/commands/relinquish-ownershipPrzekaż urządzenie firmowe jego użytkownikowi. Profil służbowy i jego dane zostaną usunięte, a urządzenie przestanie być zarządzane. Działanie nieodwracalne. Brak treści żądania.

Polecenie change-screen-lock-password przyjmuje nowe hasło w newPassword. Nomid nigdy go nie przechowuje, nie zwraca ani nie zapisuje w dziennikach.

Treści żądań

Treść żądania trybu utraconego

PoleWymaganeOpis
messageTakTekst wyświetlany na ekranie blokady. Do 4096 znaków.
phoneNumberNieNumer telefonu kontaktowego wyświetlany na ekranie blokady. Do 4096 znaków.
emailNieAdres e-mail do kontaktu wyświetlany na ekranie blokady. Musi być prawidłowym adresem e-mail, do 320 znaków.
streetAddressNieAdres do kontaktu wyświetlany na ekranie blokady. Do 4096 znaków.
organizationNieNazwa organizacji wyświetlana na ekranie blokady. Do 4096 znaków.

Treść żądania wiadomości

PoleWymaganeOpis
titleTakTytuł powiadomienia. Do 60 znaków.
bodyTakTreść powiadomienia. Maksymalnie 500 znaków.

Treść żądania uruchomienia aplikacji

PoleWymaganeOpis
packageNameTakNazwa pakietu zainstalowanej aplikacji do otwarcia, na przykład com.example.app.

Treść żądania wyczyszczenia danych aplikacji

PoleWymaganeOpis
packageNamesTakTablica od 1 do 20 nazw pakietów, na przykład com.example.app, których dane mają zostać wyczyszczone.

Treść żądania zmiany zasad

PoleWymaganeOpis
policyIdTakNowe zasady według parametru policyId (wartość pathName zwracana przez GET /policies).

Treść żądania zmiany hasła blokady ekranu

PoleWymaganeOpis
newPasswordTakNowe hasło blokady ekranu, od 4 do 128 znaków, bez spacji początkowych i końcowych. Nigdy nie jest przechowywane, zwracane ani rejestrowane.

Przykład: wyślij wiadomość

Zastąp identyfikator zasobu (asset id) wartością pathName z GET /assets i przechowuj klucz w zmiennej środowiskowej.

curl -X POST "https://api.nomid.tech/emm/api/v1/assets/k3x9m2pa/commands/message" \
  -H "X-API-Key: $NOMID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Please return this device", "body": "Bring it to the IT desk by 5 pm."}'
{
  "assetId": "k3x9m2pa",
  "type": "NOTIFICATION_MESSAGE",
  "status": "SUCCESS",
  "createdAt": "2026-10-06T14:30:00Z"
}

Odpowiedź 200 oznacza, że polecenie zostało utworzone. Pole status określa stan polecenia w momencie zwrócenia żądania. W przypadku wiadomości SUCCESS oznacza, że powiadomienie push zostało zaakceptowane do doręczenia, a nie, że użytkownik je wyświetlił. Sprawdź dalsze informacje za pomocą GET /assets/ASSET_ID/commands.

Przykład: zablokuj urządzenie

curl -X POST "https://api.nomid.tech/emm/api/v1/assets/k3x9m2pa/commands/lock" \
  -H "X-API-Key: $NOMID_API_KEY"
{
  "assetId": "k3x9m2pa",
  "type": "LOCK",
  "status": "IN_PROGRESS",
  "createdAt": "2026-10-06T14:30:00Z"
}

Blokada i tryb utracony (lost mode) zwracają IN_PROGRESS, dopóki urządzenie nie potwierdzi polecenia. Gdy to nastąpi, historia poleceń pokazuje SUCCESS. Punkt końcowy lock nie przyjmuje treści żądania.

Przykład: wyczyszczenie urządzenia

curl -X POST "https://api.nomid.tech/emm/api/v1/assets/k3x9m2pa/commands/wipe" \
  -H "X-API-Key: $NOMID_API_KEY"
{
  "assetId": "k3x9m2pa",
  "type": "WIPE_COMPANY_DATA",
  "status": "IN_PROGRESS"
}

Wyczyszczenie urządzenia zarządzanego przez Android Management odpowiada statusem IN_PROGRESS bez pola createdAt. Sprawdź historię poleceń, aby śledzić postęp.

Odpowiedzi i dalsze kroki

Zasady ponawiania mają znaczenie. Ponowienie próby wykonania polecenia, którego wynik jest nieznany, może spowodować jego dwukrotne doręczenie.

StatusZnaczenieCo zrobić
200Polecenie zostało utworzone i dodane do kolejki.Odczytaj pole status. Ma ono wartość IN_PROGRESS, dopóki urządzenie nie potwierdzi polecenia, dlatego sprawdź historię poleceń pod kątem statusu SUCCESS. Niektóre polecenia, takie jak ponowne uruchomienie, wyczyszczenie danych lub zrzeczenie się prawa własności na urządzeniu z Android Management, odpowiadają IN_PROGRESS bez createdAt.
202UNCONFIRMED. Nomid nie jest w stanie stwierdzić, czy polecenie dotarło do urządzenia, na przykład dlatego, że upłynął limit czasu dostawcy lub wystąpił błąd po jego stronie. Treść to standardowy obiekt wynikowy ze statusem UNCONFIRMED i wskazówkami w polu detail. Poza punktami końcowymi lock, lost-mode, found i message nigdy nie zawiera createdAt.Nie wysyłaj ponownie. Najpierw sprawdź historię poleceń urządzenia i zapytaj użytkownika przed ponownym wysłaniem. W przypadku wiadomości historia może pokazywać ERROR, nawet jeśli powiadomienie zostało wyświetlone. Polecenie może pojawić się dopiero wtedy, gdy urządzenie je potwierdzi.
400Treść żądania nie przeszła walidacji lub parametr jest nieprawidłowy.Popraw pola wymienione w tablicy errors lub w detail. Żadne polecenie nie zostało wysłane.
401Brak klucza API, klucz jest nieprawidłowy lub wygasł.Prześlij prawidłowy klucz w nagłówku X-API-Key.
403Klucz nie ma uprawnień wymaganych przez polecenie lub – w przypadku polecenia destrukcyjnego – firma nie włączyła poleceń destrukcyjnych.Użyj klucza utworzonego z uprawnieniami DEVICES_COMMAND i DEVICES_READ, a także POLICIES_READ dla change-policy, bądź z DEVICES_COMMAND_DESTRUCTIVE i DEVICES_READ dla polecenia destrukcyjnego. W przypadku poleceń destrukcyjnych sprawdź również ustawienie firmowe w sekcji AI agent access w portalu.
404W firmie powiązanej z kluczem nie istnieje zasób o tym identyfikatorze. Zasób z innej firmy również zwraca 404. W punktach końcowych lock, lost-mode, found i message treść odpowiedzi jest pusta. W pozostałych punktach końcowych jest to obiekt problem details z kodem not_found; change-policy zwraca go również w przypadku nieznanej polityki.Sprawdź identyfikator zasobu za pomocą GET /assets, a w przypadku change-policy identyfikator polityki za pomocą GET /policies.
409Urządzenie nie może przyjąć tego polecenia: brak zarządzanego urządzenia, nieodpowiedni status, nieobsługiwany typ urządzenia lub – w przypadku wiadomości – brak prawidłowego tokenu push. change-policy zwraca również kod 409, gdy urządzenie korzysta już z tej polityki. Zwracany również wtedy, gdy dostawca zgłosi, że urządzenie nie jest już zarządzane. Nomid oznacza wówczas urządzenie jako usunięte.Ponowienie próby zakończy się takim samym błędem, dopóki stan urządzenia się nie zmieni. Nie ponawiaj prób w pętli.
422Dostawca przetworzył żądanie i odrzucił je dla tego urządzenia lub wiadomości, albo zgłosił, że polecenie już zakończyło się niepowodzeniem.Nie ponawiaj próby z tymi samymi argumentami.
429Przekroczono limit szybkości poleceń. Nagłówek Retry-After podaje liczbę sekund do zresetowania okna.Poczekaj na czas określony w Retry-After, a następnie spróbuj ponownie.
500Nieoczekiwany błąd. Poza punktami końcowymi lock, lost-mode, found i message treść odpowiedzi zawiera kod internal_error oraz retryable o wartości false. To, czy polecenie dotarło do urządzenia, jest nieznane.Nie wysyłaj ponownie od razu. Najpierw sprawdź zasób i jego historię poleceń.
502Usługa Android Management odrzuciła polecenie z powodu niezwiązanego z tym urządzeniem. Pole retryable informuje, czy należy ponowić próbę. Wiadomości nigdy nie zwracają 502.Jeśli retryable ma wartość true (dostawca ogranicza przepustowość lub zgłosił tymczasowy konflikt), ponów próbę po krótkim opóźnieniu. Jeśli ma wartość false, konfiguracja usługi Android Management w firmie ma problem: nie ponawiaj próby i skontaktuj się z pomocą techniczną.
503Nie wysłano. Żądanie zakończyło się niepowodzeniem wewnątrz Nomid, zanim cokolwiek zostało wysłane. retryable ma zawsze wartość true.Można bezpiecznie ponowić próbę. Nic nie zostało dostarczone, więc ponowna próba nie zduplikuje polecenia.

Treści błędów

Błędy z punktów końcowych poleceń używają application/problem+json (RFC 9457). W punktach końcowych lock, lost-mode, found i message kody 401 oraz 429 zwracają mały obiekt JSON z polami error, message i status, 404 nie ma treści, a tylko 502 i 503 dodają logiczne pole retryable. W pozostałych punktach końcowych każdy błąd oprócz 401 jest obiektem szczegółów problemu z polem code, takim jak not_found, unsupported, forbidden, invalid_arguments lub rate_limited, a 429, 500, 502 i 503 zawierają również retryable. Odpowiedź 202 nie jest błędem: zawiera standardowy obiekt wyniku.

Przykładowa odpowiedź 202

HTTP/1.1 202 Accepted

{
  "assetId": "k3x9m2pa",
  "type": "LOCK",
  "status": "UNCONFIRMED",
  "detail": "The command's outcome is unknown. Check the device's command history (list_device_commands or GET /api/v1/assets/{assetId}/commands) before retrying; it may only appear once the device acknowledges it."
}

Przykładowa odpowiedź 503

HTTP/1.1 503 Service Unavailable
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "Command was not sent; it is safe to retry.",
  "instance": "/emm/api/v1/assets/k3x9m2pa/commands/message",
  "retryable": true
}

Przykładowa odpowiedź 404 z punktu końcowego innego niż lock, lost-mode, found i message

HTTP/1.1 404 Not Found
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Not Found",
  "status": 404,
  "detail": "No device found with assetId: k3x9m2pa",
  "instance": "/emm/api/v1/assets/k3x9m2pa/commands/reboot",
  "code": "not_found"
}

Limit szybkości

Polecenia są ograniczone do 10 na minutę na klucz API, wliczając polecenia destrukcyjne. Ten sam budżet jest współdzielony z narzędziami poleceń MCP, ze zmianami zasad (każde wywołanie propose i apply) oraz z kodami QR do aprowizacji, za pośrednictwem REST lub MCP. W przypadku REST żądania przekraczające limit otrzymują HTTP 429 z nagłówkiem Retry-After.

W punktach końcowych lock, lost-mode, found i message tylko klucze z uprawnieniem DEVICES_COMMAND zużywają ten budżet, a żądanie z nieprawidłową treścią lub nieznanym identyfikatorem zasobu nadal się liczy, ponieważ limit jest stosowany przed walidacją żądania. Pozostałe punkty końcowe poleceń, wywołania zmian zasad i żądania kodów QR do aprowizacji zużywają go dopiero po pomyślnym przejściu kontroli uprawnień i walidacji argumentów.

Ścieżka audytu

Każde polecenie jest rejestrowane w historii poleceń urządzenia w portalu Nomid i przypisywane do klucza API, który je wysłał, a nie do osoby. Wpis pokazuje api-key, identyfikator klucza i prefiks klucza. Historia zwracana przez GET /assets/ASSET_ID/commands oraz przez narzędzie MCP list_device_commands zawiera tylko type, status, createdAt, feedbackAt i outcome, bez informacji o tym, kto wysłał polecenie.

Wybierz swój czas

Ładowanie...
Otwórz kalendarz rezerwacji