JWT Tokens

Get All Tokens

Get the list of all tokens issued for the given user.

Endpoint

GET /aam/v2/jwts

curl --location 'https://example.xyz/wp-json/aam/v2/jwts?user_id=2&fields=claims%2Csigned_url' \
--header 'Authorization: Bearer ***'

Parameters

Params Description
user_id Required. User ID.
fields Optional. Comma-separated list of properties to return. The supported properties are “token”, “id”, “claims”, “signed_url”, “is_valid”, “error”.

Response Sample

[
    {
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3MTkyNDkyOTUsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6MTAwMDQiLCJleHAiOjE3MTkzMzU2OTUsImp0aSI6IjU4NjRlZDhlLTc3M2QtNDJiZi1hZjUyLWJiZGNiOTc2NTMyMSIsInVzZXJJZCI6MSwicmV2b2NhYmxlIjp0cnVlLCJyZWZyZXNoYWJsZSI6bnVsbH0.ZVyOca0D0kryUJcb6nWOMwCWukhHIZ5q5cPtGLSGrCY",
        "id": "5864ed8e-773d-42bf-af52-bbdcb9765321",
        "is_valid": true,
        "error": null,
        "claims": {
            "iat": 1719249295,
            "iss": "http://localhost:10004",
            "exp": 1719335695,
            "jti": "5864ed8e-773d-42bf-af52-bbdcb9765321",
            "userId": 1,
            "revocable": true,
            "refreshable": null
        },
        "signed_url": "http://localhost:10004?aam-jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3MTkyNDkyOTUsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6MTAwMDQiLCJleHAiOjE3MTkzMzU2OTUsImp0aSI6IjU4NjRlZDhlLTc3M2QtNDJiZi1hZjUyLWJiZGNiOTc2NTMyMSIsInVzZXJJZCI6MSwicmV2b2NhYmxlIjp0cnVlLCJyZWZyZXNoYWJsZSI6bnVsbH0.ZVyOca0D0kryUJcb6nWOMwCWukhHIZ5q5cPtGLSGrCY"
    }
]

Get Single Token

Get a specific JWT token by ID (aka jti).

Endpoint

GET /aam/v2/jwt/<id>

curl --location 'https://example.xyz/wp-json/aam/v2/jwt/4bf13e8f-4b20-4494-a35a-81433f164855?user_id=2&fields=claims%2Csigned_url' \
--header 'Authorization: Bearer ***'

Parameters

Params Description
id Required. The unique JWT token ID (aka jti).
user_id Required. User ID.
fields Optional. Comma-separated list of properties to return. The supported properties are “token”, “id”, “claims”, “signed_url”, “is_valid”, “error”.

Response Sample

{
    "id": "1862df17-75a9-4d73-93b9-c9549f2f209c",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxODYyZGYxNy03NWE5LTRkNzMtOTNiOS1jOTU0OWYyZjIwOWMiLCJ5ZXMiOnRydWUsInJldm9jYWJsZSI6dHJ1ZSwicmVmcmVzaGFibGUiOnRydWUsImlhdCI6MTc0NjUzNjM0NCwiaXNzIjoiaHR0cDovL2RlbW8ubG9jYWwiLCJleHAiOjE3NDY1MzY0NDQsInVzZXJfaWQiOjJ9.j_vpT4PIIrFkHU_h0YpFwaFHKt7W0H800uLsNIInBgw",
    "is_valid": true,
    "claims": {
        "jti": "1862df17-75a9-4d73-93b9-c9549f2f209c",
        "yes": true,
        "revocable": true,
        "refreshable": true,
        "iat": 1746536344,
        "iss": "http://demo.local",
        "exp": 1746536444,
        "user_id": 2
    },
    "signed_url": "http://demo.local?aam-jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxODYyZGYxNy03NWE5LTRkNzMtOTNiOS1jOTU0OWYyZjIwOWMiLCJ5ZXMiOnRydWUsInJldm9jYWJsZSI6dHJ1ZSwicmVmcmVzaGFibGUiOnRydWUsImlhdCI6MTc0NjUzNjM0NCwiaXNzIjoiaHR0cDovL2RlbW8ubG9jYWwiLCJleHAiOjE3NDY1MzY0NDQsInVzZXJfaWQiOjJ9.j_vpT4PIIrFkHU_h0YpFwaFHKt7W0H800uLsNIInBgw"
}

Create New Token

Issue new JWT token.

Endpoint

POST /aam/v2/jwts

curl --location 'https://example.xyz/wp-json/aam/v2/jwts?user_id=2&fields=claims%2Csigned_url' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ***' \
--data '{
    "expires_in": "+26 hours",
    "is_refreshable": true,
    "additional_claims": {
        "role": "moderator"
    }
}'

Parameters

Params Description
user_id Required. User ID.
url Required. Valid URL or relative path on the website.
expires_at Optional. Valid date-time string in RFC3339 format that is in the future. The token will expire after given date-time.
expires_in Optional. Another way to specify the token’s expiration date. This properly accepts a valid date and time format that PHP can parse into a DateTime object with strtotime core function.
is_refreshable Optional. Wether token can be used to obtain a new token before it is expired.
is_revocable Optional. Wether token should be considered as revocable or not.
additional_claims Optional. An optional collection of claims that can be added to the token.
fields Optional. Comma-separated list of properties to return. The supported properties are “token”, “id”, “claims”, “signed_url”, “is_valid”, “error”.

Response Sample

{
    "id": "1862df17-75a9-4d73-93b9-c9549f2f209c",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxODYyZGYxNy03NWE5LTRkNzMtOTNiOS1jOTU0OWYyZjIwOWMiLCJ5ZXMiOnRydWUsInJldm9jYWJsZSI6dHJ1ZSwicmVmcmVzaGFibGUiOnRydWUsImlhdCI6MTc0NjUzNjM0NCwiaXNzIjoiaHR0cDovL2RlbW8ubG9jYWwiLCJleHAiOjE3NDY1MzY0NDQsInVzZXJfaWQiOjJ9.j_vpT4PIIrFkHU_h0YpFwaFHKt7W0H800uLsNIInBgw",
    "is_valid": true,
    "claims": {
        "jti": "1862df17-75a9-4d73-93b9-c9549f2f209c",
        "yes": true,
        "revocable": true,
        "refreshable": true,
        "iat": 1746536344,
        "iss": "http://demo.local",
        "exp": 1746536444,
        "user_id": 2
    },
    "signed_url": "http://demo.local?aam-jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxODYyZGYxNy03NWE5LTRkNzMtOTNiOS1jOTU0OWYyZjIwOWMiLCJ5ZXMiOnRydWUsInJldm9jYWJsZSI6dHJ1ZSwicmVmcmVzaGFibGUiOnRydWUsImlhdCI6MTc0NjUzNjM0NCwiaXNzIjoiaHR0cDovL2RlbW8ubG9jYWwiLCJleHAiOjE3NDY1MzY0NDQsInVzZXJfaWQiOjJ9.j_vpT4PIIrFkHU_h0YpFwaFHKt7W0H800uLsNIInBgw"
}

Refresh Token

Issue a new JWT token from still valid existing token. The original token will be revoked and the new token will be issued for the same time duration.

This request does not accept any payload and is only designed to obtain a refreshed token. Thus, you are not allowed to modify any claims.

Endpoint

PUT /aam/v2/jwt/<id>

curl --location --request PUT 'https://example.xyz/wp-json/aam/v2/jwt/941768ea-658a-47d6-a739-f999a8705241?user_id=2' \
--header 'Authorization: Bearer ***'

Parameters

Params Description
id Required. The unique JWT token ID.
user_id Required. User ID.

Response Sample

{
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI5NDE3NjhlYS02NThhLTQ3ZDYtYTczOS1mOTk5YTg3MDUyNDEiLCJyb2xlIjoibW9kZXJhdG9yIiwicmV2b2NhYmxlIjp0cnVlLCJyZWZyZXNoYWJsZSI6dHJ1ZSwiaWF0IjoxNzQ2NTM2NzExLCJpc3MiOiJodHRwOi8vZGVtby5sb2NhbCIsImV4cCI6MTc0NjYzMDMxMSwidXNlcl9pZCI6MiwicmF0IjoxNzQ2NTM2NzExfQ.a9ZmP9qmGIKV1GOCoPD7YNYdyIcrd1FKHjHzm5Qftts",
    "claims": {
        "jti": "941768ea-658a-47d6-a739-f999a8705241",
        "role": "moderator",
        "revocable": true,
        "refreshable": true,
        "iat": 1746536711,
        "iss": "http://demo.local",
        "exp": 1746630311,
        "user_id": 2,
        "rat": 1746536711
    }
}

Revoke Token

Revoke or delete an existing JWT token.

Endpoint

DELETE /aam/v2/jwt/<id>

curl --location --request DELETE 'https://example.xyz/wp-json/aam/v2/jwt/941768ea-658a-47d6-a739-f999a8705241?user_id=2' \
--header 'Authorization: ***'

Parameters

Params Description
id Required. The unique JWT token ID.
user_id Required. User ID.

Response Sample

{
    "success": true
}

Revoke All Tokens

Revoke all tokens. In other words - delete all issued tokens for a given user.

Endpoint

DELETE /aam/v2/jwts

curl --location --request DELETE 'https://example.xyz/wp-json/aam/v2/jwts?user_id=2' \
--header 'Authorization: Bearer ***'

Parameters

Params Description
user_id Required. User ID.

Response Sample

{
    "success": true
}