PingOne Platform APIs

Update Device Requirements

PUT {{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements

This example uses the deviceRequirements endpoint to define device requirements for using the PingID app.

When you update the requirements, any optional parameters left out result in the clearing of the corresponding settings. To prevent unintentional changes, always send a READ request to get the current device requirements before updating the settings, and use the response as the basis for the body of the PUT request.

Note that the ID of the PingID app must be included in the URL of the request.

Prerequisites

See Application Operations for important overview information.

Request Model
Property Type Required?

deviceLockEnableRequire.enabled

Boolean

Optional

deviceNotAllowedRootedOrJailBroken.enabled

Boolean

Optional

deviceRequireBiometricsCapabilities.enabled

Boolean

Optional

minimumOSVersionRequire.enabled

Boolean

Optional

minimumOSVersionRequire.android

String

Optional

minimumOSVersionRequire.ios

String

Optional

minimumPingIDAppVersionRequire.enabled

Boolean

Optional

minimumPingIDAppVersionRequire.android

String

Optional

minimumPingIDAppVersionRequire.ios

String

Optional

mobileDeviceManagementRequire.enabled

Boolean

Optional

mobileDeviceManagementRequire.effectiveDate

Date

Optional

mobileDeviceManagementRequire.tokens

Array

Optional

mobileDeviceManagementRequire.tokens[].creationTime

String

Optional

mobileDeviceManagementRequire.tokens[].token

String

Optional

restrictDevicesByBrand.enabled

Boolean

Optional

restrictDevicesByBrand.deviceBrandsAllowed

Array

Optional

restrictDevicesByBrand.deviceBrandsDisAllowed

Array

Optional

restrictDevicesByBrand.deviceModelsAllowed

Array

Optional

restrictDevicesByBrand.deviceModelsDisAllowed

Array

Optional

See Device requirements data model for complete descriptions.

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "deviceLockEnableRequire": {
        "enabled": false
    },
    "restrictDevicesByBrand": {
        "enabled": true,
        "deviceBrandsAllowed": [
            "APPLE"
        ],
        "deviceModelsAllowed": [
            "iPhone 17e"
        ],
        "deviceBrandsDisAllowed": [
            "SAMSUNG",
            "HUAWEI"
        ]
    },
    "minimumOSVersionRequire": {
        "enabled": true,
        "ios": "18.4",
        "android": "15.0"
    },
    "deviceRequireBiometricsCapabilities": {
        "enabled": false
    },
    "deviceNotAllowedRootedOrJailBroken": {
        "enabled": false
    },
    "minimumPingIDAppVersionRequire": {
        "enabled": true,
        "android": "1.32.0",
        "ios": "1.33.0"
    },
    "mobileDeviceManagementRequire": {
        "enabled": true,
        "effectiveDate": "2025-01-13T11:29:11.943Z"
    }
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "deviceLockEnableRequire": {
        "enabled": false
    },
    "restrictDevicesByBrand": {
        "enabled": true,
        "deviceBrandsAllowed": [
            "APPLE"
        ],
        "deviceModelsAllowed": [
            "iPhone 17e"
        ],
        "deviceBrandsDisAllowed": [
            "SAMSUNG",
            "HUAWEI"
        ]
    },
    "minimumOSVersionRequire": {
        "enabled": true,
        "ios": "18.4",
        "android": "15.0"
    },
    "deviceRequireBiometricsCapabilities": {
        "enabled": false
    },
    "deviceNotAllowedRootedOrJailBroken": {
        "enabled": false
    },
    "minimumPingIDAppVersionRequire": {
        "enabled": true,
        "android": "1.32.0",
        "ios": "1.33.0"
    },
    "mobileDeviceManagementRequire": {
        "enabled": true,
        "effectiveDate": "2025-01-13T11:29:11.943Z"
    }
}'
var options = new RestClientOptions("{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Put);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@"    ""deviceLockEnableRequire"": {" + "\n" +
@"        ""enabled"": false" + "\n" +
@"    }," + "\n" +
@"    ""restrictDevicesByBrand"": {" + "\n" +
@"        ""enabled"": true," + "\n" +
@"        ""deviceBrandsAllowed"": [" + "\n" +
@"            ""APPLE""" + "\n" +
@"        ]," + "\n" +
@"        ""deviceModelsAllowed"": [" + "\n" +
@"            ""iPhone 17e""" + "\n" +
@"        ]," + "\n" +
@"        ""deviceBrandsDisAllowed"": [" + "\n" +
@"            ""SAMSUNG""," + "\n" +
@"            ""HUAWEI""" + "\n" +
@"        ]" + "\n" +
@"    }," + "\n" +
@"    ""minimumOSVersionRequire"": {" + "\n" +
@"        ""enabled"": true," + "\n" +
@"        ""ios"": ""18.4""," + "\n" +
@"        ""android"": ""15.0""" + "\n" +
@"    }," + "\n" +
@"    ""deviceRequireBiometricsCapabilities"": {" + "\n" +
@"        ""enabled"": false" + "\n" +
@"    }," + "\n" +
@"    ""deviceNotAllowedRootedOrJailBroken"": {" + "\n" +
@"        ""enabled"": false" + "\n" +
@"    }," + "\n" +
@"    ""minimumPingIDAppVersionRequire"": {" + "\n" +
@"        ""enabled"": true," + "\n" +
@"        ""android"": ""1.32.0""," + "\n" +
@"        ""ios"": ""1.33.0""" + "\n" +
@"    }," + "\n" +
@"    ""mobileDeviceManagementRequire"": {" + "\n" +
@"        ""enabled"": true," + "\n" +
@"        ""effectiveDate"": ""2025-01-13T11:29:11.943Z""" + "\n" +
@"    }" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io"
)

func main() {

  url := "{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements"
  method := "PUT"

  payload := strings.NewReader(`{
    "deviceLockEnableRequire": {
        "enabled": false
    },
    "restrictDevicesByBrand": {
        "enabled": true,
        "deviceBrandsAllowed": [
            "APPLE"
        ],
        "deviceModelsAllowed": [
            "iPhone 17e"
        ],
        "deviceBrandsDisAllowed": [
            "SAMSUNG",
            "HUAWEI"
        ]
    },
    "minimumOSVersionRequire": {
        "enabled": true,
        "ios": "18.4",
        "android": "15.0"
    },
    "deviceRequireBiometricsCapabilities": {
        "enabled": false
    },
    "deviceNotAllowedRootedOrJailBroken": {
        "enabled": false
    },
    "minimumPingIDAppVersionRequire": {
        "enabled": true,
        "android": "1.32.0",
        "ios": "1.33.0"
    },
    "mobileDeviceManagementRequire": {
        "enabled": true,
        "effectiveDate": "2025-01-13T11:29:11.943Z"
    }
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Authorization", "Bearer {{accessToken}}")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := io.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
PUT /v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "deviceLockEnableRequire": {
        "enabled": false
    },
    "restrictDevicesByBrand": {
        "enabled": true,
        "deviceBrandsAllowed": [
            "APPLE"
        ],
        "deviceModelsAllowed": [
            "iPhone 17e"
        ],
        "deviceBrandsDisAllowed": [
            "SAMSUNG",
            "HUAWEI"
        ]
    },
    "minimumOSVersionRequire": {
        "enabled": true,
        "ios": "18.4",
        "android": "15.0"
    },
    "deviceRequireBiometricsCapabilities": {
        "enabled": false
    },
    "deviceNotAllowedRootedOrJailBroken": {
        "enabled": false
    },
    "minimumPingIDAppVersionRequire": {
        "enabled": true,
        "android": "1.32.0",
        "ios": "1.33.0"
    },
    "mobileDeviceManagementRequire": {
        "enabled": true,
        "effectiveDate": "2025-01-13T11:29:11.943Z"
    }
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"deviceLockEnableRequire\": {\n        \"enabled\": false\n    },\n    \"restrictDevicesByBrand\": {\n        \"enabled\": true,\n        \"deviceBrandsAllowed\": [\n            \"APPLE\"\n        ],\n        \"deviceModelsAllowed\": [\n            \"iPhone 17e\"\n        ],\n        \"deviceBrandsDisAllowed\": [\n            \"SAMSUNG\",\n            \"HUAWEI\"\n        ]\n    },\n    \"minimumOSVersionRequire\": {\n        \"enabled\": true,\n        \"ios\": \"18.4\",\n        \"android\": \"15.0\"\n    },\n    \"deviceRequireBiometricsCapabilities\": {\n        \"enabled\": false\n    },\n    \"deviceNotAllowedRootedOrJailBroken\": {\n        \"enabled\": false\n    },\n    \"minimumPingIDAppVersionRequire\": {\n        \"enabled\": true,\n        \"android\": \"1.32.0\",\n        \"ios\": \"1.33.0\"\n    },\n    \"mobileDeviceManagementRequire\": {\n        \"enabled\": true,\n        \"effectiveDate\": \"2025-01-13T11:29:11.943Z\"\n    }\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements")
  .method("PUT", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "deviceLockEnableRequire": {
      "enabled": false
    },
    "restrictDevicesByBrand": {
      "enabled": true,
      "deviceBrandsAllowed": [
        "APPLE"
      ],
      "deviceModelsAllowed": [
        "iPhone 17e"
      ],
      "deviceBrandsDisAllowed": [
        "SAMSUNG",
        "HUAWEI"
      ]
    },
    "minimumOSVersionRequire": {
      "enabled": true,
      "ios": "18.4",
      "android": "15.0"
    },
    "deviceRequireBiometricsCapabilities": {
      "enabled": false
    },
    "deviceNotAllowedRootedOrJailBroken": {
      "enabled": false
    },
    "minimumPingIDAppVersionRequire": {
      "enabled": true,
      "android": "1.32.0",
      "ios": "1.33.0"
    },
    "mobileDeviceManagementRequire": {
      "enabled": true,
      "effectiveDate": "2025-01-13T11:29:11.943Z"
    }
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "deviceLockEnableRequire": {
      "enabled": false
    },
    "restrictDevicesByBrand": {
      "enabled": true,
      "deviceBrandsAllowed": [
        "APPLE"
      ],
      "deviceModelsAllowed": [
        "iPhone 17e"
      ],
      "deviceBrandsDisAllowed": [
        "SAMSUNG",
        "HUAWEI"
      ]
    },
    "minimumOSVersionRequire": {
      "enabled": true,
      "ios": "18.4",
      "android": "15.0"
    },
    "deviceRequireBiometricsCapabilities": {
      "enabled": false
    },
    "deviceNotAllowedRootedOrJailBroken": {
      "enabled": false
    },
    "minimumPingIDAppVersionRequire": {
      "enabled": true,
      "android": "1.32.0",
      "ios": "1.33.0"
    },
    "mobileDeviceManagementRequire": {
      "enabled": true,
      "effectiveDate": "2025-01-13T11:29:11.943Z"
    }
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
import requests
import json

url = "{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements"

payload = json.dumps({
  "deviceLockEnableRequire": {
    "enabled": False
  },
  "restrictDevicesByBrand": {
    "enabled": True,
    "deviceBrandsAllowed": [
      "APPLE"
    ],
    "deviceModelsAllowed": [
      "iPhone 17e"
    ],
    "deviceBrandsDisAllowed": [
      "SAMSUNG",
      "HUAWEI"
    ]
  },
  "minimumOSVersionRequire": {
    "enabled": True,
    "ios": "18.4",
    "android": "15.0"
  },
  "deviceRequireBiometricsCapabilities": {
    "enabled": False
  },
  "deviceNotAllowedRootedOrJailBroken": {
    "enabled": False
  },
  "minimumPingIDAppVersionRequire": {
    "enabled": True,
    "android": "1.32.0",
    "ios": "1.33.0"
  },
  "mobileDeviceManagementRequire": {
    "enabled": True,
    "effectiveDate": "2025-01-13T11:29:11.943Z"
  }
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n    "deviceLockEnableRequire": {\n        "enabled": false\n    },\n    "restrictDevicesByBrand": {\n        "enabled": true,\n        "deviceBrandsAllowed": [\n            "APPLE"\n        ],\n        "deviceModelsAllowed": [\n            "iPhone 17e"\n        ],\n        "deviceBrandsDisAllowed": [\n            "SAMSUNG",\n            "HUAWEI"\n        ]\n    },\n    "minimumOSVersionRequire": {\n        "enabled": true,\n        "ios": "18.4",\n        "android": "15.0"\n    },\n    "deviceRequireBiometricsCapabilities": {\n        "enabled": false\n    },\n    "deviceNotAllowedRootedOrJailBroken": {\n        "enabled": false\n    },\n    "minimumPingIDAppVersionRequire": {\n        "enabled": true,\n        "android": "1.32.0",\n        "ios": "1.33.0"\n    },\n    "mobileDeviceManagementRequire": {\n        "enabled": true,\n        "effectiveDate": "2025-01-13T11:29:11.943Z"\n    }\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
require "uri"
require "json"
require "net/http"

url = URI("{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Put.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
  "deviceLockEnableRequire": {
    "enabled": false
  },
  "restrictDevicesByBrand": {
    "enabled": true,
    "deviceBrandsAllowed": [
      "APPLE"
    ],
    "deviceModelsAllowed": [
      "iPhone 17e"
    ],
    "deviceBrandsDisAllowed": [
      "SAMSUNG",
      "HUAWEI"
    ]
  },
  "minimumOSVersionRequire": {
    "enabled": true,
    "ios": "18.4",
    "android": "15.0"
  },
  "deviceRequireBiometricsCapabilities": {
    "enabled": false
  },
  "deviceNotAllowedRootedOrJailBroken": {
    "enabled": false
  },
  "minimumPingIDAppVersionRequire": {
    "enabled": true,
    "android": "1.32.0",
    "ios": "1.33.0"
  },
  "mobileDeviceManagementRequire": {
    "enabled": true,
    "effectiveDate": "2025-01-13T11:29:11.943Z"
  }
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"deviceLockEnableRequire\": {\n        \"enabled\": false\n    },\n    \"restrictDevicesByBrand\": {\n        \"enabled\": true,\n        \"deviceBrandsAllowed\": [\n            \"APPLE\"\n        ],\n        \"deviceModelsAllowed\": [\n            \"iPhone 17e\"\n        ],\n        \"deviceBrandsDisAllowed\": [\n            \"SAMSUNG\",\n            \"HUAWEI\"\n        ]\n    },\n    \"minimumOSVersionRequire\": {\n        \"enabled\": true,\n        \"ios\": \"18.4\",\n        \"android\": \"15.0\"\n    },\n    \"deviceRequireBiometricsCapabilities\": {\n        \"enabled\": false\n    },\n    \"deviceNotAllowedRootedOrJailBroken\": {\n        \"enabled\": false\n    },\n    \"minimumPingIDAppVersionRequire\": {\n        \"enabled\": true,\n        \"android\": \"1.32.0\",\n        \"ios\": \"1.33.0\"\n    },\n    \"mobileDeviceManagementRequire\": {\n        \"enabled\": true,\n        \"effectiveDate\": \"2025-01-13T11:29:11.943Z\"\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/v1/environments/{{envID}}/applications/{{pingAppID}}/deviceRequirements")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "PUT"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()

Example Response

200 OK

{
    "_links": {
        "self": {
            "href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/applications/cd4b4ff5-6972-464a-b853-6655077cd85f/deviceRequirements"
        },
        "environment": {
            "href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "application": {
            "href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/applications/cd4b4ff5-6972-464a-b853-6655077cd85f"
        }
    },
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "application": {
        "id": "cd4b4ff5-6972-464a-b853-6655077cd85f"
    },
    "deviceLockEnableRequire": {
        "enabled": false
    },
    "restrictDevicesByBrand": {
        "enabled": true,
        "deviceModelsAllowed": [
            "iPhone 17e"
        ],
        "deviceBrandsAllowed": [
            "APPLE"
        ],
        "deviceBrandsDisAllowed": [
            "SAMSUNG",
            "HUAWEI"
        ]
    },
    "minimumOSVersionRequire": {
        "enabled": true,
        "android": "15.0",
        "ios": "18.4"
    },
    "deviceRequireBiometricsCapabilities": {
        "enabled": false
    },
    "deviceNotAllowedRootedOrJailBroken": {
        "enabled": false
    },
    "minimumPingIDAppVersionRequire": {
        "enabled": true,
        "android": "1.32.0",
        "ios": "1.33.0"
    },
    "mobileDeviceManagementRequire": {
        "enabled": true,
        "effectiveDate": "2025-01-13T11:29:11.943Z",
        "tokens": [
            {
                "token": "89b2fa74-b6c8-4bd0-9096-611b65917bd0",
                "creationTime": "2025-01-13T11:29:18.447Z"
            }
        ]
    },
    "updatedAt": "2026-05-17T13:01:10.324Z"
}