PingOne Platform APIs

Update Device Authentication Policy (env with PingID integration)

 

PUT {{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}

This example uses the deviceAuthenticationPolicies endpoint to update the default policy in a PingOne environment where a PingID account has been integrated:

PUT {{apiPath}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}

The ID of the device authentication policy can be copied from the PingOne console, or can be obtained by running the relevant GET request: GET {{apiPath}}/environments/{{envID}}/deviceAuthenticationPolicies

Note that for updating the default policy in such an environment, the body of the request must include the default parameter set to true.

Prerequisites

Request Model

| Property | Type | Required? | |--|--|--| |default|Boolean | Required | |desktop| Object | Optional | |email| Object | Required | |fido2| Object | Required | |forSignOnPolicy| Boolean | Optional | |mobile| Object | Required | |name|String|Required | |newDeviceNotification|String| Optional | |oathToken| Object | Optional | |sms| Object | Required | |totp| Object | Required | |voice| Object | Required | |yubikey| Object | Optional |

Refer to the Device authentication policy data model for full property descriptions.

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "deviceAuthPolicy__{{$timestamp}}",
    "email": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 15,
                "timeUnit": "MINUTES"
            },
            "otpLength": 8
        }
    },
    "sms": {
        "enabled": false,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength":6
        }
    },
    "voice": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength": 6
        }
    },
    "mobile":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "promptForNicknameOnPairing":true,
        "applications":[
            {
                "id":"d1457f48-3403-46fe-9f8b-0121f2736da1",
                "type":"pingIdAppConfig",
                "push":{
                    "enabled":true,
                    "numberMatching":{
                        "enabled":true
                    }
                },
                "biometricsEnabled":true,
                "otp":{
                    "enabled":true
                },
                "pairingKeyLifetime":{
                    "timeUnit":"HOURS",
                    "duration":18
                },
                "pushLimit":{
                    "count":3,
                    "timePeriod":{
                        "duration":10,
                        "timeUnit":"MINUTES"
                    },"lockDuration":{
                        "duration":30,
                        "timeUnit":"MINUTES"
                    }
                },
                "newRequestDurationConfiguration":{
                    "deviceTimeout":{
                        "duration":30,
                        "timeUnit":"SECONDS"
                    },
                    "totalTimeout":{
                        "duration":70,
                        "timeUnit":"SECONDS"
                    }
                },
                "ipPairingConfiguration":{
                    "anyIPAdress":true
                },
                "name":"PingID Mobile"}
            ],
            "pairingDisabled":false
    },
    "totp": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        },
        "uriParameters": {
            "issuer": "Corporate spreadsheet app"
        }
    },
    "desktop":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingKeyLifetime":{
            "duration":48,
            "timeUnit":"HOURS"
        },
        "pairingDisabled":false
    },
    "yubikey":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingDisabled":false,
        "promptForNicknameOnPairing":true
    },
    "oathToken":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingDisabled":false
    },
    "fido2": {
        "enabled": true,
        "promptForNicknameOnPairing": true
    },
    "newDeviceNotification": "SMS_THEN_EMAIL",
    "forSignOnPolicy": false,
    "default": true
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "deviceAuthPolicy__{{$timestamp}}",
    "email": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 15,
                "timeUnit": "MINUTES"
            },
            "otpLength": 8
        }
    },
    "sms": {
        "enabled": false,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength":6
        }
    },
    "voice": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength": 6
        }
    },
    "mobile":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "promptForNicknameOnPairing":true,
        "applications":[
            {
                "id":"d1457f48-3403-46fe-9f8b-0121f2736da1",
                "type":"pingIdAppConfig",
                "push":{
                    "enabled":true,
                    "numberMatching":{
                        "enabled":true
                    }
                },
                "biometricsEnabled":true,
                "otp":{
                    "enabled":true
                },
                "pairingKeyLifetime":{
                    "timeUnit":"HOURS",
                    "duration":18
                },
                "pushLimit":{
                    "count":3,
                    "timePeriod":{
                        "duration":10,
                        "timeUnit":"MINUTES"
                    },"lockDuration":{
                        "duration":30,
                        "timeUnit":"MINUTES"
                    }
                },
                "newRequestDurationConfiguration":{
                    "deviceTimeout":{
                        "duration":30,
                        "timeUnit":"SECONDS"
                    },
                    "totalTimeout":{
                        "duration":70,
                        "timeUnit":"SECONDS"
                    }
                },
                "ipPairingConfiguration":{
                    "anyIPAdress":true
                },
                "name":"PingID Mobile"}
            ],
            "pairingDisabled":false
    },
    "totp": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        },
        "uriParameters": {
            "issuer": "Corporate spreadsheet app"
        }
    },
    "desktop":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingKeyLifetime":{
            "duration":48,
            "timeUnit":"HOURS"
        },
        "pairingDisabled":false
    },
    "yubikey":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingDisabled":false,
        "promptForNicknameOnPairing":true
    },
    "oathToken":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingDisabled":false
    },
    "fido2": {
        "enabled": true,
        "promptForNicknameOnPairing": true
    },
    "newDeviceNotification": "SMS_THEN_EMAIL",
    "forSignOnPolicy": false,
    "default": true
}'
var options = new RestClientOptions("{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}")
{
  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" +
@"    ""name"": ""deviceAuthPolicy__{{$timestamp}}""," + "\n" +
@"    ""email"": {" + "\n" +
@"        ""enabled"": true," + "\n" +
@"        ""otp"": {" + "\n" +
@"            ""failure"": {" + "\n" +
@"                ""count"": 3," + "\n" +
@"                ""coolDown"": {" + "\n" +
@"                    ""duration"": 0," + "\n" +
@"                    ""timeUnit"": ""MINUTES""" + "\n" +
@"                }" + "\n" +
@"            }," + "\n" +
@"            ""lifeTime"": {" + "\n" +
@"                ""duration"": 15," + "\n" +
@"                ""timeUnit"": ""MINUTES""" + "\n" +
@"            }," + "\n" +
@"            ""otpLength"": 8" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""sms"": {" + "\n" +
@"        ""enabled"": false," + "\n" +
@"        ""otp"": {" + "\n" +
@"            ""failure"": {" + "\n" +
@"                ""count"": 3," + "\n" +
@"                ""coolDown"": {" + "\n" +
@"                    ""duration"": 0," + "\n" +
@"                    ""timeUnit"": ""MINUTES""" + "\n" +
@"                }" + "\n" +
@"            }," + "\n" +
@"            ""lifeTime"": {" + "\n" +
@"                ""duration"": 30," + "\n" +
@"                ""timeUnit"": ""MINUTES""" + "\n" +
@"            }," + "\n" +
@"            ""otpLength"":6" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""voice"": {" + "\n" +
@"        ""enabled"": true," + "\n" +
@"        ""otp"": {" + "\n" +
@"            ""failure"": {" + "\n" +
@"                ""count"": 3," + "\n" +
@"                ""coolDown"": {" + "\n" +
@"                    ""duration"": 0," + "\n" +
@"                    ""timeUnit"": ""MINUTES""" + "\n" +
@"                }" + "\n" +
@"            }," + "\n" +
@"            ""lifeTime"": {" + "\n" +
@"                ""duration"": 30," + "\n" +
@"                ""timeUnit"": ""MINUTES""" + "\n" +
@"            }," + "\n" +
@"            ""otpLength"": 6" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""mobile"":{" + "\n" +
@"        ""enabled"":true," + "\n" +
@"        ""otp"":{" + "\n" +
@"            ""failure"":{" + "\n" +
@"                ""count"":3," + "\n" +
@"                ""coolDown"":{" + "\n" +
@"                    ""duration"":2," + "\n" +
@"                    ""timeUnit"":""MINUTES""" + "\n" +
@"                }" + "\n" +
@"            }" + "\n" +
@"        }," + "\n" +
@"        ""promptForNicknameOnPairing"":true," + "\n" +
@"        ""applications"":[" + "\n" +
@"            {" + "\n" +
@"                ""id"":""d1457f48-3403-46fe-9f8b-0121f2736da1""," + "\n" +
@"                ""type"":""pingIdAppConfig""," + "\n" +
@"                ""push"":{" + "\n" +
@"                    ""enabled"":true," + "\n" +
@"                    ""numberMatching"":{" + "\n" +
@"                        ""enabled"":true" + "\n" +
@"                    }" + "\n" +
@"                }," + "\n" +
@"                ""biometricsEnabled"":true," + "\n" +
@"                ""otp"":{" + "\n" +
@"                    ""enabled"":true" + "\n" +
@"                }," + "\n" +
@"                ""pairingKeyLifetime"":{" + "\n" +
@"                    ""timeUnit"":""HOURS""," + "\n" +
@"                    ""duration"":18" + "\n" +
@"                }," + "\n" +
@"                ""pushLimit"":{" + "\n" +
@"                    ""count"":3," + "\n" +
@"                    ""timePeriod"":{" + "\n" +
@"                        ""duration"":10," + "\n" +
@"                        ""timeUnit"":""MINUTES""" + "\n" +
@"                    },""lockDuration"":{" + "\n" +
@"                        ""duration"":30," + "\n" +
@"                        ""timeUnit"":""MINUTES""" + "\n" +
@"                    }" + "\n" +
@"                }," + "\n" +
@"                ""newRequestDurationConfiguration"":{" + "\n" +
@"                    ""deviceTimeout"":{" + "\n" +
@"                        ""duration"":30," + "\n" +
@"                        ""timeUnit"":""SECONDS""" + "\n" +
@"                    }," + "\n" +
@"                    ""totalTimeout"":{" + "\n" +
@"                        ""duration"":70," + "\n" +
@"                        ""timeUnit"":""SECONDS""" + "\n" +
@"                    }" + "\n" +
@"                }," + "\n" +
@"                ""ipPairingConfiguration"":{" + "\n" +
@"                    ""anyIPAdress"":true" + "\n" +
@"                }," + "\n" +
@"                ""name"":""PingID Mobile""}" + "\n" +
@"            ]," + "\n" +
@"            ""pairingDisabled"":false" + "\n" +
@"    }," + "\n" +
@"    ""totp"": {" + "\n" +
@"        ""enabled"": true," + "\n" +
@"        ""otp"": {" + "\n" +
@"            ""failure"": {" + "\n" +
@"                ""count"": 3," + "\n" +
@"                ""coolDown"": {" + "\n" +
@"                    ""duration"": 2," + "\n" +
@"                    ""timeUnit"": ""MINUTES""" + "\n" +
@"                }" + "\n" +
@"            }" + "\n" +
@"        }," + "\n" +
@"        ""uriParameters"": {" + "\n" +
@"            ""issuer"": ""Corporate spreadsheet app""" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""desktop"":{" + "\n" +
@"        ""enabled"":true," + "\n" +
@"        ""otp"":{" + "\n" +
@"            ""failure"":{" + "\n" +
@"                ""count"":3," + "\n" +
@"                ""coolDown"":{" + "\n" +
@"                    ""duration"":2," + "\n" +
@"                    ""timeUnit"":""MINUTES""" + "\n" +
@"                }" + "\n" +
@"            }" + "\n" +
@"        }," + "\n" +
@"        ""pairingKeyLifetime"":{" + "\n" +
@"            ""duration"":48," + "\n" +
@"            ""timeUnit"":""HOURS""" + "\n" +
@"        }," + "\n" +
@"        ""pairingDisabled"":false" + "\n" +
@"    }," + "\n" +
@"    ""yubikey"":{" + "\n" +
@"        ""enabled"":true," + "\n" +
@"        ""otp"":{" + "\n" +
@"            ""failure"":{" + "\n" +
@"                ""count"":3," + "\n" +
@"                ""coolDown"":{" + "\n" +
@"                    ""duration"":2," + "\n" +
@"                    ""timeUnit"":""MINUTES""" + "\n" +
@"                }" + "\n" +
@"            }" + "\n" +
@"        }," + "\n" +
@"        ""pairingDisabled"":false," + "\n" +
@"        ""promptForNicknameOnPairing"":true" + "\n" +
@"    }," + "\n" +
@"    ""oathToken"":{" + "\n" +
@"        ""enabled"":true," + "\n" +
@"        ""otp"":{" + "\n" +
@"            ""failure"":{" + "\n" +
@"                ""count"":3," + "\n" +
@"                ""coolDown"":{" + "\n" +
@"                    ""duration"":2," + "\n" +
@"                    ""timeUnit"":""MINUTES""" + "\n" +
@"                }" + "\n" +
@"            }" + "\n" +
@"        }," + "\n" +
@"        ""pairingDisabled"":false" + "\n" +
@"    }," + "\n" +
@"    ""fido2"": {" + "\n" +
@"        ""enabled"": true," + "\n" +
@"        ""promptForNicknameOnPairing"": true" + "\n" +
@"    }," + "\n" +
@"    ""newDeviceNotification"": ""SMS_THEN_EMAIL""," + "\n" +
@"    ""forSignOnPolicy"": false," + "\n" +
@"    ""default"": true" + "\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 := "{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "name": "deviceAuthPolicy__{{$timestamp}}",
    "email": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 15,
                "timeUnit": "MINUTES"
            },
            "otpLength": 8
        }
    },
    "sms": {
        "enabled": false,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength":6
        }
    },
    "voice": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength": 6
        }
    },
    "mobile":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "promptForNicknameOnPairing":true,
        "applications":[
            {
                "id":"d1457f48-3403-46fe-9f8b-0121f2736da1",
                "type":"pingIdAppConfig",
                "push":{
                    "enabled":true,
                    "numberMatching":{
                        "enabled":true
                    }
                },
                "biometricsEnabled":true,
                "otp":{
                    "enabled":true
                },
                "pairingKeyLifetime":{
                    "timeUnit":"HOURS",
                    "duration":18
                },
                "pushLimit":{
                    "count":3,
                    "timePeriod":{
                        "duration":10,
                        "timeUnit":"MINUTES"
                    },"lockDuration":{
                        "duration":30,
                        "timeUnit":"MINUTES"
                    }
                },
                "newRequestDurationConfiguration":{
                    "deviceTimeout":{
                        "duration":30,
                        "timeUnit":"SECONDS"
                    },
                    "totalTimeout":{
                        "duration":70,
                        "timeUnit":"SECONDS"
                    }
                },
                "ipPairingConfiguration":{
                    "anyIPAdress":true
                },
                "name":"PingID Mobile"}
            ],
            "pairingDisabled":false
    },
    "totp": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        },
        "uriParameters": {
            "issuer": "Corporate spreadsheet app"
        }
    },
    "desktop":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingKeyLifetime":{
            "duration":48,
            "timeUnit":"HOURS"
        },
        "pairingDisabled":false
    },
    "yubikey":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingDisabled":false,
        "promptForNicknameOnPairing":true
    },
    "oathToken":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingDisabled":false
    },
    "fido2": {
        "enabled": true,
        "promptForNicknameOnPairing": true
    },
    "newDeviceNotification": "SMS_THEN_EMAIL",
    "forSignOnPolicy": false,
    "default": true
}`)

  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 /environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}} HTTP/1.1
Host: {{apiPathTest}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "name": "deviceAuthPolicy__{{$timestamp}}",
    "email": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 15,
                "timeUnit": "MINUTES"
            },
            "otpLength": 8
        }
    },
    "sms": {
        "enabled": false,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength":6
        }
    },
    "voice": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength": 6
        }
    },
    "mobile":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "promptForNicknameOnPairing":true,
        "applications":[
            {
                "id":"d1457f48-3403-46fe-9f8b-0121f2736da1",
                "type":"pingIdAppConfig",
                "push":{
                    "enabled":true,
                    "numberMatching":{
                        "enabled":true
                    }
                },
                "biometricsEnabled":true,
                "otp":{
                    "enabled":true
                },
                "pairingKeyLifetime":{
                    "timeUnit":"HOURS",
                    "duration":18
                },
                "pushLimit":{
                    "count":3,
                    "timePeriod":{
                        "duration":10,
                        "timeUnit":"MINUTES"
                    },"lockDuration":{
                        "duration":30,
                        "timeUnit":"MINUTES"
                    }
                },
                "newRequestDurationConfiguration":{
                    "deviceTimeout":{
                        "duration":30,
                        "timeUnit":"SECONDS"
                    },
                    "totalTimeout":{
                        "duration":70,
                        "timeUnit":"SECONDS"
                    }
                },
                "ipPairingConfiguration":{
                    "anyIPAdress":true
                },
                "name":"PingID Mobile"}
            ],
            "pairingDisabled":false
    },
    "totp": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        },
        "uriParameters": {
            "issuer": "Corporate spreadsheet app"
        }
    },
    "desktop":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingKeyLifetime":{
            "duration":48,
            "timeUnit":"HOURS"
        },
        "pairingDisabled":false
    },
    "yubikey":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingDisabled":false,
        "promptForNicknameOnPairing":true
    },
    "oathToken":{
        "enabled":true,
        "otp":{
            "failure":{
                "count":3,
                "coolDown":{
                    "duration":2,
                    "timeUnit":"MINUTES"
                }
            }
        },
        "pairingDisabled":false
    },
    "fido2": {
        "enabled": true,
        "promptForNicknameOnPairing": true
    },
    "newDeviceNotification": "SMS_THEN_EMAIL",
    "forSignOnPolicy": false,
    "default": true
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"deviceAuthPolicy__{{$timestamp}}\",\n    \"email\": {\n        \"enabled\": true,\n        \"otp\": {\n            \"failure\": {\n                \"count\": 3,\n                \"coolDown\": {\n                    \"duration\": 0,\n                    \"timeUnit\": \"MINUTES\"\n                }\n            },\n            \"lifeTime\": {\n                \"duration\": 15,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"otpLength\": 8\n        }\n    },\n    \"sms\": {\n        \"enabled\": false,\n        \"otp\": {\n            \"failure\": {\n                \"count\": 3,\n                \"coolDown\": {\n                    \"duration\": 0,\n                    \"timeUnit\": \"MINUTES\"\n                }\n            },\n            \"lifeTime\": {\n                \"duration\": 30,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"otpLength\":6\n        }\n    },\n    \"voice\": {\n        \"enabled\": true,\n        \"otp\": {\n            \"failure\": {\n                \"count\": 3,\n                \"coolDown\": {\n                    \"duration\": 0,\n                    \"timeUnit\": \"MINUTES\"\n                }\n            },\n            \"lifeTime\": {\n                \"duration\": 30,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"otpLength\": 6\n        }\n    },\n    \"mobile\":{\n        \"enabled\":true,\n        \"otp\":{\n            \"failure\":{\n                \"count\":3,\n                \"coolDown\":{\n                    \"duration\":2,\n                    \"timeUnit\":\"MINUTES\"\n                }\n            }\n        },\n        \"promptForNicknameOnPairing\":true,\n        \"applications\":[\n            {\n                \"id\":\"d1457f48-3403-46fe-9f8b-0121f2736da1\",\n                \"type\":\"pingIdAppConfig\",\n                \"push\":{\n                    \"enabled\":true,\n                    \"numberMatching\":{\n                        \"enabled\":true\n                    }\n                },\n                \"biometricsEnabled\":true,\n                \"otp\":{\n                    \"enabled\":true\n                },\n                \"pairingKeyLifetime\":{\n                    \"timeUnit\":\"HOURS\",\n                    \"duration\":18\n                },\n                \"pushLimit\":{\n                    \"count\":3,\n                    \"timePeriod\":{\n                        \"duration\":10,\n                        \"timeUnit\":\"MINUTES\"\n                    },\"lockDuration\":{\n                        \"duration\":30,\n                        \"timeUnit\":\"MINUTES\"\n                    }\n                },\n                \"newRequestDurationConfiguration\":{\n                    \"deviceTimeout\":{\n                        \"duration\":30,\n                        \"timeUnit\":\"SECONDS\"\n                    },\n                    \"totalTimeout\":{\n                        \"duration\":70,\n                        \"timeUnit\":\"SECONDS\"\n                    }\n                },\n                \"ipPairingConfiguration\":{\n                    \"anyIPAdress\":true\n                },\n                \"name\":\"PingID Mobile\"}\n            ],\n            \"pairingDisabled\":false\n    },\n    \"totp\": {\n        \"enabled\": true,\n        \"otp\": {\n            \"failure\": {\n                \"count\": 3,\n                \"coolDown\": {\n                    \"duration\": 2,\n                    \"timeUnit\": \"MINUTES\"\n                }\n            }\n        },\n        \"uriParameters\": {\n            \"issuer\": \"Corporate spreadsheet app\"\n        }\n    },\n    \"desktop\":{\n        \"enabled\":true,\n        \"otp\":{\n            \"failure\":{\n                \"count\":3,\n                \"coolDown\":{\n                    \"duration\":2,\n                    \"timeUnit\":\"MINUTES\"\n                }\n            }\n        },\n        \"pairingKeyLifetime\":{\n            \"duration\":48,\n            \"timeUnit\":\"HOURS\"\n        },\n        \"pairingDisabled\":false\n    },\n    \"yubikey\":{\n        \"enabled\":true,\n        \"otp\":{\n            \"failure\":{\n                \"count\":3,\n                \"coolDown\":{\n                    \"duration\":2,\n                    \"timeUnit\":\"MINUTES\"\n                }\n            }\n        },\n        \"pairingDisabled\":false,\n        \"promptForNicknameOnPairing\":true\n    },\n    \"oathToken\":{\n        \"enabled\":true,\n        \"otp\":{\n            \"failure\":{\n                \"count\":3,\n                \"coolDown\":{\n                    \"duration\":2,\n                    \"timeUnit\":\"MINUTES\"\n                }\n            }\n        },\n        \"pairingDisabled\":false\n    },\n    \"fido2\": {\n        \"enabled\": true,\n        \"promptForNicknameOnPairing\": true\n    },\n    \"newDeviceNotification\": \"SMS_THEN_EMAIL\",\n    \"forSignOnPolicy\": false,\n    \"default\": true\n}");
Request request = new Request.Builder()
  .url("{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}")
  .method("PUT", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "deviceAuthPolicy__{{$timestamp}}",
    "email": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 0,
            "timeUnit": "MINUTES"
          }
        },
        "lifeTime": {
          "duration": 15,
          "timeUnit": "MINUTES"
        },
        "otpLength": 8
      }
    },
    "sms": {
      "enabled": false,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 0,
            "timeUnit": "MINUTES"
          }
        },
        "lifeTime": {
          "duration": 30,
          "timeUnit": "MINUTES"
        },
        "otpLength": 6
      }
    },
    "voice": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 0,
            "timeUnit": "MINUTES"
          }
        },
        "lifeTime": {
          "duration": 30,
          "timeUnit": "MINUTES"
        },
        "otpLength": 6
      }
    },
    "mobile": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "promptForNicknameOnPairing": true,
      "applications": [
        {
          "id": "d1457f48-3403-46fe-9f8b-0121f2736da1",
          "type": "pingIdAppConfig",
          "push": {
            "enabled": true,
            "numberMatching": {
              "enabled": true
            }
          },
          "biometricsEnabled": true,
          "otp": {
            "enabled": true
          },
          "pairingKeyLifetime": {
            "timeUnit": "HOURS",
            "duration": 18
          },
          "pushLimit": {
            "count": 3,
            "timePeriod": {
              "duration": 10,
              "timeUnit": "MINUTES"
            },
            "lockDuration": {
              "duration": 30,
              "timeUnit": "MINUTES"
            }
          },
          "newRequestDurationConfiguration": {
            "deviceTimeout": {
              "duration": 30,
              "timeUnit": "SECONDS"
            },
            "totalTimeout": {
              "duration": 70,
              "timeUnit": "SECONDS"
            }
          },
          "ipPairingConfiguration": {
            "anyIPAdress": true
          },
          "name": "PingID Mobile"
        }
      ],
      "pairingDisabled": false
    },
    "totp": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "uriParameters": {
        "issuer": "Corporate spreadsheet app"
      }
    },
    "desktop": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "pairingKeyLifetime": {
        "duration": 48,
        "timeUnit": "HOURS"
      },
      "pairingDisabled": false
    },
    "yubikey": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "pairingDisabled": false,
      "promptForNicknameOnPairing": true
    },
    "oathToken": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "pairingDisabled": false
    },
    "fido2": {
      "enabled": true,
      "promptForNicknameOnPairing": true
    },
    "newDeviceNotification": "SMS_THEN_EMAIL",
    "forSignOnPolicy": false,
    "default": true
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "deviceAuthPolicy__{{$timestamp}}",
    "email": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 0,
            "timeUnit": "MINUTES"
          }
        },
        "lifeTime": {
          "duration": 15,
          "timeUnit": "MINUTES"
        },
        "otpLength": 8
      }
    },
    "sms": {
      "enabled": false,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 0,
            "timeUnit": "MINUTES"
          }
        },
        "lifeTime": {
          "duration": 30,
          "timeUnit": "MINUTES"
        },
        "otpLength": 6
      }
    },
    "voice": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 0,
            "timeUnit": "MINUTES"
          }
        },
        "lifeTime": {
          "duration": 30,
          "timeUnit": "MINUTES"
        },
        "otpLength": 6
      }
    },
    "mobile": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "promptForNicknameOnPairing": true,
      "applications": [
        {
          "id": "d1457f48-3403-46fe-9f8b-0121f2736da1",
          "type": "pingIdAppConfig",
          "push": {
            "enabled": true,
            "numberMatching": {
              "enabled": true
            }
          },
          "biometricsEnabled": true,
          "otp": {
            "enabled": true
          },
          "pairingKeyLifetime": {
            "timeUnit": "HOURS",
            "duration": 18
          },
          "pushLimit": {
            "count": 3,
            "timePeriod": {
              "duration": 10,
              "timeUnit": "MINUTES"
            },
            "lockDuration": {
              "duration": 30,
              "timeUnit": "MINUTES"
            }
          },
          "newRequestDurationConfiguration": {
            "deviceTimeout": {
              "duration": 30,
              "timeUnit": "SECONDS"
            },
            "totalTimeout": {
              "duration": 70,
              "timeUnit": "SECONDS"
            }
          },
          "ipPairingConfiguration": {
            "anyIPAdress": true
          },
          "name": "PingID Mobile"
        }
      ],
      "pairingDisabled": false
    },
    "totp": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "uriParameters": {
        "issuer": "Corporate spreadsheet app"
      }
    },
    "desktop": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "pairingKeyLifetime": {
        "duration": 48,
        "timeUnit": "HOURS"
      },
      "pairingDisabled": false
    },
    "yubikey": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "pairingDisabled": false,
      "promptForNicknameOnPairing": true
    },
    "oathToken": {
      "enabled": true,
      "otp": {
        "failure": {
          "count": 3,
          "coolDown": {
            "duration": 2,
            "timeUnit": "MINUTES"
          }
        }
      },
      "pairingDisabled": false
    },
    "fido2": {
      "enabled": true,
      "promptForNicknameOnPairing": true
    },
    "newDeviceNotification": "SMS_THEN_EMAIL",
    "forSignOnPolicy": false,
    "default": true
  })

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

url = "{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}"

payload = json.dumps({
  "name": "deviceAuthPolicy__{{$timestamp}}",
  "email": {
    "enabled": True,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 0,
          "timeUnit": "MINUTES"
        }
      },
      "lifeTime": {
        "duration": 15,
        "timeUnit": "MINUTES"
      },
      "otpLength": 8
    }
  },
  "sms": {
    "enabled": False,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 0,
          "timeUnit": "MINUTES"
        }
      },
      "lifeTime": {
        "duration": 30,
        "timeUnit": "MINUTES"
      },
      "otpLength": 6
    }
  },
  "voice": {
    "enabled": True,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 0,
          "timeUnit": "MINUTES"
        }
      },
      "lifeTime": {
        "duration": 30,
        "timeUnit": "MINUTES"
      },
      "otpLength": 6
    }
  },
  "mobile": {
    "enabled": True,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "promptForNicknameOnPairing": True,
    "applications": [
      {
        "id": "d1457f48-3403-46fe-9f8b-0121f2736da1",
        "type": "pingIdAppConfig",
        "push": {
          "enabled": True,
          "numberMatching": {
            "enabled": True
          }
        },
        "biometricsEnabled": True,
        "otp": {
          "enabled": True
        },
        "pairingKeyLifetime": {
          "timeUnit": "HOURS",
          "duration": 18
        },
        "pushLimit": {
          "count": 3,
          "timePeriod": {
            "duration": 10,
            "timeUnit": "MINUTES"
          },
          "lockDuration": {
            "duration": 30,
            "timeUnit": "MINUTES"
          }
        },
        "newRequestDurationConfiguration": {
          "deviceTimeout": {
            "duration": 30,
            "timeUnit": "SECONDS"
          },
          "totalTimeout": {
            "duration": 70,
            "timeUnit": "SECONDS"
          }
        },
        "ipPairingConfiguration": {
          "anyIPAdress": True
        },
        "name": "PingID Mobile"
      }
    ],
    "pairingDisabled": False
  },
  "totp": {
    "enabled": True,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "uriParameters": {
      "issuer": "Corporate spreadsheet app"
    }
  },
  "desktop": {
    "enabled": True,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "pairingKeyLifetime": {
      "duration": 48,
      "timeUnit": "HOURS"
    },
    "pairingDisabled": False
  },
  "yubikey": {
    "enabled": True,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "pairingDisabled": False,
    "promptForNicknameOnPairing": True
  },
  "oathToken": {
    "enabled": True,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "pairingDisabled": False
  },
  "fido2": {
    "enabled": True,
    "promptForNicknameOnPairing": True
  },
  "newDeviceNotification": "SMS_THEN_EMAIL",
  "forSignOnPolicy": False,
  "default": True
})
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('{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}');
$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    "name": "deviceAuthPolicy__{{$timestamp}}",\n    "email": {\n        "enabled": true,\n        "otp": {\n            "failure": {\n                "count": 3,\n                "coolDown": {\n                    "duration": 0,\n                    "timeUnit": "MINUTES"\n                }\n            },\n            "lifeTime": {\n                "duration": 15,\n                "timeUnit": "MINUTES"\n            },\n            "otpLength": 8\n        }\n    },\n    "sms": {\n        "enabled": false,\n        "otp": {\n            "failure": {\n                "count": 3,\n                "coolDown": {\n                    "duration": 0,\n                    "timeUnit": "MINUTES"\n                }\n            },\n            "lifeTime": {\n                "duration": 30,\n                "timeUnit": "MINUTES"\n            },\n            "otpLength":6\n        }\n    },\n    "voice": {\n        "enabled": true,\n        "otp": {\n            "failure": {\n                "count": 3,\n                "coolDown": {\n                    "duration": 0,\n                    "timeUnit": "MINUTES"\n                }\n            },\n            "lifeTime": {\n                "duration": 30,\n                "timeUnit": "MINUTES"\n            },\n            "otpLength": 6\n        }\n    },\n    "mobile":{\n        "enabled":true,\n        "otp":{\n            "failure":{\n                "count":3,\n                "coolDown":{\n                    "duration":2,\n                    "timeUnit":"MINUTES"\n                }\n            }\n        },\n        "promptForNicknameOnPairing":true,\n        "applications":[\n            {\n                "id":"d1457f48-3403-46fe-9f8b-0121f2736da1",\n                "type":"pingIdAppConfig",\n                "push":{\n                    "enabled":true,\n                    "numberMatching":{\n                        "enabled":true\n                    }\n                },\n                "biometricsEnabled":true,\n                "otp":{\n                    "enabled":true\n                },\n                "pairingKeyLifetime":{\n                    "timeUnit":"HOURS",\n                    "duration":18\n                },\n                "pushLimit":{\n                    "count":3,\n                    "timePeriod":{\n                        "duration":10,\n                        "timeUnit":"MINUTES"\n                    },"lockDuration":{\n                        "duration":30,\n                        "timeUnit":"MINUTES"\n                    }\n                },\n                "newRequestDurationConfiguration":{\n                    "deviceTimeout":{\n                        "duration":30,\n                        "timeUnit":"SECONDS"\n                    },\n                    "totalTimeout":{\n                        "duration":70,\n                        "timeUnit":"SECONDS"\n                    }\n                },\n                "ipPairingConfiguration":{\n                    "anyIPAdress":true\n                },\n                "name":"PingID Mobile"}\n            ],\n            "pairingDisabled":false\n    },\n    "totp": {\n        "enabled": true,\n        "otp": {\n            "failure": {\n                "count": 3,\n                "coolDown": {\n                    "duration": 2,\n                    "timeUnit": "MINUTES"\n                }\n            }\n        },\n        "uriParameters": {\n            "issuer": "Corporate spreadsheet app"\n        }\n    },\n    "desktop":{\n        "enabled":true,\n        "otp":{\n            "failure":{\n                "count":3,\n                "coolDown":{\n                    "duration":2,\n                    "timeUnit":"MINUTES"\n                }\n            }\n        },\n        "pairingKeyLifetime":{\n            "duration":48,\n            "timeUnit":"HOURS"\n        },\n        "pairingDisabled":false\n    },\n    "yubikey":{\n        "enabled":true,\n        "otp":{\n            "failure":{\n                "count":3,\n                "coolDown":{\n                    "duration":2,\n                    "timeUnit":"MINUTES"\n                }\n            }\n        },\n        "pairingDisabled":false,\n        "promptForNicknameOnPairing":true\n    },\n    "oathToken":{\n        "enabled":true,\n        "otp":{\n            "failure":{\n                "count":3,\n                "coolDown":{\n                    "duration":2,\n                    "timeUnit":"MINUTES"\n                }\n            }\n        },\n        "pairingDisabled":false\n    },\n    "fido2": {\n        "enabled": true,\n        "promptForNicknameOnPairing": true\n    },\n    "newDeviceNotification": "SMS_THEN_EMAIL",\n    "forSignOnPolicy": false,\n    "default": true\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("{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}")

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({
  "name": "deviceAuthPolicy__{{\$timestamp}}",
  "email": {
    "enabled": true,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 0,
          "timeUnit": "MINUTES"
        }
      },
      "lifeTime": {
        "duration": 15,
        "timeUnit": "MINUTES"
      },
      "otpLength": 8
    }
  },
  "sms": {
    "enabled": false,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 0,
          "timeUnit": "MINUTES"
        }
      },
      "lifeTime": {
        "duration": 30,
        "timeUnit": "MINUTES"
      },
      "otpLength": 6
    }
  },
  "voice": {
    "enabled": true,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 0,
          "timeUnit": "MINUTES"
        }
      },
      "lifeTime": {
        "duration": 30,
        "timeUnit": "MINUTES"
      },
      "otpLength": 6
    }
  },
  "mobile": {
    "enabled": true,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "promptForNicknameOnPairing": true,
    "applications": [
      {
        "id": "d1457f48-3403-46fe-9f8b-0121f2736da1",
        "type": "pingIdAppConfig",
        "push": {
          "enabled": true,
          "numberMatching": {
            "enabled": true
          }
        },
        "biometricsEnabled": true,
        "otp": {
          "enabled": true
        },
        "pairingKeyLifetime": {
          "timeUnit": "HOURS",
          "duration": 18
        },
        "pushLimit": {
          "count": 3,
          "timePeriod": {
            "duration": 10,
            "timeUnit": "MINUTES"
          },
          "lockDuration": {
            "duration": 30,
            "timeUnit": "MINUTES"
          }
        },
        "newRequestDurationConfiguration": {
          "deviceTimeout": {
            "duration": 30,
            "timeUnit": "SECONDS"
          },
          "totalTimeout": {
            "duration": 70,
            "timeUnit": "SECONDS"
          }
        },
        "ipPairingConfiguration": {
          "anyIPAdress": true
        },
        "name": "PingID Mobile"
      }
    ],
    "pairingDisabled": false
  },
  "totp": {
    "enabled": true,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "uriParameters": {
      "issuer": "Corporate spreadsheet app"
    }
  },
  "desktop": {
    "enabled": true,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "pairingKeyLifetime": {
      "duration": 48,
      "timeUnit": "HOURS"
    },
    "pairingDisabled": false
  },
  "yubikey": {
    "enabled": true,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "pairingDisabled": false,
    "promptForNicknameOnPairing": true
  },
  "oathToken": {
    "enabled": true,
    "otp": {
      "failure": {
        "count": 3,
        "coolDown": {
          "duration": 2,
          "timeUnit": "MINUTES"
        }
      }
    },
    "pairingDisabled": false
  },
  "fido2": {
    "enabled": true,
    "promptForNicknameOnPairing": true
  },
  "newDeviceNotification": "SMS_THEN_EMAIL",
  "forSignOnPolicy": false,
  "default": true
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"name\": \"deviceAuthPolicy__{{$timestamp}}\",\n    \"email\": {\n        \"enabled\": true,\n        \"otp\": {\n            \"failure\": {\n                \"count\": 3,\n                \"coolDown\": {\n                    \"duration\": 0,\n                    \"timeUnit\": \"MINUTES\"\n                }\n            },\n            \"lifeTime\": {\n                \"duration\": 15,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"otpLength\": 8\n        }\n    },\n    \"sms\": {\n        \"enabled\": false,\n        \"otp\": {\n            \"failure\": {\n                \"count\": 3,\n                \"coolDown\": {\n                    \"duration\": 0,\n                    \"timeUnit\": \"MINUTES\"\n                }\n            },\n            \"lifeTime\": {\n                \"duration\": 30,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"otpLength\":6\n        }\n    },\n    \"voice\": {\n        \"enabled\": true,\n        \"otp\": {\n            \"failure\": {\n                \"count\": 3,\n                \"coolDown\": {\n                    \"duration\": 0,\n                    \"timeUnit\": \"MINUTES\"\n                }\n            },\n            \"lifeTime\": {\n                \"duration\": 30,\n                \"timeUnit\": \"MINUTES\"\n            },\n            \"otpLength\": 6\n        }\n    },\n    \"mobile\":{\n        \"enabled\":true,\n        \"otp\":{\n            \"failure\":{\n                \"count\":3,\n                \"coolDown\":{\n                    \"duration\":2,\n                    \"timeUnit\":\"MINUTES\"\n                }\n            }\n        },\n        \"promptForNicknameOnPairing\":true,\n        \"applications\":[\n            {\n                \"id\":\"d1457f48-3403-46fe-9f8b-0121f2736da1\",\n                \"type\":\"pingIdAppConfig\",\n                \"push\":{\n                    \"enabled\":true,\n                    \"numberMatching\":{\n                        \"enabled\":true\n                    }\n                },\n                \"biometricsEnabled\":true,\n                \"otp\":{\n                    \"enabled\":true\n                },\n                \"pairingKeyLifetime\":{\n                    \"timeUnit\":\"HOURS\",\n                    \"duration\":18\n                },\n                \"pushLimit\":{\n                    \"count\":3,\n                    \"timePeriod\":{\n                        \"duration\":10,\n                        \"timeUnit\":\"MINUTES\"\n                    },\"lockDuration\":{\n                        \"duration\":30,\n                        \"timeUnit\":\"MINUTES\"\n                    }\n                },\n                \"newRequestDurationConfiguration\":{\n                    \"deviceTimeout\":{\n                        \"duration\":30,\n                        \"timeUnit\":\"SECONDS\"\n                    },\n                    \"totalTimeout\":{\n                        \"duration\":70,\n                        \"timeUnit\":\"SECONDS\"\n                    }\n                },\n                \"ipPairingConfiguration\":{\n                    \"anyIPAdress\":true\n                },\n                \"name\":\"PingID Mobile\"}\n            ],\n            \"pairingDisabled\":false\n    },\n    \"totp\": {\n        \"enabled\": true,\n        \"otp\": {\n            \"failure\": {\n                \"count\": 3,\n                \"coolDown\": {\n                    \"duration\": 2,\n                    \"timeUnit\": \"MINUTES\"\n                }\n            }\n        },\n        \"uriParameters\": {\n            \"issuer\": \"Corporate spreadsheet app\"\n        }\n    },\n    \"desktop\":{\n        \"enabled\":true,\n        \"otp\":{\n            \"failure\":{\n                \"count\":3,\n                \"coolDown\":{\n                    \"duration\":2,\n                    \"timeUnit\":\"MINUTES\"\n                }\n            }\n        },\n        \"pairingKeyLifetime\":{\n            \"duration\":48,\n            \"timeUnit\":\"HOURS\"\n        },\n        \"pairingDisabled\":false\n    },\n    \"yubikey\":{\n        \"enabled\":true,\n        \"otp\":{\n            \"failure\":{\n                \"count\":3,\n                \"coolDown\":{\n                    \"duration\":2,\n                    \"timeUnit\":\"MINUTES\"\n                }\n            }\n        },\n        \"pairingDisabled\":false,\n        \"promptForNicknameOnPairing\":true\n    },\n    \"oathToken\":{\n        \"enabled\":true,\n        \"otp\":{\n            \"failure\":{\n                \"count\":3,\n                \"coolDown\":{\n                    \"duration\":2,\n                    \"timeUnit\":\"MINUTES\"\n                }\n            }\n        },\n        \"pairingDisabled\":false\n    },\n    \"fido2\": {\n        \"enabled\": true,\n        \"promptForNicknameOnPairing\": true\n    },\n    \"newDeviceNotification\": \"SMS_THEN_EMAIL\",\n    \"forSignOnPolicy\": false,\n    \"default\": true\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPathTest}}/environments/{{envID}}/deviceAuthenticationPolicies/{{deviceAuthenticationPolicyID}}")!,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.test-one-pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/deviceAuthenticationPolicies/cd7b77c0-6fa9-0c67-3789-c7cf781ec9a4"
        },
        "environment": {
            "href": "https://api.test-one-pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "applications": {
            "href": "https://api.test-one-pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/deviceAuthenticationPolicies/cd7b77c0-6fa9-0c67-3789-c7cf781ec9a4/applications"
        },
        "fido2": {
            "href": "https://api.test-one-pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/fido2Policies/2b7bbe20-84bd-45ee-83dc-704a64fe4e62"
        }
    },
    "id": "cd7b77c0-6fa9-0c67-3789-c7cf781ec9a4",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "deviceAuthPolicy__1736085066",
    "authentication": {
        "deviceSelection": "DEFAULT_TO_FIRST"
    },
    "newDeviceNotification": "SMS_THEN_EMAIL",
    "sms": {
        "enabled": false,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength": 6
        }
    },
    "email": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 15,
                "timeUnit": "MINUTES"
            },
            "otpLength": 8
        }
    },
    "mobile": {
        "enabled": true,
        "promptForNicknameOnPairing": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        },
        "applications": [
            {
                "id": "d1457f48-3403-46fe-9f8b-0121f2736da1",
                "type": "pingIdAppConfig",
                "push": {
                    "enabled": true,
                    "numberMatching": {
                        "enabled": true
                    }
                },
                "otp": {
                    "enabled": true
                },
                "autoEnrollment": {
                    "enabled": false
                },
                "pairingKeyLifetime": {
                    "duration": 18,
                    "timeUnit": "HOURS"
                },
                "pushLimit": {
                    "count": 3,
                    "timePeriod": {
                        "duration": 10,
                        "timeUnit": "MINUTES"
                    },
                    "lockDuration": {
                        "duration": 30,
                        "timeUnit": "MINUTES"
                    }
                },
                "newRequestDurationConfiguration": {
                    "deviceTimeout": {
                        "duration": 30,
                        "timeUnit": "SECONDS"
                    },
                    "totalTimeout": {
                        "duration": 70,
                        "timeUnit": "SECONDS"
                    }
                },
                "ipPairingConfiguration": {
                    "anyIPAdress": true
                },
                "biometricsEnabled": true
            }
        ]
    },
    "totp": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        },
        "uriParameters": {
            "issuer": "Corporate spreadsheet app"
        }
    },
    "voice": {
        "enabled": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 0,
                    "timeUnit": "MINUTES"
                }
            },
            "lifeTime": {
                "duration": 30,
                "timeUnit": "MINUTES"
            },
            "otpLength": 6
        }
    },
    "fido2": {
        "enabled": true,
        "promptForNicknameOnPairing": true
    },
    "yubikey": {
        "enabled": true,
        "pairingDisabled": false,
        "promptForNicknameOnPairing": true,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        }
    },
    "oathToken": {
        "enabled": true,
        "pairingDisabled": false,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        }
    },
    "desktop": {
        "enabled": true,
        "pairingDisabled": false,
        "otp": {
            "failure": {
                "count": 3,
                "coolDown": {
                    "duration": 2,
                    "timeUnit": "MINUTES"
                }
            }
        },
        "pairingKeyLifetime": {
            "duration": 48,
            "timeUnit": "HOURS"
        }
    },
    "forSignOnPolicy": false,
    "updatedAt": "2025-01-05T13:51:08.530Z",
    "createdAt": "2024-08-11T12:34:23.990Z",
    "default": true
}