Delete a User Credential
DELETE {{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}
Use the DELETE {{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}} request to delete the specified user credential from the specified user in the specified environment.
This request allows administrators to reissue automated credentials, credentials created from a credential type with a management.mode of AUTOMATED and issued by an issuance rule, that were previously revoked by a client, which prevents a credential from matching an issuance rule. This enables users to receive the credential again without recreating their PingOne user account.
Deleting an issuance-rule-issued credential triggers automatic reissuance if the user still matches the issuance rule filter. This applies if the deleted credential has been revoked or not. After calling this DELETE request, reissuance is not instantaneous. The user must still match the issuance rule filter criteria, and the credential issuance is performed asynchronously via the staged changes mechanism described in Credential Issuance Rules.
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff --request DELETE '{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}' \
--header 'Authorization: Bearer {{accessToken}}'
var options = new RestClientOptions("{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Delete);
request.AddHeader("Authorization", "Bearer {{accessToken}}");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}"
method := "DELETE"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
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))
}
DELETE /v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}} HTTP/1.1
Host: {{apiPath}}
Authorization: Bearer {{accessToken}}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}")
.method("DELETE", body)
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}",
"method": "DELETE",
"timeout": 0,
"headers": {
"Authorization": "Bearer {{accessToken}}"
},
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'DELETE',
'url': '{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}',
'headers': {
'Authorization': 'Bearer {{accessToken}}'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
url = "{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}"
payload = {}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Authorization' => 'Bearer {{accessToken}}'
));
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 "net/http"
url = URI("{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Delete.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = http.request(request)
puts response.read_body
var request = URLRequest(url: URL(string: "{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/credentials/{{credentialID}}")!,timeoutInterval: Double.infinity)
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")
request.httpMethod = "DELETE"
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()