JWTPlus - List All Onboarded Projects

Retrieve a list of all onboarded projects with this API.

Endpoint

GET /root/list

Headers

Name Type Required Description
Authorization string Yes The root-key of the project.

Example Request

curl --request GET \
--url http://{{you-endpoint}}:{{your-port}}/root/list \
--header 'Authorization: {{root-key}}
const request = require('request');

const options = {
    method: 'GET',
    url: 'http://{{you-endpoint}}:{{your-port}}/root/list',
    headers: {Authorization: '{{root-key}}'}
};

request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
import requests

url = "http://{{you-endpoint}}:{{your-port}}/root/list"

headers = {"Authorization": "{{root-key}}"}

response = requests.get(url, headers=headers)

print(response.json())
<?php
$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'http://{{you-endpoint}}:{{your-port}}/root/list', [
    'headers' => [
    'Authorization' => '{{root-key}}',
    ],
]);

echo $response->getBody();
package main

import (
    "fmt"
    "net/http"
    "io"
)

func main() {

    url := "http://{{you-endpoint}}:{{your-port}}/root/list"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Authorization", "{{root-key}}")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("GET", "http://{{you-endpoint}}:{{your-port}}/root/list")
    .setHeader("Authorization", "{{root-key}}")
    .execute()
    .toCompletableFuture()
    .thenAccept(System.out::println)
    .join();

client.close();

Example Success Response

{
"apps": [
    {
    "id": "01JMQGZKJ6752H096HJ9T57X1Z",
    "name": "app_1",
    "description": "description",
    "token_expiry": 3600,
    "token_notbefore": 0,
    "refresh_expiry": 3600,
    "refresh_notbefore": 3000,
    "key_type": "ECDSA",
    "algo": "ES256",
    "rotation_period": 31536000,
    "add_time": 1740251319,
    "update_time": 0,
    "last_key_rotate": 0
    }
]
}

Response Fields

The response contains a list of onboarded applications under the "apps" array. Each application has the following details:

Field Type Description
id string (ULID) A unique identifier for the application
name string The name of the application.
description string A brief description of the application.
token_expiry int The time (in seconds) after an issued token expires.
token_notbefore int The wait time (in seconds) before a auth token can be used after it's issued.
refresh_expiry int The expiration time (in seconds) for refresh tokens.
refresh_notbefore int The wait time (in seconds) before a refresh token can be used after it's issued.
key_type string enum (RSA,ECDSA) The cryptographic key type used (e.g., ECDSA).
algo string enum (RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512) The signing algorithm used (e.g., ES256).
rotation_period int The period (in seconds) after which cryptographic keys should be rotated.
add_time int The timestamp (Unix epoch) when the application was added.
update_time int The timestamp (Unix epoch) of the last update (0 if never updated).
last_key_rotate int The timestamp (Unix epoch) of the last key rotation (0 if never rotated).

Responses

Status Code Description
200 Ok Success
403 Access Denied When the provided root key in Authorization header is invalid.
500 Internal Server Error Mostly because of the database error. Check the log for root cause details.