PingOne Platform APIs

Update Session By ID

 

PUT {{apiPath}}/environments/{{envID}}/sessions/{{sessionID}}

Use PUT {{apiPath}}/environments/{{envID}}/sessions/{{sessionID}} to update an existing, unexpired session. A session token can’t be updated by this request, only by Update Session By Session Token.

Prerequisites

  • Refer to Sessions for important overview information.

Request Model

For complete property descriptions, refer to Sessions data model.

If user.id isn’t specified, the lastSignOn object is null, and any values assigned here are ignored.

Property Type Required?

activeAt

Date

Required

id

String

Required

idleTimeoutInMinutes

Integer

Optional

lastSignOn

Object

Required

lastSignOn.authenticators

String

Required

lastSignOn.remoteIp

String

Required

lastSignOn.withAuthenticator

Map

Required

lastSignOn.withAuthenticator.authenticator

String

Required

lastSignOn.withAuthenticator.authenticator.at

Date

Required

lastSignOn.withAuthenticator.authenticator.policy

Object

Required

lastSignOn.withAuthenticator.authenticator.policy.id

String

Required

lastSignOn.withAuthenticator.authenticator.policy.type

String

Required

user.id

String

Optional

userAgent

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "activeAt": "{{$isoTimestamp}}",
    "idleTimeoutInMinutes": "72000",
    "lastSignOn": {
        "authenticators": [
            "pwd"
        ],
        "remoteIp": "174.1.62.19",
        "withAuthenticator": {
            "pwd": {
                "at": "2022-08-17T01:21:30.116Z",
                "policy": {
                    "id": "{{passwordPolicyID}}",
                    "type": "PINGONE"
                }
            }
        }
    },
    "user": {
        "id": "{{userID}}"
    },
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/sessions/{{sessionID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "activeAt": "{{$isoTimestamp}}",
    "idleTimeoutInMinutes": "72000",
    "lastSignOn": {
        "authenticators": [
            "pwd"
        ],
        "remoteIp": "174.1.62.19",
        "withAuthenticator": {
            "pwd": {
                "at": "2022-08-17T01:21:30.116Z",
                "policy": {
                    "id": "{{passwordPolicyID}}",
                    "type": "PINGONE"
                }
            }
        }
    },
    "user": {
        "id": "{{userID}}"
    },
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/sessions/{{sessionID}}")
{
  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" +
@"    ""activeAt"": ""{{$isoTimestamp}}""," + "\n" +
@"    ""idleTimeoutInMinutes"": ""72000""," + "\n" +
@"    ""lastSignOn"": {" + "\n" +
@"        ""authenticators"": [" + "\n" +
@"            ""pwd""" + "\n" +
@"        ]," + "\n" +
@"        ""remoteIp"": ""174.1.62.19""," + "\n" +
@"        ""withAuthenticator"": {" + "\n" +
@"            ""pwd"": {" + "\n" +
@"                ""at"": ""2022-08-17T01:21:30.116Z""," + "\n" +
@"                ""policy"": {" + "\n" +
@"                    ""id"": ""{{passwordPolicyID}}""," + "\n" +
@"                    ""type"": ""PINGONE""" + "\n" +
@"                }" + "\n" +
@"            }" + "\n" +
@"        }" + "\n" +
@"    }," + "\n" +
@"    ""user"": {" + "\n" +
@"        ""id"": ""{{userID}}""" + "\n" +
@"    }," + "\n" +
@"    ""userAgent"": ""Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0""" + "\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}}/sessions/{{sessionID}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "activeAt": "{{$isoTimestamp}}",
    "idleTimeoutInMinutes": "72000",
    "lastSignOn": {
        "authenticators": [
            "pwd"
        ],
        "remoteIp": "174.1.62.19",
        "withAuthenticator": {
            "pwd": {
                "at": "2022-08-17T01:21:30.116Z",
                "policy": {
                    "id": "{{passwordPolicyID}}",
                    "type": "PINGONE"
                }
            }
        }
    },
    "user": {
        "id": "{{userID}}"
    },
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"
}`)

  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}}/sessions/{{sessionID}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "activeAt": "{{$isoTimestamp}}",
    "idleTimeoutInMinutes": "72000",
    "lastSignOn": {
        "authenticators": [
            "pwd"
        ],
        "remoteIp": "174.1.62.19",
        "withAuthenticator": {
            "pwd": {
                "at": "2022-08-17T01:21:30.116Z",
                "policy": {
                    "id": "{{passwordPolicyID}}",
                    "type": "PINGONE"
                }
            }
        }
    },
    "user": {
        "id": "{{userID}}"
    },
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"activeAt\": \"{{$isoTimestamp}}\",\n    \"idleTimeoutInMinutes\": \"72000\",\n    \"lastSignOn\": {\n        \"authenticators\": [\n            \"pwd\"\n        ],\n        \"remoteIp\": \"174.1.62.19\",\n        \"withAuthenticator\": {\n            \"pwd\": {\n                \"at\": \"2022-08-17T01:21:30.116Z\",\n                \"policy\": {\n                    \"id\": \"{{passwordPolicyID}}\",\n                    \"type\": \"PINGONE\"\n                }\n            }\n        }\n    },\n    \"user\": {\n        \"id\": \"{{userID}}\"\n    },\n    \"userAgent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0\"\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/sessions/{{sessionID}}")
  .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}}/sessions/{{sessionID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "activeAt": "{{$isoTimestamp}}",
    "idleTimeoutInMinutes": "72000",
    "lastSignOn": {
      "authenticators": [
        "pwd"
      ],
      "remoteIp": "174.1.62.19",
      "withAuthenticator": {
        "pwd": {
          "at": "2022-08-17T01:21:30.116Z",
          "policy": {
            "id": "{{passwordPolicyID}}",
            "type": "PINGONE"
          }
        }
      }
    },
    "user": {
      "id": "{{userID}}"
    },
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}/sessions/{{sessionID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "activeAt": "{{$isoTimestamp}}",
    "idleTimeoutInMinutes": "72000",
    "lastSignOn": {
      "authenticators": [
        "pwd"
      ],
      "remoteIp": "174.1.62.19",
      "withAuthenticator": {
        "pwd": {
          "at": "2022-08-17T01:21:30.116Z",
          "policy": {
            "id": "{{passwordPolicyID}}",
            "type": "PINGONE"
          }
        }
      }
    },
    "user": {
      "id": "{{userID}}"
    },
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"
  })

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

url = "{{apiPath}}/environments/{{envID}}/sessions/{{sessionID}}"

payload = json.dumps({
  "activeAt": "{{$isoTimestamp}}",
  "idleTimeoutInMinutes": "72000",
  "lastSignOn": {
    "authenticators": [
      "pwd"
    ],
    "remoteIp": "174.1.62.19",
    "withAuthenticator": {
      "pwd": {
        "at": "2022-08-17T01:21:30.116Z",
        "policy": {
          "id": "{{passwordPolicyID}}",
          "type": "PINGONE"
        }
      }
    }
  },
  "user": {
    "id": "{{userID}}"
  },
  "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"
})
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}}/sessions/{{sessionID}}');
$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    "activeAt": "{{$isoTimestamp}}",\n    "idleTimeoutInMinutes": "72000",\n    "lastSignOn": {\n        "authenticators": [\n            "pwd"\n        ],\n        "remoteIp": "174.1.62.19",\n        "withAuthenticator": {\n            "pwd": {\n                "at": "2022-08-17T01:21:30.116Z",\n                "policy": {\n                    "id": "{{passwordPolicyID}}",\n                    "type": "PINGONE"\n                }\n            }\n        }\n    },\n    "user": {\n        "id": "{{userID}}"\n    },\n    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"\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}}/sessions/{{sessionID}}")

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({
  "activeAt": "{{\$isoTimestamp}}",
  "idleTimeoutInMinutes": "72000",
  "lastSignOn": {
    "authenticators": [
      "pwd"
    ],
    "remoteIp": "174.1.62.19",
    "withAuthenticator": {
      "pwd": {
        "at": "2022-08-17T01:21:30.116Z",
        "policy": {
          "id": "{{passwordPolicyID}}",
          "type": "PINGONE"
        }
      }
    }
  },
  "user": {
    "id": "{{userID}}"
  },
  "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0"
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"activeAt\": \"{{$isoTimestamp}}\",\n    \"idleTimeoutInMinutes\": \"72000\",\n    \"lastSignOn\": {\n        \"authenticators\": [\n            \"pwd\"\n        ],\n        \"remoteIp\": \"174.1.62.19\",\n        \"withAuthenticator\": {\n            \"pwd\": {\n                \"at\": \"2022-08-17T01:21:30.116Z\",\n                \"policy\": {\n                    \"id\": \"{{passwordPolicyID}}\",\n                    \"type\": \"PINGONE\"\n                }\n            }\n        }\n    },\n    \"user\": {\n        \"id\": \"{{userID}}\"\n    },\n    \"userAgent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0\"\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/sessions/{{sessionID}}")!,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/sessions/ee14fe02-6b74-46b3-81f2-2de2a384fa1b"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "user": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/07e1ee43-9f56-4254-8cfb-1709b5ea8e24"
        }
    },
    "id": "ee14fe02-6b74-46b3-81f2-2de2a384fa1b",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "user": {
        "id": "07e1ee43-9f56-4254-8cfb-1709b5ea8e24"
    },
    "createdAt": "2022-10-04T17:10:30.531Z",
    "activeAt": "2022-10-04T17:12:19.890Z",
    "idleTimeoutInMinutes": 72000,
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Firefox/103.0",
    "browser": {
        "name": "Firefox",
        "version": "103.0"
    },
    "operatingSystem": {
        "name": "Mac OS X",
        "version": "10.15"
    },
    "device": {
        "type": "Mac"
    },
    "locations": [
        {
            "at": "2022-08-17T01:21:30.116Z",
            "remoteIp": "174.1.62.19",
            "city": "port coquitlam",
            "state": "british columbia",
            "region": "west coast",
            "country": "canada"
        },
        {
            "at": "2022-08-17T01:21:30.116Z",
            "remoteIp": "174.1.62.19"
        }
    ],
    "lastSignOn": {
        "remoteIp": "174.1.62.19",
        "authenticators": [
            "pwd"
        ],
        "withAuthenticator": {
            "pwd": {
                "policy": {
                    "id": "874d5c7d-5e1c-4e73-b2b5-dfe1453b02f5",
                    "type": "PINGONE"
                },
                "at": "2022-08-17T01:21:30.116Z"
            }
        },
        "policy": {
            "id": "874d5c7d-5e1c-4e73-b2b5-dfe1453b02f5",
            "type": "PINGONE"
        },
        "at": "2022-08-17T01:21:30.116Z"
    },
    "expiresAt": "2022-11-23T17:12:19.890Z"
}