Update MFA Push Credential
PUT {{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}
The sample shows the PUT {{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredentialsID}} operation to update the push credentials specified by its ID in the request URL. The push credentials are updated only for the application identified in the request URL.
Since key, teamId and token are considered credentials, these fields can be created with a POST request and updated with a PUT request, but are not returned by a GET request.
Prerequisites
-
Refer to Application MFA Push Credentials for important overview information.
Request Model
Refer to the MFA push credentials data model for complete descriptions.
| Property | Type | Required? |
|---|---|---|
key |
String |
Required |
teamId |
String |
Required |
token |
String |
Required |
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
"type": "APNS",
"key": "key.value.updated",
"teamId": "team.id.updated",
"token": "-----BEGIN PRIVATE KEY-----\nMIGTAgEA****7HUikGZU\n-----END PRIVATE KEY-----"
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}")
{
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" +
@" ""type"": ""APNS""," + "\n" +
@" ""key"": ""key.value.updated""," + "\n" +
@" ""teamId"": ""team.id.updated""," + "\n" +
@" ""token"": ""-----BEGIN PRIVATE KEY-----\nMIGTAgEA****7HUikGZU\n-----END PRIVATE KEY-----""" + "\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}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}"
method := "PUT"
payload := strings.NewReader(`{
"type": "APNS",
"key": "key.value.updated",
"teamId": "team.id.updated",
"token": "-----BEGIN PRIVATE KEY-----\nMIGTAgEA****7HUikGZU\n-----END PRIVATE KEY-----"
}`)
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}}/applications/{{appID}}/pushCredentials/{{pushCredID}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}
{
"type": "APNS",
"key": "key.value.updated",
"teamId": "team.id.updated",
"token": "-----BEGIN PRIVATE KEY-----\nMIGTAgEA****7HUikGZU\n-----END PRIVATE KEY-----"
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"type\": \"APNS\",\n \"key\": \"key.value.updated\",\n \"teamId\": \"team.id.updated\",\n \"token\": \"-----BEGIN PRIVATE KEY-----\\nMIGTAgEA****7HUikGZU\\n-----END PRIVATE KEY-----\"\n}");
Request request = new Request.Builder()
.url("{{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}")
.method("PUT", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}",
"method": "PUT",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer {{accessToken}}"
},
"data": JSON.stringify({
"type": "APNS",
"key": "key.value.updated",
"teamId": "team.id.updated",
"token": "-----BEGIN PRIVATE KEY-----\nMIGTAgEA****7HUikGZU\n-----END PRIVATE KEY-----"
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'PUT',
'url': '{{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
},
body: JSON.stringify({
"type": "APNS",
"key": "key.value.updated",
"teamId": "team.id.updated",
"token": "-----BEGIN PRIVATE KEY-----\nMIGTAgEA****7HUikGZU\n-----END PRIVATE KEY-----"
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}"
payload = json.dumps({
"type": "APNS",
"key": "key.value.updated",
"teamId": "team.id.updated",
"token": "-----BEGIN PRIVATE KEY-----\nMIGTAgEA****7HUikGZU\n-----END PRIVATE KEY-----"
})
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}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}');
$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 "type": "APNS",\n "key": "key.value.updated",\n "teamId": "team.id.updated",\n "token": "-----BEGIN PRIVATE KEY-----\\nMIGTAgEA****7HUikGZU\\n-----END PRIVATE KEY-----"\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}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}")
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({
"type": "APNS",
"key": "key.value.updated",
"teamId": "team.id.updated",
"token": "-----BEGIN PRIVATE KEY-----\nMIGTAgEA****7HUikGZU\n-----END PRIVATE KEY-----"
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"type\": \"APNS\",\n \"key\": \"key.value.updated\",\n \"teamId\": \"team.id.updated\",\n \"token\": \"-----BEGIN PRIVATE KEY-----\\nMIGTAgEA****7HUikGZU\\n-----END PRIVATE KEY-----\"\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/applications/{{appID}}/pushCredentials/{{pushCredID}}")!,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.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/applications/830109c7-f8aa-491e-b2f2-8f7532ae85e9/pushCredentials/d7221ba8-5ec5-41ca-b44b-98213547e462"
},
"environment": {
"href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"application": {
"href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/applications/830109c7-f8aa-491e-b2f2-8f7532ae85e9"
}
},
"id": "d7221ba8-5ec5-41ca-b44b-98213547e462",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"application": {
"id": "830109c7-f8aa-491e-b2f2-8f7532ae85e9"
},
"createdAt": "2022-01-06T15:44:10.669Z",
"updatedAt": "2022-01-06T15:45:41.296Z",
"type": "APNS"
}