Richtlinienänderungen

Einstellungen einer Android-Richtlinie ändern, eine Richtlinie als Kopie einer anderen erstellen oder eine Richtlinie auf eine frühere Version zurücksetzen. Jede Änderung wird überprüft, bevor sie angewendet wird.

So funktioniert es

Jede Änderung erfolgt in zwei Schritten. Zuerst schlagen Sie sie vor: Die API erfasst einen Vorschlag und gibt dessen Änderungsliste zurück, mit dem aktuellen und neuen Wert jeder Einstellung, den Auswirkungen und dem Zeitpunkt, zu dem der Vorschlag abläuft. An der Richtlinie ändert sich vorerst nichts. Anschließend wenden Sie den Vorschlag anhand seiner proposalId an, nachdem die zuständige Person die Änderungsliste überprüft hat.

Nur der API-Schlüssel, der einen Vorschlag erstellt hat, kann ihn lesen oder anwenden. Bei einer OAuth-Verbindung können dies nur dieselbe Verbindung und derselbe Benutzer. Ein Vorschlag läuft 10 Minuten nach seiner Erstellung ab; das Feld expiresAt gibt den genauen Zeitpunkt an.

Nur Android-Richtlinien können auf diese Weise geändert werden. Von Nomid verwaltete Richtlinien können dies nicht. Das Erstellen einer Richtlinie erfordert außerdem, dass das Unternehmen mit Android Enterprise verbunden ist.

Voraussetzungen

  • Ein API-Schlüssel mit der Berechtigung POLICIES_WRITE (Richtlinienänderungen), kombiniert mit POLICIES_READ. Nur ein Portal-Benutzer mit der Berechtigung zum Bearbeiten von Richtlinien kann einen Schlüssel mit POLICIES_WRITE erstellen. Erforderlich für die vier POST-Endpunkte und die MCP-Tools für Richtlinienänderungen.
  • Die Unternehmenseinstellung „Richtlinienänderungen“ unter „KI-Agenten-Zugriff“ im Portal muss aktiviert sein. Sie ist standardmäßig deaktiviert. Solange sie deaktiviert ist, gibt jeder Vorschlags- und Anwendungsaufruf den Status 403 zurück. Das Lesen von Einstellungen, Revisionen und Vorschlägen erfordert lediglich POLICIES_READ.
  • MCP-Clients, die sich statt mit einem API-Schlüssel über „Mit Nomid anmelden“ verbinden, benötigen den Scope mcp:policies:write.

Endpunkte

Alle Pfade sind relativ zur API-Basis-URL und erfordern den X-API-Key-Header. Anfragetexte sind im JSON-Format.

MethodeEndpunktBeschreibung
GET/policies/{policyId}/settingsDie bearbeitbaren Einstellungen der Richtlinie, jeweils mit aktuellem Wert, zulässigen Werten, Gruppe und der Angabe, ob eine Änderung schwerwiegende Auswirkungen hat. Gibt außerdem die Richtlinienversion, deviceCount und die Information zurück, ob die Richtlinie bearbeitbar ist.
GET/policies/{policyId}/revisionsDie gespeicherten Revisionen der Richtlinie, die neuesten zuerst, mit Angabe darüber, wann und von wem sie jeweils gespeichert wurden. limit ist optional, von 1 bis 100, Standardwert 20.
GET/policy-proposals/{proposalId}Ein von diesem Schlüssel erstellter Vorschlag mit seiner Änderungsliste und seinem Status: PENDING, EXECUTING, SUCCEEDED, FAILED, UNCONFIRMED oder EXPIRED.
POST/policies/{policyId}/changesSchlagen Sie Einstellungsänderungen für eine bestehende Richtlinie vor. Gibt 201 mit dem Vorschlag zurück.
POST/policiesSchlagen Sie eine neue Richtlinie als Kopie einer bestehenden vor, mit optionalen Einstellungsänderungen. Ohne Änderungen wird die Richtlinie dupliziert. Gibt 201 mit dem Vorschlag zurück.
POST/policies/{policyId}/rollbacksSchlagen Sie vor, die Richtlinie auf eine frühere Revision zurückzusetzen. Gibt 201 mit dem Vorschlag zurück.
POST/policy-proposals/{proposalId}/applyWenden Sie einen ausstehenden Vorschlag an. Gibt 200 mit dem Vorschlag und dessen Ergebnis zurück: policyId, displayName, version und einen Portallink.

Request-Bodys

Einstellungen ändern

FeldErforderlichBeschreibung
changesJaArray von Objekten mit setting (eine Einstellungs-ID) und value (einer der zulässigen Werte). Jede Einstellung darf höchstens einmal vorkommen. Bei Werten wird die Groß-/Kleinschreibung nicht berücksichtigt.

Eine Richtlinie erstellen

FeldErforderlichBeschreibung
fromPolicyIdJaDie zu kopierende Richtlinie anhand ihrer Richtlinien-ID (pathName). Die Kopie übernimmt deren Apps, Einstellungen und Einschränkungen.
displayNameJaName der neuen Richtlinie, wie er im Portal angezeigt wird, maximal 50 Zeichen.
changesNeinEinstellungsänderungen, die auf die Kopie angewendet werden sollen, im selben Format wie oben. Lassen Sie dies weg, um die Richtlinie zu duplizieren. Kein Gerät verwendet die neue Richtlinie, bis Sie Geräte dorthin verschieben.

Eine Richtlinie zurücksetzen

FeldErforderlichBeschreibung
revisionJaDie Revisionsnummer, die wiederhergestellt werden soll, aus dem Revisionen-Endpunkt. Beschreibung, Tags und Gruppe der Richtlinie bleiben unverändert. Ihr Name wird auf den Namen der Revision zurückgesetzt, wenn sie sich unterscheiden, und die Änderungsliste zeigt dies an.

Einen Vorschlag anwenden

FeldErforderlichBeschreibung
confirmationFür HOHE AuswirkungenErforderlich, wenn für den Vorschlag requiresConfirmation auf true gesetzt ist: der Name der Richtlinie, eingegeben von der Person, die die Änderung genehmigt. Beim Abgleich wird die Groß-/Kleinschreibung sowie umgebende Leerzeichen ignoriert.

Der Vorschlag

Jeder Vorschlags-Endpunkt sowie die Get- und Apply-Endpunkte geben den Vorschlag zurück. Die nützlichsten Felder:

FeldBeschreibung
proposalIdDie ID, mit der der Vorschlag gelesen oder angewendet werden kann.
statusPENDING bis zur Anwendung und EXECUTING, während die Anwendung läuft: Keines von beiden ist endgültig. Danach SUCCEEDED oder FAILED, UNCONFIRMED, wenn ein unerwarteter Fehler das Ergebnis unklar gelassen hat, oder EXPIRED, sobald expiresAt überschritten ist.
impactNORMAL oder HIGH. Siehe Auswirkung und Bestätigung.
requiresConfirmationTrue bei einem Vorschlag mit der Auswirkung HIGH: Das Anwenden erfordert das Feld confirmation.
fieldsDie Änderungsliste. Jeder Eintrag enthält label (Name der Einstellung), value (der neue Wert) und previousValue (der aktuelle Wert).
summaryEin Satz, der die Änderung beschreibt, einschließlich der Anzahl der Geräte, die die Richtlinie verwenden.
targetDie Richtlinie, die durch den Vorschlag geändert wird: kind, id und name.
expiresAtWann der Vorschlag abläuft. Danach kann er nicht mehr angewendet werden.
resultNur bei Antworten auf Anwenden: die Richtlinie im aktuellen Zustand mit policyId, displayName, version, einer Nachricht und portalUrl.

Auswirkung und Bestätigung

Ein Vorschlag hat die Auswirkung HIGH, wenn die Richtlinie mindestens ein Gerät umfasst und mindestens eine der folgenden Bedingungen zutrifft:

  • Es handelt sich um ein Rollback.
  • Es ändert eine Einstellung mit hoher Auswirkung: Apps aus unbekannten Quellen, Google Play Protect, Zurücksetzen auf Werkseinstellungen, Entwickleroptionen, USB-Datenübertragung oder Speicherverschlüsselung.
  • Die Richtlinie umfasst 50 oder mehr Geräte, unabhängig von der Änderung.

Alles andere ist NORMAL, einschließlich jeder neuen Richtlinie, da sie noch von keinem Gerät verwendet wird.

Vorschläge sind an eine Richtlinienversion gebunden

Ein Vorschlag zeichnet die Richtlinienversion auf, auf der seine Änderungsliste basiert. Wenn die Richtlinie vor dem Anwenden des Vorschlags erneut gespeichert wird – von wem und von wo auch immer –, schlägt das Anwenden mit 409 und dem Code stale_proposal fehl, und es ändert sich nichts. Lesen Sie die Richtlinie erneut aus, erstellen Sie den Vorschlag neu und prüfen Sie die neue Änderungsliste.

Beispiel: Vorschlagen und Anwenden

Lesen Sie zuerst die aktuellen Einstellungen der Richtlinie aus, um die Einstellungs-IDs und zulässigen Werte zu erhalten:

curl "https://api.nomid.tech/emm/api/v1/policies/p7k2m9qa4xz/settings" \
  -H "X-API-Key: $NOMID_API_KEY"
{
  "policyId": "p7k2m9qa4xz",
  "displayName": "Warehouse scanners",
  "version": 12,
  "deviceCount": 18,
  "editable": true,
  "settings": [
    {
      "id": "CAMERA",
      "label": "Camera",
      "group": "RESTRICTIONS",
      "value": "ALLOW",
      "allowedValues": ["ALLOW", "BLOCK"],
      "highImpact": false
    }
  ]
}

Vorschlagen, die Kamera und die USB-Datenübertragung zu sperren:

curl -X POST "https://api.nomid.tech/emm/api/v1/policies/p7k2m9qa4xz/changes" \
  -H "X-API-Key: $NOMID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"changes": [{"setting": "CAMERA", "value": "BLOCK"}, {"setting": "USB_DATA_ACCESS", "value": "BLOCK"}]}'
HTTP/1.1 201 Created

{
  "capability": "update_policy_settings",
  "status": "PENDING",
  "title": "Edit policy settings",
  "summary": "Change 2 settings of policy \"Warehouse scanners\". 18 devices apply it on their next sync. High impact: type the policy's name to confirm.",
  "target": { "kind": "policy", "id": "p7k2m9qa4xz", "name": "Warehouse scanners" },
  "fields": [
    { "label": "Camera", "value": "BLOCK", "previousValue": "ALLOW" },
    { "label": "USB data transfer", "value": "BLOCK", "previousValue": "ALLOW" }
  ],
  "expiresAt": "2026-10-09T14:40:00Z",
  "impact": "HIGH",
  "proposalId": "prp_7GQv2LkR9sTn4WxY8bZcA1dE",
  "requiresConfirmation": true
}

Gekürzte Antwort. Die USB-Datenübertragung ist eine Einstellung mit hoher Auswirkung und die Richtlinie umfasst Geräte, daher hat der Vorschlag die Auswirkung HIGH und erfordert eine Bestätigung. Zeigen Sie der zuständigen Person die Änderungsliste, bevor Sie sie anwenden.

Sobald die Person zustimmt und den Namen der Richtlinie eingibt, wenden Sie den Vorschlag mit der eingegebenen Zeichenfolge an:

curl -X POST "https://api.nomid.tech/emm/api/v1/policy-proposals/prp_7GQv2LkR9sTn4WxY8bZcA1dE/apply" \
  -H "X-API-Key: $NOMID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"confirmation": "Warehouse scanners"}'
HTTP/1.1 200 OK

{
  "capability": "update_policy_settings",
  "status": "SUCCEEDED",
  "impact": "HIGH",
  "proposalId": "prp_7GQv2LkR9sTn4WxY8bZcA1dE",
  "requiresConfirmation": true,
  "result": {
    "policyId": "p7k2m9qa4xz",
    "displayName": "Warehouse scanners",
    "version": 13,
    "message": "Policy settings changed. Devices on the policy apply them on their next sync."
  }
}

Gekürzte Antwort. Geräte unter dieser Richtlinie wenden die neuen Einstellungen bei ihrer nächsten Synchronisierung an.

Wenn die Richtlinie in der Zwischenzeit geändert wurde

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

{
  "type": "about:blank",
  "title": "Conflict",
  "status": 409,
  "detail": "Policy \"Warehouse scanners\" was changed after this proposal was made. Nothing was applied: read it again and propose again.",
  "instance": "/emm/api/v1/policy-proposals/prp_7GQv2LkR9sTn4WxY8bZcA1dE/apply",
  "code": "stale_proposal",
  "retryable": false
}

Bearbeitbare Einstellungen

Dies sind die Einstellungs-IDs, die bei Änderungen akzeptiert werden, zusammen mit ihren zulässigen Werten. Die Beschriftung ist der Name, den die API in der Änderungsliste zurückgibt.

Beim Lesen von Einstellungen kann ein Wert auch NOT_SET (wird dem Gerät oder dem Standard von Google überlassen) oder CUSTOM (ein im Portal festgelegter Wert, den diese Werte nicht ausdrücken können) sein. Keiner von beiden kann gesendet werden, aber beide können durch einen zulässigen Wert ersetzt werden.

EinstellungBeschriftungGruppeZulässige WerteHohe Auswirkung
PLAY_STORE_MODE Play Store mode APPS BLACKLIST, WHITELIST Nein
DEFAULT_PERMISSION_POLICY Default runtime permission policy APPS DENY, PROMPT Nein
APP_AUTO_UPDATE_POLICY App auto-update policy APPS ALWAYS, CHOICE_TO_THE_USER, NEVER, WIFI Nein
UNTRUSTED_APPS_POLICY Apps from unknown sources SECURITY ALLOW_INSTALL_IN_PERSONAL_PROFILE_ONLY, DISALLOW_INSTALL Ja
PLAY_PROTECT Google Play Protect app verification SECURITY ENABLED, USER_CHOICE Ja
SCREEN_CAPTURE Screen capture RESTRICTIONS ALLOW, BLOCK Nein
CAMERA Camera RESTRICTIONS ALLOW, BLOCK Nein
FACTORY_RESET Factory reset from Settings RESTRICTIONS ALLOW, BLOCK Ja
UNINSTALL_APPS Uninstalling apps RESTRICTIONS ALLOW, BLOCK Nein
ACCOUNT_MODIFICATION Adding or removing accounts RESTRICTIONS ALLOW, BLOCK Nein
ADD_USER Adding users RESTRICTIONS ALLOW, BLOCK Nein
REMOVE_USER Removing users RESTRICTIONS ALLOW, BLOCK Nein
DEVELOPER_SETTINGS Developer options and USB debugging SECURITY ALLOW, BLOCK Ja
USB_DATA_ACCESS USB data transfer CONNECTIVITY ALLOW, BLOCK Ja
LOCATION_MODE Location LOCATION DISABLED, ENFORCED, USER_CHOICE Nein
LOCATION_SHARING Sharing location LOCATION ALLOW, BLOCK Nein
OUTGOING_CALLS Outgoing calls RESTRICTIONS ALLOW, BLOCK Nein
SMS SMS RESTRICTIONS ALLOW, BLOCK Nein
BLUETOOTH Bluetooth CONNECTIVITY ALLOW, BLOCK Nein
DATA_ROAMING Data roaming CONNECTIVITY ALLOW, BLOCK Nein
NETWORK_RESET Network settings reset CONNECTIVITY ALLOW, BLOCK Nein
VPN_CONFIGURATION Configuring VPNs CONNECTIVITY ALLOW, BLOCK Nein
CONFIGURE_WIFI Configuring Wi-Fi networks CONNECTIVITY ALLOW, BLOCK Nein
WIFI_DIRECT Wi-Fi Direct CONNECTIVITY ALLOW, BLOCK Nein
TETHERING Tethering and hotspot CONNECTIVITY ALLOW, BLOCK Nein
WIFI_STATE Wi-Fi on or off CONNECTIVITY DISABLED, ENABLED, USER_CHOICE Nein
AIRPLANE_MODE Airplane mode CONNECTIVITY DISABLED, USER_CHOICE Nein
MINIMUM_WIFI_SECURITY Minimum Wi-Fi security CONNECTIVITY OPEN_NETWORK, PERSONAL_NETWORK Nein
AUTO_DATE_TIME Automatic date, time and time zone RESTRICTIONS ENFORCED, USER_CHOICE Nein
ENCRYPTION_POLICY Storage encryption SECURITY ENABLED_WITHOUT_PASSWORD, ENABLED_WITH_PASSWORD, UNSPECIFIED Ja
APPLICATION_REPORT_LEVEL Installed apps reporting REPORTING DISABLED, INSTALLED_AND_REMOVED_APPS, INSTALLED_APPS Nein
REPORT_DEVICE_SETTINGS Device settings reporting REPORTING DISABLED, ENABLED Nein
REPORT_DISPLAY_INFO Display information reporting REPORTING DISABLED, ENABLED Nein
REPORT_HARDWARE_STATUS Hardware status reporting REPORTING DISABLED, ENABLED Nein
REPORT_MEMORY_INFO Memory information reporting REPORTING DISABLED, ENABLED Nein
REPORT_NETWORK_INFO Network information reporting REPORTING DISABLED, ENABLED Nein
REPORT_POWER_EVENTS Power events reporting REPORTING DISABLED, ENABLED Nein
REPORT_SOFTWARE_INFO Software information reporting REPORTING DISABLED, ENABLED Nein
REPORT_SYSTEM_PROPERTIES System properties reporting REPORTING DISABLED, ENABLED Nein

MCP-Tools

Der MCP-Server stellt dieselben Operationen als Tools bereit. Sie akzeptieren dieselben Argumente wie die REST-Endpunkte, wobei policyId und proposalId als Argumente anstelle von Pfadsegmenten verwendet werden.

ToolBerechtigungBeschreibung
get_policy_settingsPOLICIES_READDie bearbeitbaren Einstellungen einer Richtlinie mit ihren aktuellen und zulässigen Werten lesen.
list_policy_revisionsPOLICIES_READDie gespeicherten Revisionen einer Richtlinie auflisten, die neuesten zuerst.
get_policy_proposalPOLICIES_READEinen Vorschlag lesen, der mit demselben Schlüssel oder derselben Verbindung erstellt wurde, einschließlich seines Status.
update_policy_settingsPOLICIES_WRITE + POLICIES_READEinstellungsänderungen für eine bestehende Richtlinie vorschlagen.
create_policyPOLICIES_WRITE + POLICIES_READEine neue Richtlinie als Kopie einer bestehenden vorschlagen, mit optionalen Einstellungsänderungen.
rollback_policyPOLICIES_WRITE + POLICIES_READDas Wiederherstellen einer Richtlinie auf eine frühere Revision vorschlagen.
apply_policy_proposalPOLICIES_WRITE + POLICIES_READEinen ausstehenden Vorschlag anhand seiner proposalId anwenden, mit Bestätigung, wenn er eine HOHE Auswirkung (HIGH impact) hat.

Ein Assistent muss dem Benutzer die Änderungsliste anzeigen und dessen ausdrückliche Zustimmung in der Konversation einholen, bevor er apply_policy_proposal aufruft. Bei einem Vorschlag mit HOHER Auswirkung (HIGH impact) muss er den Benutzer auffordern, den Namen der Richtlinie einzugeben, und genau das übergeben, was eingegeben wurde.

Fehler

Sobald der API-Schlüssel authentifiziert ist, verwenden Fehler application/problem+json mit zwei zusätzlichen Feldern: code, eine stabile Kennung zur Verzweigung, und retryable, das angibt, ob dieselbe Anfrage erneut gesendet werden kann. Ein fehlender oder ungültiger Schlüssel erhält die gemeinsame 401-Antwort, ein kleines JSON-Objekt mit error, message und status. MCP-Tools geben denselben Code und dieselbe Nachricht als Tool-Fehler zurück.

StatusCodeBedeutung
400invalid_argumentsDer Body ist ungültig: eine unbekannte Einstellung, ein nicht zulässiger Wert, eine doppelt aufgeführte Einstellung oder ein fehlendes Feld. Die Detailangabe gibt an, welches zutrifft.
403forbiddenDem Schlüssel fehlt POLICIES_WRITE oder POLICIES_READ, oder die Unternehmenseinstellung Richtlinienänderungen ist deaktiviert.
404not_foundKeine solche Richtlinie oder Revision für diesen Schlüssel sichtbar oder kein Vorschlag mit dieser ID von diesem Schlüssel erstellt.
409unsupportedDie Richtlinie kann auf diese Weise nicht geändert werden: Es handelt sich nicht um eine Android-Richtlinie oder sie wird von Nomid verwaltet.
409not_pendingDer Vorschlag ist nicht mehr PENDING. Lesen Sie ihn, um seinen Status zu sehen: Wenn er SUCCEEDED ist, wurde die Änderung vorgenommen. Wenn er EXECUTING ist, lesen Sie ihn erneut, bis er abgeschlossen ist. Wenn er UNCONFIRMED ist, lesen Sie die Einstellungen der Richtlinie, bevor Sie erneut einen Vorschlag machen. Wenn er FAILED oder EXPIRED ist, machen Sie den Vorschlag erneut.
409stale_proposalDie Richtlinie wurde gespeichert, nachdem der Vorschlag gemacht wurde. Es wurde nichts angewendet. Lesen Sie die Richtlinie erneut und machen Sie erneut einen Vorschlag.
422refusedDie Anfrage kann nicht ausgeführt werden: Es würde sich nichts ändern, das Unternehmen ist nicht mit Android Enterprise verbunden oder der neue Richtlinienname kann nicht verwendet werden.
422confirmation_requiredDer Vorschlag hat die Auswirkung HIGH und die Bestätigung fehlt oder stimmt nicht mit dem Namen der Richtlinie überein. Es wurde nichts angewendet, und der Vorschlag bleibt ausstehend, bis er abläuft.
429rate_limitedZu viele Schreibanfragen für diesen API-Schlüssel oder diese Verbindung. Der Retry-After-Header und die Details geben die Sekunden an, die gewartet werden muss. retryable ist true.
500internal_errorUnerwarteter Fehler. Lesen Sie den Vorschlag vor einem erneuten Versuch: Wenn sein Status FAILED ist, schlagen Sie ihn erneut vor. Wenn er UNCONFIRMED ist, lesen Sie die Einstellungen der Richtlinie, um zu sehen, ob die Änderung vorgenommen wurde, bevor Sie sie erneut vorschlagen.

Ratenbegrenzungen

Jeder Propose- und Apply-Aufruf zählt zum Schreiblimit von 10 Anfragen pro Minute für jeden API-Schlüssel oder jede „Sign in with Nomid“-Verbindung, geteilt mit den Gerätebefehls-Endpunkten, Bereitstellungs-QR-Codes und den MCP-Schreibtools. Leseaufrufe zählen nicht dazu.

Revisionen und Rollback

Jede angewendete Änderung speichert eine neue Revision der Richtlinie. Listen Sie Revisionen auf, um zu sehen, wer die Richtlinie wann geändert hat, und schlagen Sie ein Rollback vor, um eine Änderung rückgängig zu machen.

Wählen Sie Ihre Zeit

Wird geladen...
Buchungskalender öffnen