curl --request GET \
--url https://pria.praxislxp.com/api/auth/google/services/validate \
--header 'Authorization: Bearer <token>'import requests
url = "https://pria.praxislxp.com/api/auth/google/services/validate"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://pria.praxislxp.com/api/auth/google/services/validate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pria.praxislxp.com/api/auth/google/services/validate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pria.praxislxp.com/api/auth/google/services/validate"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pria.praxislxp.com/api/auth/google/services/validate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/auth/google/services/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"valid": true,
"source": "institution",
"cleared": false,
"retryable": true,
"message": "<string>",
"error": "<string>"
}{
"success": false,
"message": "User not found"
}{
"success": false,
"message": "Validation request failed"
}Validate the caller's stored Google Services token
Checks whether the caller’s stored Google access token is still accepted by Google by making a probing call to the userinfo endpoint. Resolves which storage location to read from in the same priority order as the runtime authenticator: institution token first (when the JWT has an institution), personal token second.
Expired tokens are refreshed before probing. A 401 with unknown expiry can
trigger one refresh and one retry. Refresh network/5xx/rate-limit failures
return valid: false, retryable: true without probing the expired token or
clearing credentials. A 401 after a successful refresh also preserves the grant.
Only a token-endpoint invalid_grant, or a 401 without a refresh token,
clears the credential and returns valid: false, cleared: true.
curl --request GET \
--url https://pria.praxislxp.com/api/auth/google/services/validate \
--header 'Authorization: Bearer <token>'import requests
url = "https://pria.praxislxp.com/api/auth/google/services/validate"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://pria.praxislxp.com/api/auth/google/services/validate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pria.praxislxp.com/api/auth/google/services/validate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pria.praxislxp.com/api/auth/google/services/validate"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pria.praxislxp.com/api/auth/google/services/validate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/auth/google/services/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"valid": true,
"source": "institution",
"cleared": false,
"retryable": true,
"message": "<string>",
"error": "<string>"
}{
"success": false,
"message": "User not found"
}{
"success": false,
"message": "Validation request failed"
}Authorizations
JWT token passed in authorization header
Response
Validation completed. Inspect valid for the outcome.
Whether the stored Google access_token is currently accepted by Google.
true
Which storage location the validated token came from. institution means it
lived on the user's UserInstitution.googleLoginToken; user means the
personal token on the User record. Null when no token is configured.
institution, user True after clearing a confirmed invalid_grant or a 401 credential with no refresh token.
false
True when validation failed without clearing the recoverable credential. Retry later.
Set when no token is configured for the resolved source.
Set on validation failure — passes through Google's error message.
Was this page helpful?