---
title: "Test JWT customizer"
method: POST
path: "/api/configs/jwt-customizer/test"
tags: ["Configs"]
---

# Test JWT customizer

`POST /api/configs/jwt-customizer/test`

Test the JWT customizer script with the given sample context and sample token payload.

## Request body

- union
  - object
    - `tokenType` string, "access-token", required — The token type to test the JWT customizer for.
    - `environmentVariables` object
    - `script` string, required
    - `token` object, required
      - `jti` string
      - `aud` union
        - string
        - string[]
      - `scope` string
      - `clientId` string
      - `accountId` string
      - `expiresWithSession` boolean
      - `grantId` string
      - `gty` string
      - `sessionUid` string
      - `sid` string
      - `kind` string, "AccessToken"
    - `context` object, required
      - `user` object, required
        - `id` string
        - `username` string, nullable
        - `primaryEmail` string, nullable
        - `primaryPhone` string, nullable
        - `name` string, nullable
        - `avatar` string, nullable
        - `customData` object — arbitrary
        - `identities` object
        - `lastSignInAt` number, nullable
        - `createdAt` number
        - `updatedAt` number
        - `profile` object
          - `familyName` string
          - `givenName` string
          - `middleName` string
          - `nickname` string
          - `preferredUsername` string
          - `profile` string
          - `website` string
          - `gender` string
          - `birthdate` string
          - `zoneinfo` string
          - `locale` string
          - `address` object
            - `formatted` string
            - `streetAddress` string
            - `locality` string
            - `region` string
            - `postalCode` string
            - `country` string
        - `applicationId` string, nullable
        - `isSuspended` boolean
        - `hasPassword` boolean
        - `ssoIdentities` object[]
          - `issuer` string, required
          - `identityId` string, required
          - `detail` object, required — arbitrary
        - `mfaVerificationFactors` string[]
        - `roles` object[]
          - `id` string, required
          - `name` string, required
          - `description` string, required
          - `scopes` object[], required
            - `id` string, required
            - `name` string, required
            - `description` string, nullable, required
            - `resourceId` string, required
            - `resource` object, required
              - …
        - `organizations` object[]
          - `id` string, required
          - `name` string, required
          - `description` string, nullable, required
        - `organizationRoles` object[]
          - `organizationId` string, required
          - `roleId` string, required
          - `roleName` string, required
      - `grant` object
        - `type` string, "urn:ietf:params:oauth:grant-type:token-exchange"
        - `subjectTokenContext` object — arbitrary
      - `interaction` object
        - `interactionEvent` 'SignIn' | 'Register' | 'ForgotPassword'
        - `userId` string
        - `verificationRecords` union[]
          - union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
        - `signInContext` object
      - `application` object
        - `tenantId` string
        - `id` string
        - `name` string
        - `description` string, nullable
        - `type` 'Native' | 'SPA' | 'Traditional' | 'MachineToMachine' | 'Protected' | 'SAML'
        - `oidcClientMetadata` object
          - `redirectUris` object[], required
          - `postLogoutRedirectUris` object[], required
          - `backchannelLogoutUri` string, url
          - `backchannelLogoutSessionRequired` boolean
          - `logoUri` string
        - `customClientMetadata` object
          - `corsAllowedOrigins` string[]
          - `idTokenTtl` number
          - `refreshTokenTtl` number
          - `refreshTokenTtlInDays` number
          - `tenantId` string
          - `alwaysIssueRefreshToken` boolean
          - `rotateRefreshToken` boolean
          - `allowTokenExchange` boolean
          - `isDeviceFlow` boolean
          - `maxAllowedGrants` number
        - `protectedAppMetadata` object, nullable
          - `host` string, required
          - `origin` string, required
          - `sessionDuration` number, required
          - `pageRules` object[], required
            - `path` string, required
          - `additionalScopes` string[]
          - `customDomains` object[]
            - `domain` string, required
            - `status` 'PendingVerification' | 'PendingSsl' | 'Active' | 'Error', required
            - `errorMessage` string, nullable, required
            - `dnsRecords` object[], required
              - …
            - `cloudflareData` object, nullable, required
              - …
        - `customData` object — arbitrary
        - `isThirdParty` boolean
        - `appLevelAccessControlEnabled` boolean
        - `createdAt` number
      - `organization` object
        - `id` string
        - `name` string
        - `description` string, nullable
        - `customData` object — arbitrary
    - `payload` object
      - `script` unknown
      - `environmentVariables` unknown
      - `contextSample` unknown
      - `tokenSample` unknown
  - object
    - `tokenType` string, "client-credentials", required — The token type to test the JWT customizer for.
    - `environmentVariables` object
    - `script` string, required
    - `token` object, required
      - `jti` string
      - `aud` union
        - string
        - string[]
      - `scope` string
      - `clientId` string
      - `kind` string, "ClientCredentials"
    - `context` object, required
      - `application` object
        - `tenantId` string
        - `id` string
        - `name` string
        - `description` string, nullable
        - `type` 'Native' | 'SPA' | 'Traditional' | 'MachineToMachine' | 'Protected' | 'SAML'
        - `oidcClientMetadata` object
          - `redirectUris` object[], required
          - `postLogoutRedirectUris` object[], required
          - `backchannelLogoutUri` string, url
          - `backchannelLogoutSessionRequired` boolean
          - `logoUri` string
        - `customClientMetadata` object
          - `corsAllowedOrigins` string[]
          - `idTokenTtl` number
          - `refreshTokenTtl` number
          - `refreshTokenTtlInDays` number
          - `tenantId` string
          - `alwaysIssueRefreshToken` boolean
          - `rotateRefreshToken` boolean
          - `allowTokenExchange` boolean
          - `isDeviceFlow` boolean
          - `maxAllowedGrants` number
        - `protectedAppMetadata` object, nullable
          - `host` string, required
          - `origin` string, required
          - `sessionDuration` number, required
          - `pageRules` object[], required
            - `path` string, required
          - `additionalScopes` string[]
          - `customDomains` object[]
            - `domain` string, required
            - `status` 'PendingVerification' | 'PendingSsl' | 'Active' | 'Error', required
            - `errorMessage` string, nullable, required
            - `dnsRecords` object[], required
              - …
            - `cloudflareData` object, nullable, required
              - …
        - `customData` object — arbitrary
        - `isThirdParty` boolean
        - `appLevelAccessControlEnabled` boolean
        - `createdAt` number
    - `payload` object
      - `script` unknown
      - `environmentVariables` unknown
      - `contextSample` unknown
      - `tokenSample` unknown

## Response `200`

The result of the JWT customizer script testing.

- object — arbitrary

## Other responses

- `400` — Zod errors in cloud service (data type does not match expectation, can be either request body or response body).
- `401` — Unauthorized
- `403` — Cloud connection does not have enough permission to perform the action.
- `422` — Syntax errors in cloud service.

---

[API](https://skmtc.net/logto/apis/logto-api-references.md) · [All operations](https://skmtc.net/logto/apis/logto-api-references/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/logto/logto-api-references/revisions/a163dc77d842/schema)
