diff --git a/.circleci/config.yml b/.circleci/config.yml
deleted file mode 100644
index 9615ec3ca..000000000
--- a/.circleci/config.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-version: 2
-jobs:
- build:
- docker:
- - image: openjdk:8-jdk
- steps:
- - checkout
- - run: chmod +x gradlew
- # Download and cache dependencies
- - restore_cache:
- keys:
- - v1-dependencies-{{ checksum "build.gradle" }}
- # fallback to using the latest cache if no exact match is found
- - v1-dependencies-
- # run tests!
- - run: ./gradlew clean check jacocoTestReport --continue --console=plain
- - run:
- name: Upload Coverage
- when: on_success
- command: bash <(curl -s https://codecov.io/bash) -Z -C $CIRCLE_SHA1
- - save_cache:
- paths:
- - ~/.m2
- key: v1-dependencies-{{ checksum "build.gradle" }}
- environment:
- GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"'
- _JAVA_OPTIONS: "-Xms512m -Xmx1024m"
- TERM: dumb
\ No newline at end of file
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..f91da6abe
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,22 @@
+# EditorConfig is awesome: http://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Unix-style newlines with a newline ending every file
+[*]
+end_of_line = lf
+charset = utf-8
+insert_final_newline = true
+indent_style = space
+
+[*.{java,groovy,kt}]
+indent_size = 4
+continuation_indent_size = 4
+wildcard_import_limit = 9999
+
+[*.gradle]
+indent_size = 2
+
+[Makefile]
+indent_style = tab
\ No newline at end of file
diff --git a/.fernignore b/.fernignore
new file mode 100644
index 000000000..9956c0318
--- /dev/null
+++ b/.fernignore
@@ -0,0 +1,88 @@
+# Specify files that shouldn't be modified by Fern
+
+# README should not be overwritten as it combines both SDKs
+README.md
+
+# Examples and Migration Guide from auth0-real
+EXAMPLES.md
+v3_MIGRATION_GUIDE.md
+MIGRATION_GUIDE.md
+LICENSE
+CHANGELOG.md
+
+# Legacy management API from auth0-real
+src/main/java/com/auth0/client/legacy/
+
+# Authentication API (manually maintained from auth0-real)
+src/main/java/com/auth0/client/auth/
+src/test/java/com/auth0/client/auth/
+
+# Supporting packages from auth0-real
+src/main/java/com/auth0/net/
+src/main/java/com/auth0/exception/
+src/main/java/com/auth0/utils/
+src/main/java/com/auth0/json/auth/
+src/main/java/com/auth0/json/mgmt/
+src/main/java/com/auth0/json/ObjectMapperProvider.java
+
+# Client options from auth0-real
+src/main/java/com/auth0/client/ProxyOptions.java
+src/main/java/com/auth0/client/LoggingOptions.java
+
+# TokenProvider interface (shared between Fern-generated Management API and auth0-provided Authentication API)
+src/main/java/com/auth0/client/mgmt/TokenProvider.java
+
+# Test infrastructure from auth0-real
+src/test/java/com/auth0/net/
+src/test/java/com/auth0/exception/
+src/test/java/com/auth0/utils/
+src/test/java/com/auth0/json/
+src/test/resources/auth/
+src/test/resources/keys/
+src/test/resources/mgmt/
+src/test/resources/mockito-extensions/
+src/test/java/com/auth0/client/legacy/
+
+# Custom client builder and examples
+src/main/java/com/auth0/client/Auth0ClientBuilder.java
+src/main/java/com/auth0/client/ClientCredentialsTokenProvider.java
+src/main/java/com/auth0/client/ManagementApiWithTokenProvider.java
+src/main/java/com/auth0/client/TokenProvider.java
+src/main/java/com/auth0/client/interceptors/
+
+# Custom OAuth client credentials support
+src/main/java/com/auth0/client/mgmt/core/RequestOptions.java
+src/main/java/com/auth0/client/mgmt/core/ClientOptions.java
+src/main/java/com/auth0/client/mgmt/core/OAuthTokenSupplier.java
+src/main/java/com/auth0/client/mgmt/core/OAuthTokenException.java
+
+# Custom builder with domain-based initialization
+src/main/java/com/auth0/client/mgmt/ManagementApiBuilder.java
+
+# Custom tests
+src/test/java/com/auth0/client/mgmt/DynamicTokenManagementTest.java
+src/test/java/com/auth0/client/mgmt/OAuthTokenSupplierTest.java
+src/test/java/com/auth0/client/mgmt/ManagementApiBuilderTest.java
+
+# Configuration files from auth0-real
+.codecov.yml
+.editorconfig
+.semgrepignore
+.shiprc
+.snyk
+.version
+opslevel.yml
+.fern/
+
+# GitHub workflows
+.github/
+
+# Build files and configs
+gradle/
+gradlew
+gradlew.bat
+gradle.properties
+settings.gradle
+build.gradle
+sample-app/
+
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 6a263cd81..7958e8bdd 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1 +1 @@
-* @auth0/sdk-team-approvers
+* @auth0/project-dx-sdks-engineer-codeowner
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index 9d90d67fd..000000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,38 +0,0 @@
-In order to efficiently and accurately address your issue or feature request, please read through the template below and answer all relevant questions. Your additional work here is greatly appreciated and will help us respond as quickly as possible. Please delete any sections or questions below that do not pertain to this request.
-
-For general support or usage questions, please use the [Auth0 Community](https://community.auth0.com/) or [Auth0 Support](https://support.auth0.com/).
-
-### Description
-
-Description of the bug or feature request and why it's a problem. Consider including:
-
-- The use case or overall problem you're trying to solve
-- Information about when the problem started
-
-### Prerequisites
-
-- [ ] I have checked the documentation for this library in the README.
-- [ ] I have checked the [Auth0 Community](https://community.auth0.com/) for related posts.
-- [ ] I have checked for related or duplicate [Issues](https://github.com/auth0/auth0-java/issues) and [PRs](https://github.com/auth0/auth0-java/pulls).
-- [ ] I have read the [Auth0 general contribution guidelines](https://github.com/auth0/open-source-template/blob/master/GENERAL-CONTRIBUTING.md).
-- [ ] I have read the [Auth0 Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md).
-- [ ] I am reporting this to the correct repository [Add links to other related].
-
-### Environment
-
-Please provide the following:
-
-- Version of this library used:
-- Version of Java used:
-- Additional libraries that might be affecting your instance:
-
-### Reproduction
-
-Detail the steps taken to reproduce this error and note if this issue can be reproduced consistently or if it is intermittent.
-
-Please include:
-
-- Code sample to reproduce the issue
-- Log files (redact/remove sensitive information)
-- Application settings (redact/remove sensitive information)
-- Screenshots, if helpful
diff --git a/.github/ISSUE_TEMPLATE/Bug Report.yml b/.github/ISSUE_TEMPLATE/Bug Report.yml
new file mode 100644
index 000000000..18383e60e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Bug Report.yml
@@ -0,0 +1,67 @@
+name: 🐞 Report a bug
+description: Have you found a bug or issue? Create a bug report for this library
+labels: ["bug"]
+
+body:
+ - type: markdown
+ attributes:
+ value: |
+ **Please do not report security vulnerabilities here**. The [Responsible Disclosure Program](https://auth0.com/responsible-disclosure-policy) details the procedure for disclosing security issues.
+
+ - type: checkboxes
+ id: checklist
+ attributes:
+ label: Checklist
+ options:
+ - label: I have looked into the [Readme](https://github.com/auth0/auth0-java#readme) and [Examples](https://github.com/auth0/auth0-java/blob/master/EXAMPLES.md), and have not found a suitable solution or answer.
+ required: true
+ - label: I have looked into the [API documentation](https://javadoc.io/doc/com.auth0/auth0/latest/index.html) and have not found a suitable solution or answer.
+ required: true
+ - label: I have searched the [issues](https://github.com/auth0/auth0-java/issues) and have not found a suitable solution or answer.
+ required: true
+ - label: I have searched the [Auth0 Community](https://community.auth0.com) forums and have not found a suitable solution or answer.
+ required: true
+ - label: I agree to the terms within the [Auth0 Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md).
+ required: true
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Provide a clear and concise description of the issue, including what you expected to happen.
+ validations:
+ required: true
+
+ - type: textarea
+ id: reproduction
+ attributes:
+ label: Reproduction
+ description: Detail the steps taken to reproduce this error, and whether this issue can be reproduced consistently or if it is intermittent.
+ placeholder: |
+ 1. Step 1...
+ 2. Step 2...
+ 3. ...
+ validations:
+ required: true
+
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: Additional context
+ description: Other libraries that might be involved, or any other relevant information you think would be useful.
+ validations:
+ required: false
+
+ - type: input
+ id: environment-version
+ attributes:
+ label: auth0-java version
+ validations:
+ required: true
+
+ - type: input
+ id: environment-java-version
+ attributes:
+ label: Java version
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/Feature Request.yml b/.github/ISSUE_TEMPLATE/Feature Request.yml
new file mode 100644
index 000000000..d8679879c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Feature Request.yml
@@ -0,0 +1,53 @@
+name: 🧩 Feature request
+description: Suggest an idea or a feature for this library
+labels: ["feature request"]
+
+body:
+ - type: checkboxes
+ id: checklist
+ attributes:
+ label: Checklist
+ options:
+ - label: I have looked into the [Readme](https://github.com/auth0/auth0-java#readme) and [Examples](https://github.com/auth0/auth0-java/blob/master/EXAMPLES.md), and have not found a suitable solution or answer.
+ required: true
+ - label: I have looked into the [API documentation](https://javadoc.io/doc/com.auth0/auth0/latest/index.html) and have not found a suitable solution or answer.
+ required: true
+ - label: I have searched the [issues](https://github.com/auth0/auth0-java/issues) and have not found a suitable solution or answer.
+ required: true
+ - label: I have searched the [Auth0 Community](https://community.auth0.com) forums and have not found a suitable solution or answer.
+ required: true
+ - label: I agree to the terms within the [Auth0 Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md).
+ required: true
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Describe the problem you'd like to have solved
+ description: A clear and concise description of what the problem is.
+ placeholder: I'm always frustrated when...
+ validations:
+ required: true
+
+ - type: textarea
+ id: ideal-solution
+ attributes:
+ label: Describe the ideal solution
+ description: A clear and concise description of what you want to happen.
+ validations:
+ required: true
+
+ - type: textarea
+ id: alternatives-and-workarounds
+ attributes:
+ label: Alternatives and current workarounds
+ description: A clear and concise description of any alternatives you've considered or any workarounds that are currently in place.
+ validations:
+ required: false
+
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: Additional context
+ description: Add any other context or screenshots about the feature request here.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..65c99a9ce
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Auth0 Community
+ url: https://community.auth0.com
+ about: Discuss this SDK in the Auth0 Community forums
diff --git a/.github/actions/get-prerelease/action.yml b/.github/actions/get-prerelease/action.yml
new file mode 100644
index 000000000..ce7acdc3b
--- /dev/null
+++ b/.github/actions/get-prerelease/action.yml
@@ -0,0 +1,30 @@
+name: Return a boolean indicating if the version contains prerelease identifiers
+
+#
+# Returns a simple true/false boolean indicating whether the version indicates it's a prerelease or not.
+#
+# TODO: Remove once the common repo is public.
+#
+
+inputs:
+ version:
+ required: true
+
+outputs:
+ prerelease:
+ value: ${{ steps.get_prerelease.outputs.PRERELEASE }}
+
+runs:
+ using: composite
+
+ steps:
+ - id: get_prerelease
+ shell: bash
+ run: |
+ if [[ "${VERSION}" == *"beta"* || "${VERSION}" == *"alpha"* ]]; then
+ echo "PRERELEASE=true" >> $GITHUB_OUTPUT
+ else
+ echo "PRERELEASE=false" >> $GITHUB_OUTPUT
+ fi
+ env:
+ VERSION: ${{ inputs.version }}
diff --git a/.github/actions/get-release-notes/action.yml b/.github/actions/get-release-notes/action.yml
new file mode 100644
index 000000000..287d2066c
--- /dev/null
+++ b/.github/actions/get-release-notes/action.yml
@@ -0,0 +1,42 @@
+name: Return the release notes extracted from the body of the PR associated with the release.
+
+#
+# Returns the release notes from the content of a pull request linked to a release branch. It expects the branch name to be in the format release/vX.Y.Z, release/X.Y.Z, release/vX.Y.Z-beta.N. etc.
+#
+# TODO: Remove once the common repo is public.
+#
+inputs:
+ version:
+ required: true
+ repo_name:
+ required: false
+ repo_owner:
+ required: true
+ token:
+ required: true
+
+outputs:
+ release-notes:
+ value: ${{ steps.get_release_notes.outputs.RELEASE_NOTES }}
+
+runs:
+ using: composite
+
+ steps:
+ - uses: actions/github-script@v7
+ id: get_release_notes
+ with:
+ result-encoding: string
+ script: |
+ const { data: pulls } = await github.rest.pulls.list({
+ owner: process.env.REPO_OWNER,
+ repo: process.env.REPO_NAME,
+ state: 'all',
+ head: `${process.env.REPO_OWNER}:release/${process.env.VERSION}`,
+ });
+ core.setOutput('RELEASE_NOTES', pulls[0].body);
+ env:
+ GITHUB_TOKEN: ${{ inputs.token }}
+ REPO_OWNER: ${{ inputs.repo_owner }}
+ REPO_NAME: ${{ inputs.repo_name }}
+ VERSION: ${{ inputs.version }}
diff --git a/.github/actions/get-version/action.yml b/.github/actions/get-version/action.yml
new file mode 100644
index 000000000..9440ec920
--- /dev/null
+++ b/.github/actions/get-version/action.yml
@@ -0,0 +1,21 @@
+name: Return the version extracted from the branch name
+
+#
+# Returns the version from the .version file.
+#
+# TODO: Remove once the common repo is public.
+#
+
+outputs:
+ version:
+ value: ${{ steps.get_version.outputs.VERSION }}
+
+runs:
+ using: composite
+
+ steps:
+ - id: get_version
+ shell: bash
+ run: |
+ VERSION=$(head -1 .version)
+ echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
diff --git a/.github/actions/maven-publish/action.yml b/.github/actions/maven-publish/action.yml
new file mode 100644
index 000000000..70a3aec33
--- /dev/null
+++ b/.github/actions/maven-publish/action.yml
@@ -0,0 +1,45 @@
+name: Publish release to Java
+
+inputs:
+ java-version:
+ required: true
+ ossr-username:
+ required: true
+ ossr-token:
+ required: true
+ signing-key:
+ required: true
+ signing-password:
+ required: true
+
+
+runs:
+ using: composite
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Setup Java
+ shell: bash
+ run: |
+ curl -s "https://get.sdkman.io" | bash
+ source "/home/runner/.sdkman/bin/sdkman-init.sh"
+ sdk list java
+ sdk install java ${{ inputs.java-version }} && sdk default java ${{ inputs.java-version }}
+ export JAVA_HOME=${SDKMAN_DIR}/candidates/java/current
+ echo "JAVA_HOME is set to $JAVA_HOME"
+
+ - uses: gradle/actions/wrapper-validation@v5
+ env:
+ JAVA_HOME: ${{ env.JAVA_HOME }}
+
+ - name: Publish Android/Java Packages to Maven
+ shell: bash
+ run: ./gradlew publishToSonatype closeSonatypeStagingRepository -PisSnapshot=false --stacktrace
+ env:
+ JAVA_HOME: ${{ env.JAVA_HOME }}
+ MAVEN_USERNAME: ${{ inputs.ossr-username }}
+ MAVEN_PASSWORD: ${{ inputs.ossr-token }}
+ SIGNING_KEY: ${{ inputs.signing-key}}
+ SIGNING_PASSWORD: ${{ inputs.signing-password}}
diff --git a/.github/actions/release-create/action.yml b/.github/actions/release-create/action.yml
new file mode 100644
index 000000000..6a2bf804c
--- /dev/null
+++ b/.github/actions/release-create/action.yml
@@ -0,0 +1,47 @@
+name: Create a GitHub release
+
+#
+# Creates a GitHub release with the given version.
+#
+# TODO: Remove once the common repo is public.
+#
+
+inputs:
+ token:
+ required: true
+ files:
+ required: false
+ name:
+ required: true
+ body:
+ required: true
+ tag:
+ required: true
+ commit:
+ required: true
+ draft:
+ default: false
+ required: false
+ prerelease:
+ default: false
+ required: false
+ fail_on_unmatched_files:
+ default: true
+ required: false
+
+runs:
+ using: composite
+
+ steps:
+ - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
+ with:
+ body: ${{ inputs.body }}
+ name: ${{ inputs.name }}
+ tag_name: ${{ inputs.tag }}
+ target_commitish: ${{ inputs.commit }}
+ draft: ${{ inputs.draft }}
+ prerelease: ${{ inputs.prerelease }}
+ fail_on_unmatched_files: ${{ inputs.fail_on_unmatched_files }}
+ files: ${{ inputs.files }}
+ env:
+ GITHUB_TOKEN: ${{ inputs.token }}
diff --git a/.github/actions/rl-scanner/action.yml b/.github/actions/rl-scanner/action.yml
new file mode 100644
index 000000000..03c378a0c
--- /dev/null
+++ b/.github/actions/rl-scanner/action.yml
@@ -0,0 +1,71 @@
+name: "Reversing Labs Scanner"
+description: "Runs the Reversing Labs scanner on a specified artifact."
+inputs:
+ artifact-path:
+ description: "Path to the artifact to be scanned."
+ required: true
+ version:
+ description: "Version of the artifact."
+ required: true
+
+runs:
+ using: "composite"
+ steps:
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.10"
+
+ - name: Install Python dependencies
+ shell: bash
+ run: |
+ pip install boto3 requests
+
+ - name: Configure AWS credentials
+ uses: aws-actions/configure-aws-credentials@v1
+ with:
+ role-to-assume: ${{ env.PRODSEC_TOOLS_ARN }}
+ aws-region: us-east-1
+ mask-aws-account-id: true
+
+ - name: Install RL Wrapper
+ shell: bash
+ run: |
+ pip install rl-wrapper>=1.0.0 --index-url "https://${{ env.PRODSEC_TOOLS_USER }}:${{ env.PRODSEC_TOOLS_TOKEN }}@a0us.jfrog.io/artifactory/api/pypi/python-local/simple"
+
+ - name: Run RL Scanner
+ shell: bash
+ env:
+ RLSECURE_LICENSE: ${{ env.RLSECURE_LICENSE }}
+ RLSECURE_SITE_KEY: ${{ env.RLSECURE_SITE_KEY }}
+ SIGNAL_HANDLER_TOKEN: ${{ env.SIGNAL_HANDLER_TOKEN }}
+ PYTHONUNBUFFERED: 1
+ run: |
+ if [ ! -f "${{ inputs.artifact-path }}" ]; then
+ echo "Artifact not found: ${{ inputs.artifact-path }}"
+ exit 1
+ fi
+
+ rl-wrapper \
+ --artifact "${{ inputs.artifact-path }}" \
+ --name "${{ github.event.repository.name }}" \
+ --version "${{ inputs.version }}" \
+ --repository "${{ github.repository }}" \
+ --commit "${{ github.sha }}" \
+ --build-env "github_actions" \
+ --suppress_output
+
+ # Check the outcome of the scanner
+ if [ $? -ne 0 ]; then
+ echo "RL Scanner failed."
+ echo "scan-status=failed" >> $GITHUB_ENV
+ exit 1
+ else
+ echo "RL Scanner passed."
+ echo "scan-status=success" >> $GITHUB_ENV
+ fi
+
+outputs:
+ scan-status:
+ description: "The outcome of the scan process."
+ value: ${{ env.scan-status }}
diff --git a/.github/actions/tag-exists/action.yml b/.github/actions/tag-exists/action.yml
new file mode 100644
index 000000000..b5fbdb730
--- /dev/null
+++ b/.github/actions/tag-exists/action.yml
@@ -0,0 +1,36 @@
+name: Return a boolean indicating if a tag already exists for the repository
+
+#
+# Returns a simple true/false boolean indicating whether the tag exists or not.
+#
+# TODO: Remove once the common repo is public.
+#
+
+inputs:
+ token:
+ required: true
+ tag:
+ required: true
+
+outputs:
+ exists:
+ description: 'Whether the tag exists or not'
+ value: ${{ steps.tag-exists.outputs.EXISTS }}
+
+runs:
+ using: composite
+
+ steps:
+ - id: tag-exists
+ shell: bash
+ run: |
+ GET_API_URL="https://api.github.com/repos/${GITHUB_REPOSITORY}/git/ref/tags/${TAG_NAME}"
+ http_status_code=$(curl -LI $GET_API_URL -o /dev/null -w '%{http_code}\n' -s -H "Authorization: token ${GITHUB_TOKEN}")
+ if [ "$http_status_code" -ne "404" ] ; then
+ echo "EXISTS=true" >> $GITHUB_OUTPUT
+ else
+ echo "EXISTS=false" >> $GITHUB_OUTPUT
+ fi
+ env:
+ TAG_NAME: ${{ inputs.tag }}
+ GITHUB_TOKEN: ${{ inputs.token }}
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..8cc9d6684
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,14 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
+
+ - package-ecosystem: "gradle"
+ directory: "lib"
+ schedule:
+ interval: "daily"
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-major"]
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/pull_request_template.md
similarity index 100%
rename from .github/PULL_REQUEST_TEMPLATE.md
rename to .github/pull_request_template.md
diff --git a/.github/stale.yml b/.github/stale.yml
new file mode 100644
index 000000000..b2e13fc71
--- /dev/null
+++ b/.github/stale.yml
@@ -0,0 +1,20 @@
+# Configuration for probot-stale - https://github.com/probot/stale
+
+# Number of days of inactivity before an Issue or Pull Request becomes stale
+daysUntilStale: 90
+
+# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
+daysUntilClose: 7
+
+# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
+exemptLabels: []
+
+# Set to true to ignore issues with an assignee (defaults to false)
+exemptAssignees: true
+
+# Label to use when marking as stale
+staleLabel: closed:stale
+
+# Comment to post when marking as stale. Set to `false` to disable
+markComment: >
+ This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you have not received a response for our team (apologies for the delay) and this is still a blocker, please reply with additional information or just a ping. Thank you for your contribution! 🙇♂️
\ No newline at end of file
diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
new file mode 100644
index 000000000..05ffc76b8
--- /dev/null
+++ b/.github/workflows/build-and-test.yml
@@ -0,0 +1,31 @@
+name: auth0/auth0-java/build-and-test
+
+on:
+ pull_request:
+ merge_group:
+ push:
+ branches: ["master", "main", "v3"]
+
+jobs:
+ gradle:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: 8
+
+ - name: Set up Gradle
+ uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+
+ - name: Test and Assemble with Gradle
+ run: ./gradlew assemble check --continue --console=plain
+
+ - uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
+ with:
+ flags: unittests
+ - uses: actions/upload-artifact@v5
+ with:
+ name: Reports
+ path: build/reports
diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml
new file mode 100644
index 000000000..096fd3dfc
--- /dev/null
+++ b/.github/workflows/gradle-wrapper-validation.yml
@@ -0,0 +1,10 @@
+name: "Validate Gradle Wrapper"
+on: [push, pull_request]
+
+jobs:
+ validation:
+ name: "validation/gradlew"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - uses: gradle/actions/wrapper-validation@v5
diff --git a/.github/workflows/java-release.yml b/.github/workflows/java-release.yml
new file mode 100644
index 000000000..89e7b9c09
--- /dev/null
+++ b/.github/workflows/java-release.yml
@@ -0,0 +1,92 @@
+name: Create Java and GitHub Release
+
+on:
+ workflow_call:
+ inputs:
+ java-version:
+ required: true
+ type: string
+
+ secrets:
+ ossr-username:
+ required: true
+ ossr-token:
+ required: true
+ signing-key:
+ required: true
+ signing-password:
+ required: true
+ github-token:
+ required: true
+
+### TODO: Replace instances of './.github/actions/' w/ `auth0/dx-sdk-actions/` and append `@latest` after the common `dx-sdk-actions` repo is made public.
+### TODO: Also remove `get-prerelease`, `get-version`, `release-create`, `tag-create` and `tag-exists` actions from this repo's .github/actions folder once the repo is public.
+
+jobs:
+ release:
+ if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/'))
+ runs-on: ubuntu-latest
+ environment: release
+
+ steps:
+ # Checkout the code
+ - uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ # Get the version from the branch name
+ - id: get_version
+ uses: ./.github/actions/get-version
+
+ # Get the prerelease flag from the branch name
+ - id: get_prerelease
+ uses: ./.github/actions/get-prerelease
+ with:
+ version: ${{ steps.get_version.outputs.version }}
+
+ # Get the release notes
+ - id: get_release_notes
+ uses: ./.github/actions/get-release-notes
+ with:
+ token: ${{ secrets.github-token }}
+ version: ${{ steps.get_version.outputs.version }}
+ repo_owner: ${{ github.repository_owner }}
+ repo_name: ${{ github.event.repository.name }}
+
+ # Check if the tag already exists
+ - id: tag_exists
+ uses: ./.github/actions/tag-exists
+ with:
+ tag: ${{ steps.get_version.outputs.version }}
+ token: ${{ secrets.github-token }}
+
+ # If the tag already exists, exit with an error
+ - if: steps.tag_exists.outputs.exists == 'true'
+ run: exit 1
+
+ # Set JAVA_HOME here and pass it to subsequent steps
+ - name: Set JAVA_HOME for Gradle
+ run: echo "JAVA_HOME=/home/runner/.sdkman/candidates/java/current" >> $GITHUB_ENV # This ensures JAVA_HOME is set globally
+ env:
+ SDKMAN_DIR: /home/runner/.sdkman
+
+ # Publish the release to Maven
+ - uses: ./.github/actions/maven-publish
+ with:
+ java-version: ${{ inputs.java-version }}
+ ossr-username: ${{ secrets.ossr-username }}
+ ossr-token: ${{ secrets.ossr-token }}
+ signing-key: ${{ secrets.signing-key }}
+ signing-password: ${{ secrets.signing-password }}
+ env:
+ JAVA_HOME: ${{ env.JAVA_HOME }}
+
+ # Create a release for the tag
+ - uses: ./.github/actions/release-create
+ with:
+ token: ${{ secrets.github-token }}
+ name: ${{ steps.get_version.outputs.version }}
+ body: ${{ steps.get_release_notes.outputs.release-notes }}
+ tag: ${{ steps.get_version.outputs.version }}
+ commit: ${{ github.sha }}
+ prerelease: ${{ steps.get_prerelease.outputs.prerelease }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 000000000..5bab2bc72
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,40 @@
+name: Create GitHub Release
+
+on:
+ pull_request:
+ types:
+ - closed
+ workflow_dispatch:
+
+permissions:
+ contents: write
+ id-token: write # This is required for requesting the JWT
+
+### TODO: Replace instances of './.github/workflows/' w/ `auth0/dx-sdk-actions/workflows/` and append `@latest` after the common `dx-sdk-actions` repo is made public.
+### TODO: Also remove `get-prerelease`, `get-release-notes`, `get-version`, `maven-publish`, `release-create`, and `tag-exists` actions from this repo's .github/actions folder once the repo is public.
+### TODO: Also remove `java-release` workflow from this repo's .github/workflows folder once the repo is public.
+
+jobs:
+ rl-scanner:
+ uses: ./.github/workflows/rl-scanner.yml
+ with:
+ java-version: 8
+ artifact-name: "auth0-java.tgz"
+ secrets:
+ RLSECURE_LICENSE: ${{ secrets.RLSECURE_LICENSE }}
+ RLSECURE_SITE_KEY: ${{ secrets.RLSECURE_SITE_KEY }}
+ SIGNAL_HANDLER_TOKEN: ${{ secrets.SIGNAL_HANDLER_TOKEN }}
+ PRODSEC_TOOLS_USER: ${{ secrets.PRODSEC_TOOLS_USER }}
+ PRODSEC_TOOLS_TOKEN: ${{ secrets.PRODSEC_TOOLS_TOKEN }}
+ PRODSEC_TOOLS_ARN: ${{ secrets.PRODSEC_TOOLS_ARN }}
+ release:
+ uses: ./.github/workflows/java-release.yml
+ needs: rl-scanner
+ with:
+ java-version: 8.0.382-tem
+ secrets:
+ ossr-username: ${{ secrets.OSSR_USERNAME }}
+ ossr-token: ${{ secrets.OSSR_TOKEN }}
+ signing-key: ${{ secrets.SIGNING_KEY }}
+ signing-password: ${{ secrets.SIGNING_PASSWORD }}
+ github-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/rl-scanner.yml b/.github/workflows/rl-scanner.yml
new file mode 100644
index 000000000..810c5277c
--- /dev/null
+++ b/.github/workflows/rl-scanner.yml
@@ -0,0 +1,70 @@
+name: RL-Secure Workflow
+
+on:
+ workflow_call:
+ inputs:
+ java-version:
+ required: true
+ type: string
+ artifact-name:
+ required: true
+ type: string
+ secrets:
+ RLSECURE_LICENSE:
+ required: true
+ RLSECURE_SITE_KEY:
+ required: true
+ SIGNAL_HANDLER_TOKEN:
+ required: true
+ PRODSEC_TOOLS_USER:
+ required: true
+ PRODSEC_TOOLS_TOKEN:
+ required: true
+ PRODSEC_TOOLS_ARN:
+ required: true
+jobs:
+ checkout-build-scan-only:
+ if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/'))
+ runs-on: ubuntu-latest
+ outputs:
+ scan-status: ${{ steps.rl-scan-conclusion.outcome }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+
+ - name: Set up Java
+ uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: ${{ inputs.java-version }}
+
+ - name: Set up Gradle
+ uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+
+ - name: Test and Assemble with Gradle
+ run: ./gradlew assemble check --continue --console=plain
+
+ - id: get_version
+ uses: ./.github/actions/get-version
+
+ - name: Create tgz build artifact
+ run: |
+ tar -czvf ${{ inputs.artifact-name }} *
+
+ - name: Run RL Scanner
+ id: rl-scan-conclusion
+ uses: ./.github/actions/rl-scanner
+ with:
+ artifact-path: "$(pwd)/${{ inputs.artifact-name }}"
+ version: "${{ steps.get_version.outputs.version }}"
+ env:
+ RLSECURE_LICENSE: ${{ secrets.RLSECURE_LICENSE }}
+ RLSECURE_SITE_KEY: ${{ secrets.RLSECURE_SITE_KEY }}
+ SIGNAL_HANDLER_TOKEN: ${{ secrets.SIGNAL_HANDLER_TOKEN }}
+ PRODSEC_TOOLS_USER: ${{ secrets.PRODSEC_TOOLS_USER }}
+ PRODSEC_TOOLS_TOKEN: ${{ secrets.PRODSEC_TOOLS_TOKEN }}
+ PRODSEC_TOOLS_ARN: ${{ secrets.PRODSEC_TOOLS_ARN }}
+
+ - name: Output scan result
+ run: echo "scan-status=${{ steps.rl-scan-conclusion.outcome }}" >> $GITHUB_ENV
diff --git a/.github/workflows/snyk.yml b/.github/workflows/snyk.yml
new file mode 100644
index 000000000..90a7c5213
--- /dev/null
+++ b/.github/workflows/snyk.yml
@@ -0,0 +1,39 @@
+name: Snyk
+
+on:
+ merge_group:
+ workflow_dispatch:
+ pull_request:
+ types:
+ - opened
+ - synchronize
+ push:
+ branches:
+ - master
+ schedule:
+ - cron: '30 0 1,15 * *'
+
+permissions:
+ contents: read
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
+
+jobs:
+
+ check:
+ name: Check for Vulnerabilities
+ runs-on: ubuntu-latest
+
+ steps:
+ - if: github.actor == 'dependabot[bot]' || github.event_name == 'merge_group'
+ run: exit 0 # Skip unnecessary test runs for dependabot and merge queues. Artifically flag as successful, as this is a required check for branch protection.
+
+ - uses: actions/checkout@v6
+ with:
+ ref: ${{ github.event.pull_request.head.sha || github.ref }}
+
+ - uses: snyk/actions/gradle-jdk11@9adf32b1121593767fc3c057af55b55db032dc04 # pin@1.0.0
+ env:
+ SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
diff --git a/.gitignore b/.gitignore
index c6f007a3e..d4199abc2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,127 +1,24 @@
-
-# Created by https://www.gitignore.io/api/java,gradle,osx,windows,intellij+iml
-
-### OSX ###
-*.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-# Thumbnails
-._*
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-
-### Windows ###
-# Windows thumbnail cache files
-Thumbs.db
-ehthumbs.db
-ehthumbs_vista.db
-
-# Folder config file
-Desktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
-
-
-### Java ###
*.class
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.ear
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-
-### Gradle ###
+.project
.gradle
-/build/
-
-# Ignore Gradle GUI config
-gradle-app.setting
-
-# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
-!gradle-wrapper.jar
-
-# Cache of project
-.gradletasknamecache
-
-# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
-# gradle/wrapper/gradle-wrapper.properties
-
-# End of https://www.gitignore.io/api/java,gradle,osx,windows
-
-
-### Intellij+iml ###
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff:
-.idea/workspace.xml
-.idea/tasks.xml
-
-# Sensitive or high-churn files:
-.idea/dataSources/
-.idea/dataSources.ids
-.idea/dataSources.xml
-.idea/dataSources.local.xml
-.idea/sqlDataSources.xml
-.idea/dynamic.xml
-.idea/uiDesigner.xml
-
-# Gradle:
-.idea/gradle.xml
-.idea/libraries
-
-# Mongo Explorer plugin:
-.idea/mongoSettings.xml
-
-## File-based project format:
-*.iws
-
-### Intellij+iml Patch ###
-# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
-
+?
+.classpath
+.checkstyle
+.settings
+.node
+build
+
+# IntelliJ
*.iml
-modules.xml
-.idea/misc.xml
*.ipr
-/out/
+*.iws
+.idea/
+out/
-# End of https://www.gitignore.io/api/intellij+iml
+# Eclipse/IntelliJ APT
+generated_src/
+generated_testSrc/
+generated/
-# NetBeans IDE files
-/.nb-gradle/
\ No newline at end of file
+bin
+build
\ No newline at end of file
diff --git a/.semgrepignore b/.semgrepignore
new file mode 100644
index 000000000..2ebacf0c1
--- /dev/null
+++ b/.semgrepignore
@@ -0,0 +1 @@
+src/test/
diff --git a/.shiprc b/.shiprc
new file mode 100644
index 000000000..f81a9f797
--- /dev/null
+++ b/.shiprc
@@ -0,0 +1,8 @@
+{
+ "files": {
+ "README.md": [],
+ ".version": [],
+ "build.gradle": ["version = \"{MAJOR}.{MINOR}.{PATCH}\""]
+ },
+ "prefixVersion": false
+}
diff --git a/.snyk b/.snyk
new file mode 100644
index 000000000..cf6ee0132
--- /dev/null
+++ b/.snyk
@@ -0,0 +1,25 @@
+# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
+version: v1.25.0
+# ignores vulnerabilities until expiry date; change duration by modifying expiry date
+ignore:
+ SNYK-JAVA-ORGJETBRAINSKOTLIN-2393744:
+ - '*':
+ reason: 'unaffected, only affects createTempFile and createTempDir kotlin function, which are not used'
+ expires: 2024-12-31T00:00:00.000Z
+ SNYK-JAVA-ORGBOUNCYCASTLE-5771339:
+ - '*':
+ reason: 'test-only dependency, no update available'
+ expires: 2024-12-31T00:00:00.000Z
+ SNYK-JAVA-ORGBOUNCYCASTLE-6084022:
+ - '*':
+ reason: 'test-only dependency, no update available'
+ expires: 2024-12-31T00:00:00.000Z
+ SNYK-JAVA-ORGBOUNCYCASTLE-6277380:
+ - '*':
+ reason: 'test-only dependency, no update available'
+ expires: 2024-12-31T00:00:00.000Z
+ SNYK-JAVA-ORGBOUNCYCASTLE-6613080:
+ - '*':
+ reason: 'test-only dependency, no update available'
+ expires: 2024-12-31T00:00:00.000Z
+patch: {}
diff --git a/.version b/.version
new file mode 100644
index 000000000..15a279981
--- /dev/null
+++ b/.version
@@ -0,0 +1 @@
+3.3.0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 20eb90990..a982f447c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,711 @@
# Change Log
+## [3.3.0](https://github.com/auth0/auth0-java/tree/3.3.0) (2026-03-11)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/3.2.0...3.3.0)
+
+**Added**
+- Add connection keys create endpoint and auth0Managed field in NetworkAclMatch [\#837](https://github.com/auth0/auth0-java/pull/837) ([fern-api[bot]](https://github.com/apps/fern-api))
+- Added AdditionalProperties field in ConnectionOptions and method overloading with RequestOptions [\#831](https://github.com/auth0/auth0-java/pull/831) ([fern-api[bot]](https://github.com/apps/fern-api))
+- Patch: Fixed Readme links and added Examples [\#836](https://github.com/auth0/auth0-java/pull/836) ([tanya732](https://github.com/tanya732))
+- Feat: Added DPoP Support and Modified Connection Strategy [\#830](https://github.com/auth0/auth0-java/pull/830) ([fern-api[bot]](https://github.com/apps/fern-api))
+
+## [3.2.0](https://github.com/auth0/auth0-java/tree/3.2.0) (2026-02-11)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/3.1.0...3.2.0)
+
+**Added**
+- Feat: Update shields field to enum in Patch Request payload and enabled_locales to enum in Update TenantSetting payload and Add pagination for Action Module Versions [\#825](https://github.com/auth0/auth0-java/pull/825) ([fern-api[bot]](https://github.com/apps/fern-api))
+
+## [3.1.0](https://github.com/auth0/auth0-java/tree/3.1.0) (2026-01-30)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/3.0.0...3.1.0)
+
+**Added**
+- Feat: Added Support for App Access Permission and Inbound User Directory GA [\#813](https://github.com/auth0/auth0-java/pull/813) ([fern-api[bot]](https://github.com/apps/fern-api))
+- Feat: Added Self Service Organization Domain Java Support [\#808](https://github.com/auth0/auth0-java/pull/808) ([fern-api[bot]](https://github.com/apps/fern-api))
+- Updated Readme [\#809](https://github.com/auth0/auth0-java/pull/809) ([tanya732](https://github.com/tanya732))
+
+## [3.0.0](https://github.com/auth0/auth0-java/tree/3.0.0) (2026-01-09)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.27.0...3.0.0)
+
+
+### Added Features
+
+- **New OpenAPI-generated Management API SDK**: Complete rewrite of the Management API client using Fern code generation.
+- **Improved type safety**: using enums
+- **Automatic pagination:** `SyncPagingIterable` for automatic pagination
+- **Nullability annotations** on generated POJOs
+- **error handling**: unified `ManagementApiException` class
+- Support for **explicit null values** in **PATCH** operations
+- **HTTP client** upgraded to **OkHttp 5.2.1**
+
+### ⚠️ Breaking Changes — Major Rewrite
+- The Management API client has been fully rewritten using Fern OpenAPI code generation. Applications migrating from v2.x must update their code.
+- **Key Breaking Changes**:
+ - Hierarchical sub-clients replace flat entity APIs.
+ - Manual pagination removed in favor of `SyncPagingIterable`.
+ - Unified exception handling via `ManagementApiException`.
+ - Client initialization updated to `ManagementApi.builder()`.
+ - Request and response models now use generated, immutable `*RequestContent`, `*ResponseContent`, and `*RequestParameters` types.
+ - Package structure updated across all Management API resources.
+
+### Deprecated APIs have been removed:
+- Removed deprecated AuthAPI constructors.
+- Removed legacy authentication and signup helpers.
+- Deprecated networking helpers removed:
+- Removed deprecated method from MultipartRequest.
+- Removed internal EmptyBodyVoidRequest
+- Removed HttpOptions
+- Removed EXAMPLES.md, refer [reference.md](https://github.com/auth0/auth0-java/blob/master/reference.md)
+
+
+### Migration Example
+
+#### Management API Client Initialization
+
+**Before (v2):**
+```java
+import com.auth0.client.mgmt.ManagementAPI;
+
+// Using domain and token
+ManagementAPI mgmt = ManagementAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_API_TOKEN}").build();
+
+// Using TokenProvider
+TokenProvider tokenProvider = SimpleTokenProvider.create("{YOUR_API_TOKEN}");
+ManagementAPI mgmt = ManagementAPI.newBuilder("{YOUR_DOMAIN}", tokenProvider).build();
+```
+
+**After (v3 – Standard Token-Based):**
+```java
+import com.auth0.client.mgmt.ManagementApi;
+
+ManagementApi client = ManagementApi
+ .builder()
+ .url("https://{YOUR_DOMAIN}/api/v2")
+ .token("{YOUR_API_TOKEN}")
+ .build();
+```
+
+**Note**: The Authentication API remains supported, with deprecated APIs removed.
+A complete migration guide is available at [MIGRATION_GUIDE](MIGRATION_GUIDE.md).
+
+## [3.0.0-beta.0](https://github.com/auth0/auth0-java/tree/3.0.0-beta.0) (2025-12-18)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.27.0...3.0.0-beta.0)
+
+> **Warning** This SDK is in beta and is subject to breaking changes. It is not recommended for production use, but your feedback and help in testing is appreciated!
+
+**Added**
+- Complete rewrite of the **Management API client** using Fern code generation
+- Update OkHttp to 5.2.1
+- API attributes can set null for patch operations
+- Nullability annotations to POJO classes
+- Fully compatible **Authentication API client** — no breaking changes
+
+- [Migration guide](MIGRATION_GUIDE) available for upgrading from v2.x
+
+
+## [2.27.0](https://github.com/auth0/auth0-java/tree/2.27.0) (2025-12-18)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.26.0...2.27.0)
+
+**Added**
+- Feat: Add Google WorkSpace Provisioning Config Support [\#795](https://github.com/auth0/auth0-java/pull/795) ([tanya732](https://github.com/tanya732))
+
+**Fixed**
+- Fix: updated token_lifetime to Integer [\#797](https://github.com/auth0/auth0-java/pull/797) ([tanya732](https://github.com/tanya732))
+
+## [2.26.0](https://github.com/auth0/auth0-java/tree/2.26.0) (2025-10-24)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.25.0...2.26.0)
+
+**Added**
+- Adenix/client is token endpoint id header trusted [\#782](https://github.com/auth0/auth0-java/pull/782) ([tanya732](https://github.com/tanya732))
+- Feat: add constructor to set clientId on Client creation [\#781](https://github.com/auth0/auth0-java/pull/781) ([tanya732](https://github.com/tanya732))
+
+## [2.25.0](https://github.com/auth0/auth0-java/tree/2.25.0) (2025-09-30)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.24.0...2.25.0)
+
+**Added**
+- Added UserAttributeProfilePage and Deserializer [\#768](https://github.com/auth0/auth0-java/pull/768) ([tanya732](https://github.com/tanya732))
+- Added checkpoint pagination support for Connection Endpoint [\#767](https://github.com/auth0/auth0-java/pull/767) ([tanya732](https://github.com/tanya732))
+- Sdk 6843 self service provisioning java support [\#765](https://github.com/auth0/auth0-java/pull/765) ([tanya732](https://github.com/tanya732))
+- Support for patch clients credentials [\#760](https://github.com/auth0/auth0-java/pull/760) ([tanya732](https://github.com/tanya732))
+
+**Fixed**
+- Fix: URL Encodings [\#766](https://github.com/auth0/auth0-java/pull/766) ([tanya732](https://github.com/tanya732))
+- Fix: Updated to requested_expiry params [\#757](https://github.com/auth0/auth0-java/pull/757) ([tanya732](https://github.com/tanya732))
+
+## [2.24.0](https://github.com/auth0/auth0-java/tree/2.24.0) (2025-08-22)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.23.0...2.24.0)
+
+**Added**
+- Update Readme and Examples [\#752](https://github.com/auth0/auth0-java/pull/752) ([tanya732](https://github.com/tanya732))
+- Customize management api token provider [\#748](https://github.com/auth0/auth0-java/pull/748) ([tanya732](https://github.com/tanya732))
+- Joaosoumoreira/add method to enroll email mfa [\#744](https://github.com/auth0/auth0-java/pull/744) ([tanya732](https://github.com/tanya732))
+
+## [2.23.0](https://github.com/auth0/auth0-java/tree/2.23.0) (2025-08-05)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.22.0...2.23.0)
+
+**Added**
+- Added support for Tenant ACL [\#723](https://github.com/auth0/auth0-java/pull/723) ([tanya732](https://github.com/tanya732))
+- Added organization support for Change Password [\#726](https://github.com/auth0/auth0-java/pull/726) ([tanya732](https://github.com/tanya732))
+- Fix: Resource Server Scopes [\#725](https://github.com/auth0/auth0-java/pull/725) ([tanya732](https://github.com/tanya732))
+
+## [2.22.0](https://github.com/auth0/auth0-java/tree/2.22.0) (2025-06-20)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.21.0...2.22.0)
+
+**Added**
+- Added support for connectionKeys Endpoint [\#721](https://github.com/auth0/auth0-java/pull/721) ([tanya732](https://github.com/tanya732))
+
+## [2.21.0](https://github.com/auth0/auth0-java/tree/2.21.0) (2025-05-30)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.20.0...2.21.0)
+
+**Added**
+- SDK Limit M2M Java Support [\#708](https://github.com/auth0/auth0-java/pull/708) ([tanya732](https://github.com/tanya732))
+- Added support for GET/PATCH Connection Endpoints [\#718](https://github.com/auth0/auth0-java/pull/718) ([tanya732](https://github.com/tanya732))
+- Added support for EmailTemplate [\#720](https://github.com/auth0/auth0-java/pull/720) ([tanya732](https://github.com/tanya732))
+
+**Fixed**
+- Updated EnabledConnection [\#719](https://github.com/auth0/auth0-java/pull/719) ([tanya732](https://github.com/tanya732))
+
+## [2.20.0](https://github.com/auth0/auth0-java/tree/2.20.0) (2025-05-06)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.19.0...2.20.0)
+
+**Fixed**
+- Fixed POST/PATCH connection endpoints [\#710](https://github.com/auth0/auth0-java/pull/710) ([tanya732](https://github.com/tanya732))
+- Fix log event [\#711](https://github.com/auth0/auth0-java/pull/711) ([tanya732](https://github.com/tanya732))
+
+## [2.19.0](https://github.com/auth0/auth0-java/tree/2.19.0) (2025-03-28)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.18.0...2.19.0)
+
+**Added**
+- Added support for SSO-FF [\#702](https://github.com/auth0/auth0-java/pull/702) ([tanya732](https://github.com/tanya732))
+- Check point pagination support for get connection [\#704](https://github.com/auth0/auth0-java/pull/704) ([tanya732](https://github.com/tanya732))
+
+## [2.18.0](https://github.com/auth0/auth0-java/tree/2.18.0) (2025-02-19)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.17.0...2.18.0)
+
+**Added**
+- Added missing fields in LogEventClass [\#698](https://github.com/auth0/auth0-java/pull/698) ([tanya732](https://github.com/tanya732))
+- Added support for revoke session endpoint [\#699](https://github.com/auth0/auth0-java/pull/699) ([tanya732](https://github.com/tanya732))
+- Added Connection's SCIM Server Support [\#696](https://github.com/auth0/auth0-java/pull/696) ([tanya732](https://github.com/tanya732))
+
+## [2.17.0](https://github.com/auth0/auth0-java/tree/2.17.0) (2025-01-10)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.16.0...2.17.0)
+
+**Added**
+- Update EXAMPLES.md to fix variable usage [\#690](https://github.com/auth0/auth0-java/pull/690) ([tanya732](https://github.com/tanya732))
+- Added Support for Self-Service-Profile [\#683](https://github.com/auth0/auth0-java/pull/683) ([tanya732](https://github.com/tanya732))
+- Added support for Back Channel Login [\#682](https://github.com/auth0/auth0-java/pull/682) ([tanya732](https://github.com/tanya732))
+
+## [2.17.0](https://github.com/auth0/auth0-java/tree/2.17.0) (2025-01-08)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.16.0...2.17.0)
+
+**Added**
+- Update EXAMPLES.md to fix variable usage [\#690](https://github.com/auth0/auth0-java/pull/690) ([tanya732](https://github.com/tanya732))
+- Added Support for Self-Service-Profile [\#683](https://github.com/auth0/auth0-java/pull/683) ([tanya732](https://github.com/tanya732))
+- Added support for Back Channel Login [\#682](https://github.com/auth0/auth0-java/pull/682) ([tanya732](https://github.com/tanya732))
+
+## [2.16.0](https://github.com/auth0/auth0-java/tree/2.16.0) (2024-12-03)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.15.0...2.16.0)
+
+**Added**
+- Added support for custom prompts [\#680](https://github.com/auth0/auth0-java/pull/680) ([tanya732](https://github.com/tanya732))
+- Added phone number identifier in signup Auth API [\#679](https://github.com/auth0/auth0-java/pull/679) ([tanya732](https://github.com/tanya732))
+- Added is_signup_enabled field to OrganizationConnection [\#677](https://github.com/auth0/auth0-java/pull/677) ([tanya732](https://github.com/tanya732))
+
+## [2.15.0](https://github.com/auth0/auth0-java/tree/2.15.0) (2024-10-31)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.14.0...2.15.0)
+
+**Added**
+- Added support for byok [\#673](https://github.com/auth0/auth0-java/pull/673) ([tanya732](https://github.com/tanya732))
+
+## [2.14.0](https://github.com/auth0/auth0-java/tree/2.14.0) (2024-10-16)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.13.0...2.14.0)
+
+**Added**
+- SDKs support for Control Your Own Key [\#671](https://github.com/auth0/auth0-java/pull/671) ([tanya732](https://github.com/tanya732))
+- Added client credentials changes [\#670](https://github.com/auth0/auth0-java/pull/670) ([tanya732](https://github.com/tanya732))
+- Added support for HRI phase 2 changes [\#668](https://github.com/auth0/auth0-java/pull/668) ([tanya732](https://github.com/tanya732))
+
+## [2.13.0](https://github.com/auth0/auth0-java/tree/2.13.0) (2024-09-11)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.12.0...2.13.0)
+
+**Added**
+- Add sessions and refresh tokens to Users Management API [\#661](https://github.com/auth0/auth0-java/pull/661) ([tanya732](https://github.com/tanya732))
+
+## [2.12.0](https://github.com/auth0/auth0-java/tree/2.12.0) (2024-05-29)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.11.0...2.12.0)
+
+**Added**
+- Support delete all authentication methods endpoint [\#645](https://github.com/auth0/auth0-java/pull/645) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.11.0](https://github.com/auth0/auth0-java/tree/2.11.0) (2024-04-29)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.10.1...2.11.0)
+
+**Added**
+- [SDK-4763] - RIch Authorization Request (RAR) [\#637](https://github.com/auth0/auth0-java/pull/637) ([jimmyjames](https://github.com/jimmyjames))
+- [SDK-4763] - Add support for HRI Management API changes [\#635](https://github.com/auth0/auth0-java/pull/635) ([jimmyjames](https://github.com/jimmyjames))
+- [SDK-4763] - add support for JAR and PAR with JAR to Authentication API [\#636](https://github.com/auth0/auth0-java/pull/636) ([jimmyjames](https://github.com/jimmyjames))
+- [SDK-4769] - add show_as_button to Organization Enabled Connections [\#631](https://github.com/auth0/auth0-java/pull/631) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.10.1](https://github.com/auth0/auth0-java/tree/2.10.1) (2024-01-29)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.10.0...2.10.1)
+
+**Deprecated**
+- Organizations API no longer returns enabled_connections [\#604](https://github.com/auth0/auth0-java/pull/604) ([jimmyjames](https://github.com/jimmyjames))
+
+# [2.10.0](https://github.com/auth0/auth0-java/tree/2.10.0) (2023-12-15)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.9.0...2.10.0)
+
+**Added**
+- support backchannel logout property on Client [\#587](https://github.com/auth0/auth0-java/pull/587) ([jimmyjames](https://github.com/jimmyjames))
+
+# [2.9.0](https://github.com/auth0/auth0-java/tree/2.9.0) (2023-11-21)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.8.0...2.9.0)
+
+**Added**
+- Support organization in client credentials [\#582](https://github.com/auth0/auth0-java/pull/582) ([jimmyjames](https://github.com/jimmyjames))
+
+# [2.8.0](https://github.com/auth0/auth0-java/tree/2.8.0) (2023-11-07)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.7.0...2.8.0)
+
+**Fixed**
+- Propagate error messages on rate limit exceptions [\#579](https://github.com/auth0/auth0-java/pull/579) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.7.0](https://github.com/auth0/auth0-java/tree/2.7.0) (2023-10-31)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.6.1...2.7.0)
+
+**Added**
+- Support organization get member roles [\#574](https://github.com/auth0/auth0-java/pull/574) ([jimmyjames](https://github.com/jimmyjames))
+- Add passkey properties to authentication method response [\#575](https://github.com/auth0/auth0-java/pull/575) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.6.1](https://github.com/auth0/auth0-java/tree/2.6.1) (2023-09-22)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.6.0...2.6.1)
+
+**Security**
+- Update Okio to resolve CVE-2023-3635 [\#560](https://github.com/auth0/auth0-java/pull/560) ([evansims](https://github.com/evansims))
+
+## [2.6.0](https://github.com/auth0/auth0-java/tree/2.6.0) (2023-09-07)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.5.0...2.6.0)
+
+**Security**
+- Update OkHttp to 4.11.0 [\#558](https://github.com/auth0/auth0-java/pull/558) ([evansims](https://github.com/evansims))
+
+**Fixed**
+- Align json property 'cross_origin_authentication' with api docs [\#555](https://github.com/auth0/auth0-java/pull/555) ([Jojo134](https://github.com/Jojo134))
+
+## [2.5.0](https://github.com/auth0/auth0-java/tree/2.5.0) (2023-07-18)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.4.0...2.5.0)
+
+**Added**
+- Support Organization Name on Authorize URL [\#550](https://github.com/auth0/auth0-java/pull/550) ([vasantteja](https://github.com/vasantteja))
+
+**Fixed**
+- Fix deleteAuthenticationMethodById [\#552](https://github.com/auth0/auth0-java/pull/552) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.4.0](https://github.com/auth0/auth0-java/tree/2.4.0) (2023-06-15)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.3.0...2.4.0)
+
+**Added**
+- Support delete authenticator endpoint [\#541](https://github.com/auth0/auth0-java/pull/541) ([vasantteja](https://github.com/vasantteja))
+- Support invalidate remembered browsers endpoint [\#543](https://github.com/auth0/auth0-java/pull/543) ([jimmyjames](https://github.com/jimmyjames))
+
+**Fixed**
+- Export users does not require connection_id [\#537](https://github.com/auth0/auth0-java/pull/537) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.3.0](https://github.com/auth0/auth0-java/tree/2.3.0) (2023-05-11)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.2.0...2.3.0)
+
+**Added**
+- Support Pushed Authorization Requests [\#534](https://github.com/auth0/auth0-java/pull/534) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.2.0](https://github.com/auth0/auth0-java/tree/2.2.0) (2023-05-02)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.1.0...2.2.0)
+
+**Added**
+- Add support for client credential management [\#525](https://github.com/auth0/auth0-java/pull/525) ([jimmyjames](https://github.com/jimmyjames))
+
+**Fixed**
+- Fix headers to lowercase [\#528](https://github.com/auth0/auth0-java/pull/528) ([alexz75](https://github.com/alexz75))
+
+
+## [2.1.0](https://github.com/auth0/auth0-java/tree/2.1.0) (2023-03-31)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.0.0...2.1.0)
+
+**Added**
+- Add missing LogEvent fields [\#521](https://github.com/auth0/auth0-java/pull/521) ([jimmyjames](https://github.com/jimmyjames))
+
+**Changed**
+- authentication_methods is an object, not a string [\#520](https://github.com/auth0/auth0-java/pull/520) ([jimmyjames](https://github.com/jimmyjames))
+- Bump jackson dependency to 2.14.2 [\#522](https://github.com/auth0/auth0-java/pull/522) ([jimmyjames](https://github.com/jimmyjames))
+- Update java-jwt dependency to 4.4.0 [\#523](https://github.com/auth0/auth0-java/pull/523) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.0.0](https://github.com/auth0/auth0-java/tree/2.0.0) (2023-02-23)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.44.2...2.0.0)
+
+2.0.0 introduces several enhances, including:
+- HTTP response information returned from requests
+- Additional HTTP client configurability
+- Ability to configure requests such as add additional parameters and headers
+- Support for Authentication API MFA-related APIs
+- Authentication API improvements to not require a client secret
+- ... and more!
+
+As a major version release, 2.0.0 does include breaking changes.
+
+## [2.0.0 Beta 2](https://github.com/auth0/auth0-java/tree/2.0.0-beta.2) (2023-02-13)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.0.0-beta.1...2.0.0-beta.2)
+
+**Changed**
+- Update to latest java-jwt version [\#512](https://github.com/auth0/auth0-java/pull/512) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.0.0 Beta 1](https://github.com/auth0/auth0-java/tree/2.0.0-beta.1) (2023-01-26)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/2.0.0-beta.0...2.0.0-beta.1)
+
+**Added**
+- Add support for MFA APIs [\#505](https://github.com/auth0/auth0-java/pull/505) ([poovamraj](https://github.com/poovamraj))
+- Add support MFA Methods API [\#506](https://github.com/auth0/auth0-java/pull/506) ([poovamraj](https://github.com/poovamraj))
+- Support JWT Client Authentication [\#507](https://github.com/auth0/auth0-java/pull/507) ([jimmyjames](https://github.com/jimmyjames))
+
+## [2.0.0 Beta 0](https://github.com/auth0/auth0-java/tree/2.0.0-beta.0) (2023-01-12)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.44.2...2.0.0-beta.0)
+
+> **Warning** This SDK is in beta and is subject to breaking changes. It is not recommended for production use, but your feedback and help in testing is appreciated!
+
+This release introduces several enhancement, including:
+- HTTP response information returned from requests
+- Additional HTTP client configurability
+- Authentication API improvements to not require a client secret
+- ... and more!
+
+## [1.44.2](https://github.com/auth0/auth0-java/tree/1.44.2) (2023-01-11)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.44.1...1.44.2)
+
+This patch release does not contain any functional changes, but is being released using an updated signing key for verification as part of our commitment to best security practices.
+Please review [the README note for additional details.](https://github.com/auth0/auth0-java/blob/master/README.md)
+
+**Security**
+- Bump java-jwt dependency to 3.19.4 [\#498](https://github.com/auth0/auth0-java/pull/498) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.44.1](https://github.com/auth0/auth0-java/tree/1.44.1) (2022-10-25)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.44.0...1.44.1)
+
+**Security**
+- Bump `java-jwt` to 3.19.3 [\#465](https://github.com/auth0/auth0-java/pull/465) ([jimmyjames](https://github.com/jimmyjames))
+- Bump `com.fasterxml.jackson.core:jackson-databind` to 2.13.4.2 [\#464](https://github.com/auth0/auth0-java/pull/464) ([evansims](https://github.com/evansims))
+
+## [1.44.0](https://github.com/auth0/auth0-java/tree/1.44.0) (2022-10-20)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.43.0...1.44.0)
+
+**Added**
+- Integrate ship orb [\#458](https://github.com/auth0/auth0-java/pull/458) ([jimmyjames](https://github.com/jimmyjames))
+- [SDK-2558] Add support for tenant session cookie [\#457](https://github.com/auth0/auth0-java/pull/457) ([jimmyjames](https://github.com/jimmyjames))
+- Support stage property on Breached Password Detection [\#456](https://github.com/auth0/auth0-java/pull/456) ([ewanharris](https://github.com/ewanharris))
+
+**Changed**
+- Update to Gradle 6.9.2 [\#455](https://github.com/auth0/auth0-java/pull/455) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.43.0](https://github.com/auth0/auth0-java/tree/1.43.0) (2022-09-19)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.42.0...1.43.0)
+
+**Added**
+- Add support for deleting all user's authenticators [\#451](https://github.com/auth0/auth0-java/pull/451) ([jimmyjames](https://github.com/jimmyjames))
+- Add session idle lifetime and make session lifetime doubles [\#423](https://github.com/auth0/auth0-java/pull/423) ([pelletier197](https://github.com/pelletier197))
+- #448 Adding field filter option to get client by ID API [\#449](https://github.com/auth0/auth0-java/pull/449) ([bhatmadhavi](https://github.com/bhatmadhavi))
+- Add missing fields in Client model [\#444](https://github.com/auth0/auth0-java/pull/444) ([poovamraj](https://github.com/poovamraj))
+- Add Ship CLI configuration [\#433](https://github.com/auth0/auth0-java/pull/433) ([frederikprijck](https://github.com/frederikprijck))
+
+**Changed**
+- Update to OSS plugin version 0.17.2 [\#450](https://github.com/auth0/auth0-java/pull/450) ([jimmyjames](https://github.com/jimmyjames))
+- Bump oss-library and auth0/ship [\#441](https://github.com/auth0/auth0-java/pull/441) ([frederikprijck](https://github.com/frederikprijck))
+- Ensure version is defined before plugins are applied [\#439](https://github.com/auth0/auth0-java/pull/439) ([frederikprijck](https://github.com/frederikprijck))
+
+**Security**
+- Replace Codecov uploader w/ CircleCI Orb [\#446](https://github.com/auth0/auth0-java/pull/446) ([evansims](https://github.com/evansims))
+- Security: Update OkHttp to 4.10.0 [\#438](https://github.com/auth0/auth0-java/pull/438) ([evansims](https://github.com/evansims))
+
+## [1.42.0](https://github.com/auth0/auth0-java/tree/1.42.0) (2022-05-20)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.41.0...1.42.0)
+
+**Added**
+- Added support for Key management API [\#431](https://github.com/auth0/auth0-java/pull/431) ([poovamraj](https://github.com/poovamraj))
+- Support for custom scheme URL [\#429](https://github.com/auth0/auth0-java/pull/429) ([poovamraj](https://github.com/poovamraj))
+- Add enabled connections on organization [\#426](https://github.com/auth0/auth0-java/pull/426) ([charliearaya](https://github.com/charliearaya))
+
+## [1.41.0](https://github.com/auth0/auth0-java/tree/1.41.0) (2022-04-19)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.40.2...1.41.0)
+
+**Fixed**
+- Do not cast error values to String [\#421](https://github.com/auth0/auth0-java/pull/421) ([jimmyjames](https://github.com/jimmyjames))
+- Fix double-encoding of log event filter query param [\#420](https://github.com/auth0/auth0-java/pull/420) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.40.2](https://github.com/auth0/auth0-java/tree/1.40.2) (2022-04-07)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.40.1...1.40.2)
+
+**Security**
+- Update OkHttp to address CVE-2021-0341 [\#417](https://github.com/auth0/auth0-java/pull/417) ([lbalmaceda](https://github.com/lbalmaceda))
+
+## [1.40.1](https://github.com/auth0/auth0-java/tree/1.40.1) (2022-03-30)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.40.0...1.40.1)
+
+**Security**
+- Bump java-jwt to 3.19.1 [\#415](https://github.com/auth0/auth0-java/pull/415) ([poovamraj](https://github.com/poovamraj))
+- Security: Bump `jackson-databind` to 2.13.2.2 [\#414](https://github.com/auth0/auth0-java/pull/414) ([evansims](https://github.com/evansims))
+
+## [1.40.0](https://github.com/auth0/auth0-java/tree/1.40.0) (2022-03-14)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.39.0...1.40.0)
+
+**Changed**
+- Update java-jwt dependency [\#413](https://github.com/auth0/auth0-java/pull/413) ([jimmyjames](https://github.com/jimmyjames))
+
+**Security**
+- Bump `jackson-databind` dependency to 2.13.2 [\#411](https://github.com/auth0/auth0-java/pull/411) ([evansims](https://github.com/evansims))
+
+## [1.39.0](https://github.com/auth0/auth0-java/tree/1.39.0) (2022-02-18)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.38.0...1.39.0)
+
+**Added**
+- [SDK-3116] Add support for Attack Protection APIs [\#405](https://github.com/auth0/auth0-java/pull/405) ([jimmyjames](https://github.com/jimmyjames))
+- Feature/add branding [\#399](https://github.com/auth0/auth0-java/pull/399) ([pelletier197](https://github.com/pelletier197))
+
+**Changed**
+- Feature/reduce duplication [\#381](https://github.com/auth0/auth0-java/pull/381) ([pelletier197](https://github.com/pelletier197))
+
+## [1.38.0](https://github.com/auth0/auth0-java/tree/1.38.0) (2022-02-01)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.37.0...1.38.0)
+
+**Added**
+- Support maxRequests and maxRequestsPerHost client confiugrations [\#402](https://github.com/auth0/auth0-java/pull/402) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.37.0](https://github.com/auth0/auth0-java/tree/1.37.0) (2022-01-20)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.36.1...1.37.0)
+
+**Added**
+- Add support for Connection realms [\#397](https://github.com/auth0/auth0-java/pull/397) ([jimmyjames](https://github.com/jimmyjames))
+- Improve logging [\#392](https://github.com/auth0/auth0-java/pull/392) ([jimmyjames](https://github.com/jimmyjames))
+
+**Deprecated**
+- Deprecate setLoggingEnabled on API clients [\#396](https://github.com/auth0/auth0-java/pull/396) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.36.1](https://github.com/auth0/auth0-java/tree/1.36.1) (2022-01-14)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.36.0...1.36.1)
+
+**Security**
+- Update jackson dependency [\#394](https://github.com/auth0/auth0-java/pull/394) ([poovamraj](https://github.com/poovamraj))
+
+## [1.36.0](https://github.com/auth0/auth0-java/tree/1.36.0) (2022-01-10)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.35.0...1.36.0)
+
+**Fixed**
+- [SDK-2975] Fix withOrganization method visibility on token verifier [\#388](https://github.com/auth0/auth0-java/pull/388) ([jimmyjames](https://github.com/jimmyjames))
+- remove warning for untyped requests [\#385](https://github.com/auth0/auth0-java/pull/385) ([pelletier197](https://github.com/pelletier197))
+
+## [1.35.0](https://github.com/auth0/auth0-java/tree/1.35.0) (2021-10-20)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.34.1...1.35.0)
+
+**Added**
+- Added get job error details method to JobEntity [\#383](https://github.com/auth0/auth0-java/pull/383) ([jasonfagerberg-toast](https://github.com/jasonfagerberg-toast))
+- Add MFA Authentication policies to GuardianEntity [\#379](https://github.com/auth0/auth0-java/pull/379) ([pelletier197](https://github.com/pelletier197))
+
+**Fixed**
+- Fix de/serialization of Invitation roles [\#380](https://github.com/auth0/auth0-java/pull/380) ([lbalmaceda](https://github.com/lbalmaceda))
+
+## [1.34.1](https://github.com/auth0/auth0-java/tree/1.34.1) (2021-09-21)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.34.0...1.34.1)
+
+**Fixed**
+- Add user_name field to LogEvent [\#375](https://github.com/auth0/auth0-java/pull/375) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.34.0](https://github.com/auth0/auth0-java/tree/1.34.0) (2021-08-27)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.33.0...1.34.0)
+
+**Added**
+- Include log_id in the LogEvent entity [\#372](https://github.com/auth0/auth0-java/pull/372) ([jimmyjames](https://github.com/jimmyjames))
+- [SDK-2716] Add support for Actions Management APIs [\#369](https://github.com/auth0/auth0-java/pull/369) ([jimmyjames](https://github.com/jimmyjames))
+- [SDK-2686] Add retry on rate limit errors for management API [\#368](https://github.com/auth0/auth0-java/pull/368) ([jimmyjames](https://github.com/jimmyjames))
+
+**Fixed**
+- Fix to rollback action version endpoint [\#370](https://github.com/auth0/auth0-java/pull/370) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.33.0](https://github.com/auth0/auth0-java/tree/1.33.0) (2021-07-26)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.32.0...1.33.0)
+
+**Added**
+- [SDK-2664] Add support for checkpoint pagination [\#362](https://github.com/auth0/auth0-java/pull/362) ([jimmyjames](https://github.com/jimmyjames))
+
+**Deprecated**
+- Deprecate unused constructors in Page implementations [\#363](https://github.com/auth0/auth0-java/pull/363) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.32.0](https://github.com/auth0/auth0-java/tree/1.32.0) (2021-07-05)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.31.0...1.32.0)
+
+**Added**
+- [SDK-2622] Add expiresAt to token response [\#357](https://github.com/auth0/auth0-java/pull/357) ([jimmyjames](https://github.com/jimmyjames))
+
+**Changed**
+- Update OSS release plugin version [\#358](https://github.com/auth0/auth0-java/pull/358) ([lbalmaceda](https://github.com/lbalmaceda))
+
+## [1.31.0](https://github.com/auth0/auth0-java/tree/1.31.0) (2021-05-10)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.30.0...1.31.0)
+
+**Added**
+- [SDK-2550] Add networking client timeout configuration [\#354](https://github.com/auth0/auth0-java/pull/354) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.30.0](https://github.com/auth0/auth0-java/tree/1.30.0) (2021-04-28)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.29.0...1.30.0)
+
+**Added**
+- [SDK-2537] Add missing parameters to Ticket entities [\#352](https://github.com/auth0/auth0-java/pull/352) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.29.0](https://github.com/auth0/auth0-java/tree/1.29.0) (2021-04-09)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.28.1...1.29.0)
+
+**Added**
+- Adds method to get an organization's enabled connection and update JavaDocs [\#344](https://github.com/auth0/auth0-java/pull/344) ([jimmyjames](https://github.com/jimmyjames))
+- Add Organizations Management API Support [SDK-2437] [\#341](https://github.com/auth0/auth0-java/pull/341) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.28.1](https://github.com/auth0/auth0-java/tree/1.28.1) (2021-04-05)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.28.0...1.28.1)
+
+**Fixed**
+- Fix `NoSuchMethodError` when projects have OkHttp 3 dependency [\#342](https://github.com/auth0/auth0-java/pull/342) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.28.0](https://github.com/auth0/auth0-java/tree/1.28.0) (2021-03-25)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.27.0...1.28.0)
+
+**Added**
+- Add support for organizations feature [\#338](https://github.com/auth0/auth0-java/pull/338) ([jimmyjames](https://github.com/jimmyjames))
+
+**Changed**
+- Update Gradle OSS Plugin [\#339](https://github.com/auth0/auth0-java/pull/339) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.27.0](https://github.com/auth0/auth0-java/tree/1.27.0) (2021-02-05)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.26.0...1.27.0)
+
+**Added**
+- Add support for async requests [\#328](https://github.com/auth0/auth0-java/pull/328) ([jimmyjames](https://github.com/jimmyjames))
+
+**Changed**
+- Update dependency versions [\#329](https://github.com/auth0/auth0-java/pull/329) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.26.0](https://github.com/auth0/auth0-java/tree/1.26.0) (2020-12-02)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.25.0...1.26.0)
+
+**Added**
+- Add refresh token configuration object to client [\#321](https://github.com/auth0/auth0-java/pull/321) ([JakeUskoski](https://github.com/JakeUskoski))
+
+**Fixed**
+- Fix OkHttp dependency version [\#325](https://github.com/auth0/auth0-java/pull/325) ([jimmyjames](https://github.com/jimmyjames))
+- Tidy up code [\#317](https://github.com/auth0/auth0-java/pull/317) ([jsalinaspolo](https://github.com/jsalinaspolo))
+
+## [1.25.0](https://github.com/auth0/auth0-java/tree/1.25.0) (2020-11-16)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.24.0...1.25.0)
+
+**Changed**
+- Update to OkHttp 4 [\#319](https://github.com/auth0/auth0-java/pull/319) ([jimmyjames](https://github.com/jimmyjames))
+- Use java8 [\#316](https://github.com/auth0/auth0-java/pull/316) ([jsalinaspolo](https://github.com/jsalinaspolo))
+
+## [1.24.0](https://github.com/auth0/auth0-java/tree/1.24.0) (2020-11-02)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.23.0...1.24.0)
+
+**Added**
+- Add methods to determine cause of APIException [\#310](https://github.com/auth0/auth0-java/pull/310) ([jimmyjames](https://github.com/jimmyjames))
+
+**Breaking Changes**
+- Return TokenRequest instead of AuthRequest [\#309](https://github.com/auth0/auth0-java/pull/309) ([jimmyjames](https://github.com/jimmyjames))
+
+> Note: We aim to not introduce breaking changes within a release stream. We have taken steps, including running API compatibility checks, to prevent introducing breaking changes in the future.
+
+**Fixed**
+- Add unchecked warnings failures for src [\#311](https://github.com/auth0/auth0-java/pull/311) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.23.0](https://github.com/auth0/auth0-java/tree/1.23.0) (2020-10-22)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.22.1...1.23.0)
+
+**Added**
+- Add support for MFA OTP exchange [\#303](https://github.com/auth0/auth0-java/pull/303) ([jimmyjames](https://github.com/jimmyjames))
+- Passwordless support [\#300](https://github.com/auth0/auth0-java/pull/300) ([jimmyjames](https://github.com/jimmyjames))
+- Add scope to TokenHolder [\#297](https://github.com/auth0/auth0-java/pull/297) ([jimmyjames](https://github.com/jimmyjames))
+- Add inicludeEmailInRedirect field for create email verification ticket endpoint [\#296](https://github.com/auth0/auth0-java/pull/296) ([jimmyjames](https://github.com/jimmyjames))
+
+**Changed**
+- Update dependencies [\#299](https://github.com/auth0/auth0-java/pull/299) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.22.1](https://github.com/auth0/auth0-java/tree/1.22.1) (2020-10-13)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.22.0...1.22.1)
+
+**Fixed**
+- Use Standard Jackson Date serialization [\#295](https://github.com/auth0/auth0-java/pull/295) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.22.0](https://github.com/auth0/auth0-java/tree/1.22.0) (2020-09-28)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.21.0...1.22.0)
+
+**Added**
+- Add support for identity field for email verification jobs and tickets [\#293](https://github.com/auth0/auth0-java/pull/293) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.21.0](https://github.com/auth0/auth0-java/tree/1.21.0) (2020-08-27)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.20.0...1.21.0)
+
+**Added**
+- Add support for Log Streams [\#284](https://github.com/auth0/auth0-java/pull/284) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.20.0](https://github.com/auth0/auth0-java/tree/1.20.0) (2020-07-27)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.19.0...1.20.0)
+
+**Added**
+- Add missing Linking User Accounts endpoint [\#270](https://github.com/auth0/auth0-java/pull/270) ([cschwalm](https://github.com/cschwalm))
+
+**Fixed**
+- Fix and document thread-safety [\#272](https://github.com/auth0/auth0-java/pull/272) ([lbalmaceda](https://github.com/lbalmaceda))
+
+## [1.19.0](https://github.com/auth0/auth0-java/tree/1.19.0) (2020-06-05)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.18.0...1.19.0)
+
+**Added**
+- Add display_name property to Connection [\#267](https://github.com/auth0/auth0-java/pull/267) ([lbalmaceda](https://github.com/lbalmaceda))
+- Add support for java Proxy with basic auth [\#266](https://github.com/auth0/auth0-java/pull/266) ([lbalmaceda](https://github.com/lbalmaceda))
+
+## [1.18.0](https://github.com/auth0/auth0-java/tree/1.18.0) (2020-05-29)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.17.0...1.18.0)
+
+**Added**
+- Add ID Token verifier API [\#260](https://github.com/auth0/auth0-java/pull/260) ([jimmyjames](https://github.com/jimmyjames))
+- Add signature verification classes [\#258](https://github.com/auth0/auth0-java/pull/258) ([jimmyjames](https://github.com/jimmyjames))
+
+**Changed**
+- Update to OkHttp 3.14.9 [\#262](https://github.com/auth0/auth0-java/pull/262) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.17.0](https://github.com/auth0/auth0-java/tree/1.17.0) (2020-05-22)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.16.0...1.17.0)
+
+**Added**
+- Add missing property last_password_reset [\#256](https://github.com/auth0/auth0-java/pull/256) ([mario-moura-silva](https://github.com/mario-moura-silva))
+- Add missing "sources" property to the Permission [\#254](https://github.com/auth0/auth0-java/pull/254) ([lbalmaceda](https://github.com/lbalmaceda))
+
+## [1.16.0](https://github.com/auth0/auth0-java/tree/1.16.0) (2020-04-24)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.15.0...1.16.0)
+
+**Added**
+- Add Job "POST User Imports" endpoint [\#249](https://github.com/auth0/auth0-java/pull/249) ([lbalmaceda](https://github.com/lbalmaceda))
+- Add a new class to handle Multipart requests [\#248](https://github.com/auth0/auth0-java/pull/248) ([lbalmaceda](https://github.com/lbalmaceda))
+- Add Job "GET Status" endpoint [\#247](https://github.com/auth0/auth0-java/pull/247) ([lbalmaceda](https://github.com/lbalmaceda))
+- Add missing "initiate_login_uri" property to Client [\#244](https://github.com/auth0/auth0-java/pull/244) ([lbalmaceda](https://github.com/lbalmaceda))
+- Use char array for passwords [\#242](https://github.com/auth0/auth0-java/pull/242) ([jimmyjames](https://github.com/jimmyjames))
+- Add Job "POST User Exports" endpoint [\#241](https://github.com/auth0/auth0-java/pull/241) ([lbalmaceda](https://github.com/lbalmaceda))
+- Add Rules Configs entity [\#240](https://github.com/auth0/auth0-java/pull/240) ([lbalmaceda](https://github.com/lbalmaceda))
+
+**Deprecated**
+- deprecated string password APIs [\#243](https://github.com/auth0/auth0-java/pull/243) ([jimmyjames](https://github.com/jimmyjames))
+
+**Fixed**
+- Make CreatedUser take the id from different properties [\#245](https://github.com/auth0/auth0-java/pull/245) ([lbalmaceda](https://github.com/lbalmaceda))
+
+**Security**
+- Use char array for passwords [\#242](https://github.com/auth0/auth0-java/pull/242) ([jimmyjames](https://github.com/jimmyjames))
+
+## [1.15.0](https://github.com/auth0/auth0-java/tree/1.15.0) (2019-11-12)
+[Full Changelog](https://github.com/auth0/auth0-java/compare/1.14.3...1.15.0)
+
+**Changed**
+- Allow to set the client is_first_party property [\#230](https://github.com/auth0/auth0-java/pull/230) ([lbalmaceda](https://github.com/lbalmaceda))
+
## [1.14.3](https://github.com/auth0/auth0-java/tree/1.14.3) (2019-09-25)
[Full Changelog](https://github.com/auth0/auth0-java/compare/1.14.2...1.14.3)
@@ -232,18 +938,17 @@ ManagementAPI mgmt = new ManagementAPI("{YOUR_DOMAIN}", "{YOUR_API_TOKEN}");
The Management API is divided into different entities. Each of them have the list, create, update, delete and update methods plus a few more if corresponds. The calls are authenticated using the API Token given in the `ManagementAPI` instance creation and must contain the `scope` required by each entity. See the javadoc for details on which `scope` is expected for each call.
-* **Client Grants:** See [Docs](https://auth0.com/docs/api/management/v2#!/Client_Grants/get_client_grants). Access the methods by calling `mgmt.clientGrants()`.
-* **Clients:** See [Docs](https://auth0.com/docs/api/management/v2#!/Clients/get_clients). Access the methods by calling `mgmt.clients()`.
-* **Connections:** See [Docs](https://auth0.com/docs/api/management/v2#!/Connections/get_connections). Access the methods by calling `mgmt.connections()`.
-* **Device Credentials:** See [Docs](https://auth0.com/docs/api/management/v2#!/Device_Credentials/get_device_credentials). Access the methods by calling `mgmt.deviceCredentials()`.
-* **Logs:** See [Docs](https://auth0.com/docs/api/management/v2#!/Logs/get_logs). Access the methods by calling `mgmt.logEvents()`.
-* **Rules:** See [Docs](https://auth0.com/docs/api/management/v2#!/Rules/get_rules). Access the methods by calling `mgmt.rules()`.
-* **User Blocks:** See [Docs](https://auth0.com/docs/api/management/v2#!/User_Blocks/get_user_blocks). Access the methods by calling `mgmt.userBlocks()`.
-* **Users:** See [Docs](https://auth0.com/docs/api/management/v2#!/Users/get_users). Access the methods by calling `mgmt.users()`.
-* **Blacklists:** See [Docs](https://auth0.com/docs/api/management/v2#!/Blacklists/get_tokens). Access the methods by calling `mgmt.blacklists()`.
-* **Emails:** See [Docs](https://auth0.com/docs/api/management/v2#!/Emails/get_provider). Access the methods by calling `mgmt.emailProvider()`.
-* **Guardian:** See [Docs](https://auth0.com/docs/api/management/v2#!/Guardian/get_factors). Access the methods by calling `mgmt.guardian()`.
-* **Stats:** See [Docs](https://auth0.com/docs/api/management/v2#!/Stats/get_active_users). Access the methods by calling `mgmt.stats()`.
-* **Tenants:** See [Docs](https://auth0.com/docs/api/management/v2#!/Tenants/get_settings). Access the methods by calling `mgmt.tenants()`.
+* **Client Grants:** See [Docs](https://auth0.com/docs/api/management/v2#!/Client_Grants/get_client_grants). Access the methods by calling `mgmt.clientGrants()`.
+* **Clients:** See [Docs](https://auth0.com/docs/api/management/v2#!/Clients/get_clients). Access the methods by calling `mgmt.clients()`.
+* **Connections:** See [Docs](https://auth0.com/docs/api/management/v2#!/Connections/get_connections). Access the methods by calling `mgmt.connections()`.
+* **Device Credentials:** See [Docs](https://auth0.com/docs/api/management/v2#!/Device_Credentials/get_device_credentials). Access the methods by calling `mgmt.deviceCredentials()`.
+* **Logs:** See [Docs](https://auth0.com/docs/api/management/v2#!/Logs/get_logs). Access the methods by calling `mgmt.logEvents()`.
+* **Rules:** See [Docs](https://auth0.com/docs/api/management/v2#!/Rules/get_rules). Access the methods by calling `mgmt.rules()`.
+* **User Blocks:** See [Docs](https://auth0.com/docs/api/management/v2#!/User_Blocks/get_user_blocks). Access the methods by calling `mgmt.userBlocks()`.
+* **Users:** See [Docs](https://auth0.com/docs/api/management/v2#!/Users/get_users). Access the methods by calling `mgmt.users()`.
+* **Blacklists:** See [Docs](https://auth0.com/docs/api/management/v2#!/Blacklists/get_tokens). Access the methods by calling `mgmt.blacklists()`.
+* **Emails:** See [Docs](https://auth0.com/docs/api/management/v2#!/Emails/get_provider). Access the methods by calling `mgmt.emailProvider()`.
+* **Guardian:** See [Docs](https://auth0.com/docs/api/management/v2#!/Guardian/get_factors). Access the methods by calling `mgmt.guardian()`.
+* **Stats:** See [Docs](https://auth0.com/docs/api/management/v2#!/Stats/get_active_users). Access the methods by calling `mgmt.stats()`.
+* **Tenants:** See [Docs](https://auth0.com/docs/api/management/v2#!/Tenants/get_settings). Access the methods by calling `mgmt.tenants()`.
* **Tickets:** See [Docs](https://auth0.com/docs/api/management/v2#!/Tickets/post_email_verification). Access the methods by calling `mgmt.tickets()`.
-
diff --git a/EXAMPLES.md b/EXAMPLES.md
new file mode 100644
index 000000000..3f7b8b1f2
--- /dev/null
+++ b/EXAMPLES.md
@@ -0,0 +1,335 @@
+# Examples using auth0-java
+
+- [Error handling](#error-handling)
+- [HTTP Client configuration](#http-client-configuration)
+- [Management API usage](#management-api-usage)
+- [Verifying an ID token](#verifying-an-id-token)
+- [Organizations](#organizations)
+- [Asynchronous operations](#asynchronous-operations)
+
+## Error handling
+
+### Management API errors
+
+The Management API uses a unified `ManagementApiException` class, which provides access to the HTTP status code, response body, headers, and message of the error response.
+
+```java
+import com.auth0.client.mgmt.core.ManagementApiException;
+
+try {
+ GetUserResponseContent user = client.users().get("user_id");
+} catch (ManagementApiException e) {
+ int statusCode = e.statusCode();
+ Object body = e.body();
+ Map> headers = e.headers();
+ String message = e.getMessage();
+}
+```
+
+### Authentication API errors
+
+The Authentication API uses `APIException` for error handling.
+
+```java
+import com.auth0.exception.APIException;
+
+try {
+ TokenHolder holder = authAPI.requestToken("https://{YOUR_DOMAIN}/api/v2/").execute().getBody();
+} catch (APIException e) {
+ int statusCode = e.getStatusCode();
+ String description = e.getDescription();
+ String error = e.getError();
+}
+```
+
+## HTTP Client configuration
+
+### Authentication API
+
+The Authentication API client uses the OkHttp networking library to make HTTP requests.
+The client can be configured by building a `DefaultHttpClient` and providing it to the API client.
+
+```java
+Auth0HttpClient httpClient = DefaultHttpClient.newBuilder()
+ // configure as needed
+ .build();
+
+AuthAPI auth = AuthAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}")
+ .withHttpClient(httpClient)
+ .build();
+```
+
+If the `DefaultHttpClient` does not support your required networking client configuration, you may choose to implement
+your own client by implementing the `Auth0HttpClient` interface and providing it to the API client. This is an advanced
+use case and should be used only when necessary.
+
+### Management API
+
+The Management API client uses `ManagementApi` as the main entry point.
+You can configure a custom `OkHttpClient` via the builder:
+
+```java
+import com.auth0.client.mgmt.ManagementApi;
+
+OkHttpClient okHttpClient = new OkHttpClient.Builder()
+ // configure as needed
+ .build();
+
+ManagementApi client = ManagementApi.builder()
+ .domain("{YOUR_DOMAIN}")
+ .token("{YOUR_API_TOKEN}")
+ .httpClient(okHttpClient)
+ .build();
+```
+
+## Management API usage
+
+### Creating a client with a static token
+
+```java
+import com.auth0.client.mgmt.ManagementApi;
+
+ManagementApi client = ManagementApi.builder()
+ .domain("{YOUR_DOMAIN}")
+ .token("{YOUR_API_TOKEN}")
+ .build();
+```
+
+### Creating a client with client credentials (recommended)
+
+When using client credentials, the SDK automatically fetches and caches access tokens, refreshing them before expiry.
+
+```java
+import com.auth0.client.mgmt.ManagementApi;
+
+ManagementApi client = ManagementApi.builder()
+ .domain("{YOUR_DOMAIN}")
+ .clientCredentials("{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}")
+ .build();
+```
+
+You can also specify a custom audience:
+
+```java
+ManagementApi client = ManagementApi.builder()
+ .domain("{YOUR_DOMAIN}")
+ .clientCredentials("{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}")
+ .audience("{YOUR_AUDIENCE}")
+ .build();
+```
+
+### Creating a client with advanced options
+
+```java
+ManagementApi client = ManagementApi.builder()
+ .domain("{YOUR_DOMAIN}")
+ .clientCredentials("{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}")
+ .timeout(30) // timeout in seconds (default: 60)
+ .maxRetries(3) // max retries (default: 2)
+ .addHeader("X-Custom-Header", "value")
+ .build();
+```
+
+### Accessing resources
+
+The Management API is organized into resource clients:
+
+```java
+// Get a user
+GetUserResponseContent user = client.users().get("user_id");
+
+// Get a role
+GetRoleResponseContent role = client.roles().get("role_id");
+
+// Create a user
+CreateUserResponseContent newUser = client.users().create(
+ CreateUserRequestContent.builder()
+ .email("user@example.com")
+ .connection("Username-Password-Authentication")
+ .password("securePassword123!")
+ .build()
+);
+
+// Update a user
+UpdateUserResponseContent updatedUser = client.users().update(
+ "user_id",
+ UpdateUserRequestContent.builder()
+ .name("Updated Name")
+ .build()
+);
+
+// Delete a user
+client.users().delete("user_id");
+```
+
+### Pagination
+
+List operations return a `SyncPagingIterable` that supports automatic pagination:
+
+```java
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.ListUsersRequestParameters;
+import com.auth0.client.mgmt.types.UserResponseSchema;
+
+SyncPagingIterable users = client.users().list(
+ ListUsersRequestParameters.builder()
+ .perPage(50)
+ .build()
+);
+
+// Iterate through all pages automatically
+for (UserResponseSchema user : users) {
+ System.out.println(user.getEmail());
+}
+
+// Or access pages manually
+List pageItems = users.getItems();
+while (users.hasNext()) {
+ pageItems = users.nextPage().getItems();
+}
+```
+
+### Accessing raw HTTP responses
+
+Use `withRawResponse()` to access HTTP response metadata:
+
+```java
+import com.auth0.client.mgmt.core.ManagementApiHttpResponse;
+
+ManagementApiHttpResponse response = client.users()
+ .withRawResponse()
+ .get("user_id");
+
+GetUserResponseContent user = response.body();
+Map> headers = response.headers();
+```
+
+### Nested sub-resources
+
+Some resources have nested sub-clients:
+
+```java
+// List a user's roles
+SyncPagingIterable roles = client.users().roles().list("user_id");
+
+// List a user's permissions
+SyncPagingIterable permissions = client.users().permissions().list("user_id");
+
+// List organization members
+SyncPagingIterable members = client.organizations().members().list("org_id");
+```
+
+## Verifying an ID token
+
+This library also provides the ability to validate an OIDC-compliant ID Token, according to the [OIDC Specification](https://openid.net/specs/openid-connect-core-1_0-final.html#IDTokenValidation).
+
+### Verifying an ID Token signed with the RS256 signing algorithm
+
+To verify an ID Token that is signed using the RS256 signing algorithm, you will need to provide an implementation of
+`PublicKeyProvider` that will return the public key used to verify the token's signature. The example below demonstrates how to use the `JwkProvider` from the [jwks-rsa-java](https://github.com/auth0/jwks-rsa-java) library:
+
+```java
+JwkProvider provider = new JwkProviderBuilder("https://your-domain.auth0.com").build();
+SignatureVerifier signatureVerifier = SignatureVerifier.forRS256(new PublicKeyProvider() {
+ @Override
+ public RSAPublicKey getPublicKeyById(String keyId) throws PublicKeyProviderException {
+ try {
+ return (RSAPublicKey) provider.get(keyId).getPublicKey();
+ } catch (JwkException jwke) {
+ throw new PublicKeyProviderException("Error obtaining public key", jwke);
+ }
+ }
+}
+
+IdTokenVerifier idTokenVerifier = IdTokenVerifier.init("https://your-domain.auth0.com/","your-client-id", signatureVerifier).build();
+
+try {
+ idTokenVerifier.verify("token", "expected-nonce");
+} catch(IdTokenValidationException idtve) {
+ // Handle invalid token exception
+}
+```
+
+### Verifying an ID Token signed with the HS256 signing algorithm
+
+To verify an ID Token that is signed using the HS256 signing algorithm:
+
+```java
+SignatureVerifier signatureVerifier = SignatureVerifier.forHS256("your-client-secret");
+IdTokenVerifier idTokenVerifier = IdTokenVerifier.init("https://your-domain.auth0.com/","your-client-id", signatureVerifier).build();
+
+try {
+ idTokenVerifier.verify("token", "expected-nonce");
+} catch(IdTokenValidationException idtve) {
+ // Handle invalid token exception
+}
+```
+
+## Organizations
+
+[Organizations](https://auth0.com/docs/organizations) is a set of features that provide better support for developers who build and maintain SaaS and Business-to-Business (B2B) applications.
+
+Note that Organizations is currently only available to customers on our Enterprise and Startup subscription plans.
+
+### Log in to an organization
+
+Log in to an organization by using `withOrganization()` when building the Authorization URL:
+
+```java
+AuthAPI auth = AuthAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}").build();
+String url = auth.authorizeUrl("https://me.auth0.com/callback")
+ .withOrganization("{YOUR_ORGANIZATION_ID}")
+ .build();
+```
+
+**Important!** When logging into an organization, it is important to ensure the `org_id` claim of the ID Token matches the expected organization value. The `IdTokenVerifier` can be configured with an expected `org_id` claim value, as the example below demonstrates.
+For more information, please read [Work with Tokens and Organizations](https://auth0.com/docs/organizations/using-tokens) on Auth0 Docs.
+```java
+IdTokenVerifier.init("{ISSUER}", "{AUDIENCE}", signatureVerifier)
+ .withOrganization("{ORG_ID}")
+ .build()
+ .verify(jwt);
+```
+
+### Accept user invitations
+
+Accept a user invitation by using `withInvitation()` when building the Authorization URL:
+
+```java
+AuthAPI auth = AuthAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}").build();
+String url = auth.authorizeUrl("https://me.auth0.com/callback")
+ .withOrganization("{YOUR_ORGANIZATION_ID}")
+ .withInvitation("{YOUR_INVITATION_ID}")
+ .build();
+```
+
+## Asynchronous operations
+
+### Management API
+
+The Management API provides an async client that returns `CompletableFuture` for all operations:
+
+```java
+import com.auth0.client.mgmt.AsyncManagementApi;
+import com.auth0.client.mgmt.core.ClientOptions;
+
+AsyncManagementApi asyncClient = new AsyncManagementApi(clientOptions);
+
+// Async user retrieval
+CompletableFuture future = asyncClient.users().get("user_id");
+future.thenAccept(user -> {
+ System.out.println(user.getEmail());
+});
+```
+
+### Authentication API
+
+The Authentication API supports async operations via the `executeAsync()` method:
+
+```java
+AuthAPI auth = AuthAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}").build();
+CompletableFuture future = auth.requestToken("https://{YOUR_DOMAIN}/api/v2/").executeAsync();
+future.thenAccept(holder -> {
+ String accessToken = holder.getBody().getAccessToken();
+});
+```
diff --git a/LICENSE b/LICENSE
index d865b7591..5e57a4f8a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/MIGRATION_GUIDE.md b/MIGRATION_GUIDE.md
new file mode 100644
index 000000000..d6c7e9ac0
--- /dev/null
+++ b/MIGRATION_GUIDE.md
@@ -0,0 +1,369 @@
+# V3 Migration Guide
+
+A guide to migrating the Auth0 Java SDK from `v2` to `v3`.
+
+- [Overall changes](#overall-changes)
+ - [Java versions](#java-versions)
+ - [Authentication API](#authentication-api)
+ - [Management API](#management-api)
+- [Specific changes to the Management API](#specific-changes-to-the-management-api)
+ - [Client initialization](#client-initialization)
+ - [Sub-client organization](#sub-client-organization)
+ - [Request and response patterns](#request-and-response-patterns)
+ - [Pagination](#pagination)
+ - [Exception handling](#exception-handling)
+ - [Accessing raw HTTP responses](#accessing-raw-http-responses)
+ - [Request-level configuration](#request-level-configuration)
+ - [Type changes](#type-changes)
+
+## Overall changes
+
+### Java versions
+
+Both v2 and v3 require Java 8 or above.
+
+### Authentication API
+
+This major version change does not affect the Authentication API. The `AuthAPI` class has been ported directly from v2 to v3. Any code written for the Authentication API in the v2 version should work in the v3 version.
+
+```java
+// Works in both v2 and v3
+AuthAPI auth = AuthAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}").build();
+```
+
+### Management API
+
+V3 introduces significant improvements to the Management API SDK by migrating to [Fern](https://github.com/fern-api/fern) as the code generation tool. This provides:
+
+- Better resource grouping with sub-client organization
+- Type-safe request and response objects using builder patterns
+- Automatic pagination with `SyncPagingIterable`
+- Simplified access to HTTP response metadata via `withRawResponse()`
+- Consistent method naming (`list`, `create`, `get`, `update`, `delete`)
+
+## Specific changes to the Management API
+
+### Client initialization
+
+The Management API client initialization has changed from `ManagementAPI` to `ManagementApi`, and uses a different builder pattern.
+
+**v2:**
+```java
+import com.auth0.client.mgmt.ManagementAPI;
+
+// Using domain and token
+ManagementAPI mgmt = ManagementAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_API_TOKEN}").build();
+
+// Using TokenProvider
+TokenProvider tokenProvider = SimpleTokenProvider.create("{YOUR_API_TOKEN}");
+ManagementAPI mgmt = ManagementAPI.newBuilder("{YOUR_DOMAIN}", tokenProvider).build();
+```
+
+**v3:**
+1st Approach : Standard Token-Based
+```java
+import com.auth0.client.mgmt.ManagementApi;
+
+ManagementApi client = ManagementApi
+ .builder()
+ .url("https://{YOUR_DOMAIN}/api/v2")
+ .token("{YOUR_API_TOKEN}")
+ .build();
+```
+
+or
+
+2nd Approach : OAuth client credentials flow
+
+```java
+OAuthTokenSupplier tokenSupplier = new OAuthTokenSupplier(
+"{CLIENT_ID}",
+"{CLIENT_SECRET}",
+"https://{YOUR_DOMAIN}",
+"{YOUR_AUDIENCE}"
+);
+
+ClientOptions clientOptions = ClientOptions.builder()
+.environment(Environment.custom("https://{YOUR_AUDIENCE}"))
+.addHeader("Authorization", () -> "Bearer " + tokenSupplier.get())
+.build();
+
+ManagementApi client = new ManagementApi(clientOptions);
+
+```
+
+#### Builder options comparison
+
+| Option | v2 | v3 |
+|--------|----|----|
+| Domain/URL | `newBuilder(domain, token)` | `.url("https://domain/api/v2")` |
+| Token | Constructor parameter | `.token(token)` |
+| Timeout | Via `HttpOptions` | `.timeout(seconds)` |
+| Max retries | Via `HttpOptions` | `.maxRetries(count)` |
+| Custom HTTP client | `.withHttpClient(Auth0HttpClient)` | `.httpClient(OkHttpClient)` |
+| Custom headers | Not directly supported | `.addHeader(name, value)` |
+
+### Sub-client organization
+
+V3 introduces a hierarchical sub-client structure. Operations on related resources are now accessed through nested clients instead of methods on a flat entity class.
+
+**v2:**
+```java
+// All user operations on UsersEntity
+Request userRequest = mgmt.users().get("user_id", new UserFilter());
+Request> permissionsRequest = mgmt.users().getPermissions("user_id", new PermissionsFilter());
+Request> rolesRequest = mgmt.users().getRoles("user_id", new RolesFilter());
+Request logsRequest = mgmt.users().getLogEvents("user_id", new LogEventFilter());
+```
+
+**v3:**
+```java
+// Operations organized into sub-clients
+GetUserResponseContent user = client.users().get("user_id");
+SyncPagingIterable permissions = client.users().permissions().list("user_id");
+SyncPagingIterable roles = client.users().roles().list("user_id");
+SyncPagingIterable logs = client.users().logs().list("user_id");
+```
+
+#### Common sub-client mappings
+
+| v2 Method | v3 Sub-client |
+|-----------|---------------|
+| `mgmt.users().getPermissions()` | `client.users().permissions().list()` |
+| `mgmt.users().getRoles()` | `client.users().roles().list()` |
+| `mgmt.users().getLogEvents()` | `client.users().logs().list()` |
+| `mgmt.users().getOrganizations()` | `client.users().organizations().list()` |
+| `mgmt.users().link()` | `client.users().identities().link()` |
+| `mgmt.users().unlink()` | `client.users().identities().delete()` |
+| `mgmt.users().deleteMultifactorProvider()` | `client.users().multifactor().deleteProvider()` |
+| `mgmt.organizations().getMembers()` | `client.organizations().members().list()` |
+| `mgmt.organizations().getInvitations()` | `client.organizations().invitations().list()` |
+| `mgmt.organizations().getEnabledConnections()` | `client.organizations().enabledConnections().list()` |
+| `mgmt.actions().getVersions()` | `client.actions().versions().list()` |
+| `mgmt.actions().getTriggerBindings()` | `client.actions().triggers().bindings().list()` |
+| `mgmt.guardian().getFactors()` | `client.guardian().factors().list()` |
+| `mgmt.branding().getUniversalLoginTemplate()` | `client.branding().templates().getUniversalLogin()` |
+| `mgmt.connections().getScimConfiguration()` | `client.connections().scimConfiguration().get()` |
+
+### Request and response patterns
+
+V3 uses type-safe request content objects with builders instead of domain objects or filter parameters.
+
+**v2:**
+```java
+import com.auth0.json.mgmt.users.User;
+import com.auth0.net.Request;
+
+// Creating a user
+User user = new User("Username-Password-Authentication");
+user.setEmail("test@example.com");
+user.setPassword("password123".toCharArray());
+
+Request request = mgmt.users().create(user);
+User createdUser = request.execute().getBody();
+```
+
+**v3:**
+```java
+import com.auth0.client.mgmt.types.CreateUserRequestContent;
+import com.auth0.client.mgmt.types.CreateUserResponseContent;
+
+// Creating a user
+CreateUserResponseContent user = client.users().create(
+ CreateUserRequestContent
+ .builder()
+ .connection("Username-Password-Authentication")
+ .email("test@example.com")
+ .password("password123")
+ .build()
+);
+```
+
+#### Key differences
+
+| Aspect | v2 | v3 |
+|--------|----|----|
+| Request building | Domain objects with setters | Builder pattern with `*RequestContent` types |
+| Response type | `Request` requiring `.execute().getBody()` | Direct return of response object |
+| Filtering | Filter classes (e.g., `UserFilter`) | `*RequestParameters` builder classes |
+| Execution | Explicit `.execute()` call | Implicit execution on method call |
+
+### Pagination
+
+V3 introduces `SyncPagingIterable` for automatic pagination, replacing the manual `Request` pattern.
+
+**v2:**
+```java
+import com.auth0.json.mgmt.users.UsersPage;
+import com.auth0.client.mgmt.filter.UserFilter;
+
+Request request = mgmt.users().list(new UserFilter().withPage(0, 50));
+UsersPage page = request.execute().getBody();
+
+for (User user : page.getItems()) {
+ System.out.println(user.getEmail());
+}
+
+// Manual pagination
+while (page.getNext() != null) {
+ request = mgmt.users().list(new UserFilter().withPage(page.getNext(), 50));
+ page = request.execute().getBody();
+ for (User user : page.getItems()) {
+ System.out.println(user.getEmail());
+ }
+}
+```
+
+**v3:**
+```java
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.UserResponseSchema;
+import com.auth0.client.mgmt.types.ListUsersRequestParameters;
+
+// Automatic iteration through all pages
+SyncPagingIterable users = client.users().list(
+ ListUsersRequestParameters
+ .builder()
+ .perPage(50)
+ .build()
+);
+
+for (UserResponseSchema user : users) {
+ System.out.println(user.getEmail());
+}
+
+// Or manual page control
+List pageItems = users.getItems();
+while (users.hasNext()) {
+ pageItems = users.nextPage().getItems();
+ // process page
+}
+```
+
+### Exception handling
+
+V3 uses a unified `ManagementApiException` class instead of the v2 exception hierarchy.
+
+**v2:**
+```java
+import com.auth0.exception.Auth0Exception;
+import com.auth0.exception.APIException;
+import com.auth0.exception.RateLimitException;
+
+try {
+ User user = mgmt.users().get("user_id", null).execute().getBody();
+} catch (RateLimitException e) {
+ // Rate limited
+ long retryAfter = e.getLimit();
+} catch (APIException e) {
+ int statusCode = e.getStatusCode();
+ String error = e.getError();
+ String description = e.getDescription();
+} catch (Auth0Exception e) {
+ // Network or other errors
+}
+```
+
+**v3:**
+```java
+import com.auth0.client.mgmt.core.ManagementApiException;
+
+try {
+ GetUserResponseContent user = client.users().get("user_id");
+} catch (ManagementApiException e) {
+ int statusCode = e.statusCode();
+ Object body = e.body();
+ Map> headers = e.headers();
+ String message = e.getMessage();
+}
+```
+
+### Accessing raw HTTP responses
+
+V3 provides access to full HTTP response metadata via `withRawResponse()`.
+
+**v2:**
+```java
+// Response wrapper provided status code
+Response response = mgmt.users().get("user_id", null).execute();
+int statusCode = response.getStatusCode();
+User user = response.getBody();
+```
+
+**v3:**
+```java
+import com.auth0.client.mgmt.core.ManagementApiHttpResponse;
+
+// Use withRawResponse() to access headers and metadata
+ManagementApiHttpResponse response = client.users()
+ .withRawResponse()
+ .get("user_id");
+
+GetUserResponseContent user = response.body();
+Map> headers = response.headers();
+```
+
+### Request-level configuration
+
+V3 allows per-request configuration through `RequestOptions`.
+
+**v2:**
+```java
+// Most configuration was at client level only
+// Request-level headers required creating a new request manually
+Request request = mgmt.users().get("user_id", null);
+request.addHeader("X-Custom-Header", "value");
+User user = request.execute().getBody();
+```
+
+**v3:**
+```java
+import com.auth0.client.mgmt.core.RequestOptions;
+
+GetUserResponseContent user = client.users().get(
+ "user_id",
+ GetUserRequestParameters.builder().build(),
+ RequestOptions.builder()
+ .timeout(10)
+ .maxRetries(1)
+ .addHeader("X-Custom-Header", "value")
+ .build()
+);
+```
+
+### Type changes
+
+V3 uses generated type classes located in `com.auth0.client.mgmt.types` instead of the hand-written POJOs in `com.auth0.json.mgmt`.
+
+**v2:**
+```java
+import com.auth0.json.mgmt.users.User;
+import com.auth0.json.mgmt.roles.Role;
+import com.auth0.json.mgmt.organizations.Organization;
+```
+
+**v3:**
+```java
+import com.auth0.client.mgmt.types.UserResponseSchema;
+import com.auth0.client.mgmt.types.CreateUserRequestContent;
+import com.auth0.client.mgmt.types.CreateUserResponseContent;
+import com.auth0.client.mgmt.types.Role;
+import com.auth0.client.mgmt.types.Organization;
+```
+
+Type naming conventions in v3:
+- Request body types: `*RequestContent` (e.g., `CreateUserRequestContent`)
+- Response types: `*ResponseContent` or `*ResponseSchema` (e.g., `GetUserResponseContent`, `UserResponseSchema`)
+- Query parameters: `*RequestParameters` (e.g., `ListUsersRequestParameters`)
+
+All types use immutable builders:
+
+```java
+// v3 type construction
+CreateUserRequestContent request = CreateUserRequestContent
+ .builder()
+ .email("test@example.com")
+ .connection("Username-Password-Authentication")
+ .password("secure-password")
+ .build();
+```
diff --git a/README.md b/README.md
index 0f45f9068..02ea649e0 100644
--- a/README.md
+++ b/README.md
@@ -1,602 +1,138 @@
-# Auth0 Java
+> **Note**
+> As part of our ongoing commitment to best security practices, we have rotated the signing keys used to sign previous releases of this SDK. As a result, new patch builds have been released using the new signing key. Please upgrade at your earliest convenience.
+>
+> While this change won't affect most developers, if you have implemented a dependency signature validation step in your build process, you may notice a warning that past releases can't be verified. This is expected, and a result of the key rotation process. Updating to the latest version will resolve this for you.
+>
+> We are improving our API specs which introduces minor breaking changes.
-[![Build-Circle][circle-ci-badge]][circle-ci-url]
-[![MIT][mit-badge]][mit-url]
-[![Maven][maven-badge]][maven-url]
-[![JCenter][jcenter-badge]][jcenter-url]
-[![codecov][codecov-badge]][codecov-url]
+
-Java client library for the [Auth0](https://auth0.com) platform.
+
+[](https://codecov.io/github/auth0/auth0-java)
+[](https://doge.mit-license.org/)
+[](https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.auth0%22%20AND%20a%3A%22auth0%22)
+[](https://javadoc.io/doc/com.auth0/auth0)
+[](https://deepwiki.com/auth0/auth0-java)
-## Download
+:books: [Documentation](#documentation) - :rocket: [Getting Started](#getting-started) - :computer: [API Reference](#api-reference) :speech_balloon: [Feedback](#feedback)
-Get Auth0 Java via Maven:
+## Documentation
+- [Reference](./reference.md) - code samples for Management APIs.
+- [Examples](./EXAMPLES.md) - code samples for common auth0-java scenarios.
+- [Migration Guide](./MIGRATION_GUIDE.md) - guidance for updating your application to use version 3 of auth0-java.
+- [Docs site](https://www.auth0.com/docs) - explore our docs site and learn more about Auth0.
+
+## Getting Started
+
+### Requirements
+
+Java 8 or above.
+
+> `auth0-java` is intended for server-side JVM applications. Android applications should use the [Auth0.Android SDK](https://github.com/auth0/auth0.android).
+
+### Installation
+
+Add the dependency via Maven:
```xml
com.auth0auth0
- 1.14.3
+ 3.3.0
```
or Gradle:
```gradle
-implementation 'com.auth0:auth0:1.14.3'
+implementation 'com.auth0:auth0:3.3.0'
```
+### Configure the SDK
-### Android
-
-The Auth0 Authentication API and User's Management API are available for Android in the `auth0.android` library. Check https://github.com/auth0/auth0.android for more information.
-
+#### Authentication API Client
-## Auth API
-
-The implementation is based on the [Authentication API Docs](https://auth0.com/docs/api/authentication).
+The Authentication API client is based on the [Auth0 Authentication API](https://auth0.com/docs/api/authentication).
Create an `AuthAPI` instance by providing the Application details from the [dashboard](https://manage.auth0.com/#/applications).
```java
-AuthAPI auth = new AuthAPI("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}");
-```
-
-### Authorize - /authorize
-
-Creates an `AuthorizeUrlBuilder` to authenticate the user with an OAuth provider. The `redirectUri` must be white-listed in the "Allowed Callback URLs" section of the Applications Settings. Parameters can be added to the final URL by using the builder methods. When ready, call `build()` and obtain the URL.
-
-```AuthorizeUrlBuilder authorizeUrl(String redirectUri)```
-
-Example:
-```java
-String url = auth.authorizeUrl("https://me.auth0.com/callback")
- .withConnection("facebook")
- .withAudience("https://api.me.auth0.com/users")
- .withScope("openid contacts")
- .withState("state123")
- .build();
-```
-
-### Logout - /v2/logout
-Creates a `LogoutUrlBuilder` to log out the user. The `returnToUrl` must be white-listed in the "Allowed Logout URLs" section of the Dashboard, depending on the value of `setClientId` this configuration should be set in the Application or in the Tenant Settings. Parameters can be added to the final URL by using the builder methods. When ready, call `build()` and obtain the URL.
-
-`LogoutUrlBuilder logoutUrl(String returnToUrl, boolean setClientId)`
-
-Example:
-```java
-String url = auth.logoutUrl("https://me.auth0.com/home", true)
- .useFederated(true)
- .build();
-```
-
-### UserInfo - /userinfo
-Creates a request to get the user information associated to a given access token. This will only work if the token has been granted the `openid` scope.
-
-`Request userInfo(String accessToken)`
-
-Example:
-```java
-Request request = auth.userInfo("nisd1h9dk.....s1doWJOsaf");
-try {
- UserInfo info = request.execute();
- // info.getValues();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-### Reset Password - /dbconnections/change_password
-Creates a request to reset the user's password. This will only work for db connections.
-
-`Request resetPassword(String email, String connection)`
-
-Example:
-```java
-Request request = auth.resetPassword("user@domain.com", "Username-Password-Authentication");
-try {
- request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-
-### Sign Up - /dbconnections/signup
-Creates a request to create a user. Up to 10 additional Sign Up fields can be added to the request. This will only work for db connections.
-
-`SignUpRequest signUp(String email, String username, String password, String connection)`
-
-`SignUpRequest signUp(String email, String password, String connection)`
-
-Example:
-```java
-Map fields = new HashMap<>();
-fields.put("age", "25");
-fields.put("city", "Buenos Aires");
-SignUpRequest request = auth.signUp("user@domain.com", "username", "password123", "Username-Password-Authentication")
- .setCustomFields(fields);
-try {
- CreatedUser user = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-### Exchange the Authorization Code - /oauth/token
-
-Creates a request to exchange the `code` previously obtained by calling the /authorize endpoint. The redirect URI must be the one sent in the /authorize call.
-
-`AuthRequest exchangeCode(String code, String redirectUri)`
-
-Example:
-```java
-AuthRequest request = auth.exchangeCode("asdfgh", "https://me.auth0.com/callback")
- .setAudience("https://api.me.auth0.com/users")
- .setScope("openid contacts");
-try {
- TokenHolder holder = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-### Log In with Password - /oauth/token
-
-Creates a request to log in the user with `username` and `password`. The connection used is the one defined as "Default Directory" in the account settings.
-
-`AuthRequest login(String emailOrUsername, String password)`
-
-Example:
-```java
-AuthRequest request = auth.login("me@domain.com", "password123")
- .setAudience("https://api.me.auth0.com/users")
- .setScope("openid contacts");
-try {
- TokenHolder holder = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-### Log In with Password Realm - /oauth/token
-
-Creates a request to log in the user with `username` and `password` using the Password Realm.
-
-`AuthRequest login(String emailOrUsername, String password, String realm)`
-
-Example:
-```java
-AuthRequest request = auth.login("me@domain.com", "password123", "Username-Password-Authentication")
- .setAudience("https://api.me.auth0.com/users")
- .setScope("openid contacts");
-try {
- TokenHolder holder = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-### Request Token for Audience - /oauth/token
-
-Creates a request to get a Token for the given Audience.
-
-`AuthRequest requestToken(String audience)`
-
-Example:
-```java
-AuthRequest request = auth.requestToken("https://api.me.auth0.com/users")
- .setScope("openid contacts");
-try {
- TokenHolder holder = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-### Revoke Refresh Token
-
-Creates a request to revoke an existing Refresh Token.
-
-`Request revokeToken(String refreshToken)`
-
-Example:
-```java
-Request request = auth.revokeToken("nisd1h9dks1doWJOsaf");
-try {
- request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
+AuthAPI auth = AuthAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}").build();
```
-### Renew Authentication
+#### Management API Client
-Creates a request to renew the authentication and get fresh new credentials using a valid Refresh Token.
+The Management API client is based on the [Management API Docs](https://auth0.com/docs/api/management/v2). In v3, the Management API is Fern-generated and uses `ManagementApi` as the entry point.
-`AuthRequest renewAuth(String refreshToken)`
+Create a `ManagementApi` instance with a static token:
-Example:
```java
-AuthRequest request = auth.renewAuth("nisd1h9dks1doWJOsaf");
-try {
- TokenHolder holder = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
+ManagementApi mgmt = ManagementApi.builder()
+ .domain("{YOUR_DOMAIN}")
+ .token("{YOUR_API_TOKEN}")
+ .build();
```
-
-## Management API
-
-The implementation is based on the [Management API Docs](https://auth0.com/docs/api/management/v2).
-
-Create a `ManagementAPI` instance by providing the domain from the [Application dashboard](https://manage.auth0.com/#/applications) and a valid API Token.
+Or use client credentials for automatic token management (recommended for server-to-server applications):
```java
-ManagementAPI mgmt = new ManagementAPI("{YOUR_DOMAIN}", "{YOUR_API_TOKEN}");
+ManagementApi mgmt = ManagementApi.builder()
+ .domain("{YOUR_DOMAIN}")
+ .clientCredentials("{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}")
+ .build();
```
-You can use the Authentication API to obtain a token for a previously authorized Application:
+The Management API is organized into resource clients. Methods return typed response objects directly:
```java
-AuthAPI authAPI = new AuthAPI("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}");
-AuthRequest authRequest = authAPI.requestToken("https://{YOUR_DOMAIN}/api/v2/");
-TokenHolder holder = authRequest.execute();
-ManagementAPI mgmt = new ManagementAPI("{YOUR_DOMAIN}", holder.getAccessToken());
+GetUserResponseContent user = mgmt.users().get("user_id");
+GetRoleResponseContent role = mgmt.roles().get("role_id");
```
-(Note that the snippet above should have error handling, and ideally cache the obtained token until it expires instead of requesting one access token for each Management API v2 invocation).
-
-An expired token for an existing `ManagementAPI` instance can be replaced by calling the `setApiToken` method with the new token.
-
-Click [here](https://auth0.com/docs/api/management/v2/tokens) for more information on how to obtain API Tokens.
-
+You can also obtain a token via the Authentication API and use it with the Management API client:
-The Management API is divided into different entities. Each of them have the list, create, update, delete and update methods plus a few more if corresponds. The calls are authenticated using the API Token given in the `ManagementAPI` instance creation and must contain the `scope` required by each entity. See the javadoc for details on which `scope` is expected for each call.
-
-* **Blacklists:** See [Docs](https://auth0.com/docs/api/management/v2#!/Blacklists/get_tokens). Access the methods by calling `mgmt.blacklists()`.
-* **Client Grants:** See [Docs](https://auth0.com/docs/api/management/v2#!/Client_Grants/get_client_grants). Access the methods by calling `mgmt.clientGrants()`. This endpoint supports pagination.
-* **Clients:** See [Docs](https://auth0.com/docs/api/management/v2#!/Clients/get_clients). Access the methods by calling `mgmt.clients()`. This endpoint supports pagination.
-* **Connections:** See [Docs](https://auth0.com/docs/api/management/v2#!/Connections/get_connections). Access the methods by calling `mgmt.connections()`. This endpoint supports pagination.
-* **Device Credentials:** See [Docs](https://auth0.com/docs/api/management/v2#!/Device_Credentials/get_device_credentials). Access the methods by calling `mgmt.deviceCredentials()`.
-* **Email Providers:** See [Docs](https://auth0.com/docs/api/management/v2#!/Emails/get_provider). Access the methods by calling `mgmt.emailProvider()`.
-* **Email Templates:** See [Docs](https://auth0.com/docs/api/management/v2#!/Email_Templates/get_email_templates_by_templateName). Access the methods by calling `mgmt.emailTemplates()`.
-* **Grants:** See [Docs](https://auth0.com/docs/api/management/v2#!/Grants/get_grants). Access the methods by calling `mgmt.grants()`. This endpoint supports pagination.
-* **Guardian:** See [Docs](https://auth0.com/docs/api/management/v2#!/Guardian/get_factors). Access the methods by calling `mgmt.guardian()`.
-* **Jobs:** See [Docs](https://auth0.com/docs/api/management/v2#!/Jobs/get_jobs_by_id). Access the methods by calling `mgmt.jobs()`.
-* **Logs:** See [Docs](https://auth0.com/docs/api/management/v2#!/Logs/get_logs). Access the methods by calling `mgmt.logEvents()`. This endpoint supports pagination.
-* **Resource Servers:** See [Docs](https://auth0.com/docs/api/management/v2#!/Resource_Servers/get_resource_servers). Access the methods by calling `mgmt.resourceServers()`. This endpoint supports pagination.
-* **Roles:** See [Docs](https://auth0.com/docs/api/management/v2#!/Roles/get_roles). Access the methods by calling `mgmt.roles()`. This endpoint supports pagination.
-* **Rules:** See [Docs](https://auth0.com/docs/api/management/v2#!/Rules/get_rules). Access the methods by calling `mgmt.rules()`. This endpoint supports pagination.
-* **Stats:** See [Docs](https://auth0.com/docs/api/management/v2#!/Stats/get_active_users). Access the methods by calling `mgmt.stats()`.
-* **Tenants:** See [Docs](https://auth0.com/docs/api/management/v2#!/Tenants/get_settings). Access the methods by calling `mgmt.tenants()`.
-* **Tickets:** See [Docs](https://auth0.com/docs/api/management/v2#!/Tickets/post_email_verification). Access the methods by calling `mgmt.tickets()`.
-* **User Blocks:** See [Docs](https://auth0.com/docs/api/management/v2#!/User_Blocks/get_user_blocks). Access the methods by calling `mgmt.userBlocks()`.
-* **Users:** See [this](https://auth0.com/docs/api/management/v2#!/Users/get_users) and [this](https://auth0.com/docs/api/management/v2#!/Users_By_Email) doc. Access the methods by calling `mgmt.users()`. This endpoint supports pagination.
-
-
-> Some of the endpoints above indicate they support paginated responses. You can request a page of items by passing in the filter instance the `page` and `per_page` parameters, and optionally `include_totals` to obtain a summary of the results. Refer to the "List Users" example below for details.
-
-
-### Users
-
-#### List by Email
-
-Creates a request to list the Users by Email. This is the preferred and fastest way to query Users by Email, and should be used instead of calling the generic list method with an email query. An API Token with scope `read:users` is needed. If you want the identities.access_token property to be included, you will also need the scope `read:user_idp_tokens`.
-You can pass an optional Filter to narrow the results in the response.
-
-`Request> listByEmail(String email, UserFilter filter)`
-
-Example:
```java
-FieldsFilter filter = new FieldsFilter();
-//...
-Request> request = mgmt.users().listByEmail("johndoe@auth0.com", filter);
-try {
- List response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
+AuthAPI authAPI = AuthAPI.newBuilder("{YOUR_DOMAIN}", "{YOUR_CLIENT_ID}", "{YOUR_CLIENT_SECRET}").build();
+TokenRequest tokenRequest = authAPI.requestToken("https://{YOUR_DOMAIN}/api/v2/");
+TokenHolder holder = tokenRequest.execute().getBody();
+String accessToken = holder.getAccessToken();
+ManagementApi mgmt = ManagementApi.builder()
+ .domain("{YOUR_DOMAIN}")
+ .token(accessToken)
+ .build();
```
-#### List
-
-Creates a request to list the Users. An API Token with scope `read:users` is needed. If you want the identities.access_token property to be included, you will also need the scope `read:user_idp_tokens`.
-You can pass an optional Filter to narrow the results in the response.
-
-`Request list(UserFilter filter)`
-
-Example:
-```java
-UserFilter filter = new UserFilter()
- .withPage(1, 20);
-//...
-Request request = mgmt.users().list(filter);
-try {
- UsersPage response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Get
-
-Creates a request to get a User. An API Token with scope `read:users` is needed. If you want the identities.access_token property to be included, you will also need the scope `read:user_idp_tokens`.
-You can pass an optional Filter to specify the fields you want to include or exclude from the response.
-
-`Request get(String userId, UserFilter filter)`
-
-Example:
-```java
-UserFilter filter = new UserFilter();
-//...
-Request request = mgmt.users().get("auth0|123", filter);
-try {
- User response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Create
-
-Creates a request to create a User. An API Token with scope `create:users` is needed.
-
-`Request create(User user)`
-
-Example:
-```java
-User data = new User("my-connection");
-//...
-Request request = mgmt.users().create(data);
-try {
- User response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Delete
-
-Creates a request to delete a User. An API Token with scope `delete:users` is needed.
-
-`Request delete(String userId)`
-
-Example:
-```java
-Request request = mgmt.users().delete("auth0|123");
-try {
- request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Update
-
-Creates a request to update a User. An API Token with scope `update:users` is needed. If you're updating app_metadata you'll also need `update:users_app_metadata` scope.
-
-`Request update(String userId, User user)`
-
-Example:
-```java
-User data = new User();
-//...
-Request request = mgmt.users().update("auth0|123", data);
-try {
- User response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Get Guardian Enrollments
-
-Creates a request to list the User's Guardian Enrollments. An API Token with scope `read:users` is needed.
-
-`Request> getEnrollments(String userId)`
-
-Example:
-```java
-Request> request = mgmt.users().getEnrollments("auth0|123");
-try {
- List response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Get Log Events
-
-Creates a request to list the User's Log Events. An API Token with scope `read:logs` is needed.
-You can pass an optional Filter to narrow the results in the response.
-
-`Request getLogEvents(String userId, LogEventFilter filter)`
-
-Example:
-```java
-LogEventFilter filter = new LogEventFilter();
-//...
-Request request = mgmt.users().getLogEvents("auth0|123", filter);
-try {
- LogEventsPage response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-
-#### Delete Multifactor Provider
-
-Creates a request to delete the User's Multifactor Provider. An API Token with scope `update:users` is needed.
-
-`Request deleteMultifactorProvider(String userId, String provider)`
-
-Example:
-```java
-Request request = mgmt.users().deleteMultifactorProvider("auth0|123", "duo");
-try {
- request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Rotate Recovery Code
-
-Creates a request to rotate the User's Recovery Code. An API Token with scope `update:users` is needed.
-
-`Request rotateRecoveryCode(String userId)`
-
-Example:
-```java
-Request request = mgmt.users().rotateRecoveryCode("auth0|123");
-try {
- RecoveryCode response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Link Identities
-
-Creates a request to link two User identities. An API Token with scope `update:users` is needed.
-
-`Request> linkIdentity(String primaryUserId, String secondaryUserId, String provider, String connectionId)`
-
-Example:
-```java
-Request> request = mgmt.users().linkIdentity("auth0|123", "124", "facebook", "c90");
-try {
- List response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-#### Un-Link Identities
-
-Creates a request to un-link two User identities. An API Token with scope `update:users` is needed.
-
-`Request> unlinkIdentity(String primaryUserId, String secondaryUserId, String provider)`
-
-Example:
-```java
-Request> request = mgmt.users().unlinkIdentity("auth0|123", "124", "facebook");
-try {
- List response = request.execute();
-} catch (APIException exception) {
- // api error
-} catch (Auth0Exception exception) {
- // request error
-}
-```
-
-
-
-## Error Handling
-
-The API Clients throw `Auth0Exception` when an unexpected error happens on a request execution, i.e. Connectivity or Timeout error.
-
-If you need to handle different error scenarios you need to catch first `APIException`, which provides methods to get a clue of what went wrong.
-
-The APIExplorer includes a list of response messages for each endpoint. You can get a clue of what went wrong by asking the Http status code: `exception.getStatusCode()`. i.e. a `status_code=403` would mean that the token has an insufficient scope.
-
-An error code will be included to categorize the type of error, you can get it by calling `exception.getError()`. If you want to see a user friendly description of what happened and why the request is failing check the `exception.getDescription()`. Finally, if the error response includes additional properties they can be obtained by calling `exception.getValue("{THE_KEY}")`.
-
-
-```
-Example exception data
-{
- statusCode: 400,
- description: "Query validation error: 'String 'users' does not match pattern. Must be a comma separated list of the following values: name,strategy,options,enabled_clients,id,provisioning_ticket_url' on property fields (A comma separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields).",
- error: "invalid_query_string"
-}
-```
-
-## Documentation
-
-For more information about [Auth0](http://auth0.com) check our [documentation page](http://docs.auth0.com/).
-
-## What is Auth0?
-
-Auth0 helps you to:
-
-* Add authentication with [multiple authentication sources](https://docs.auth0.com/identityproviders), either social like **Google, Facebook, Microsoft Account, LinkedIn, GitHub, Twitter, Box, Salesforce, among others**, or enterprise identity systems like **Windows Azure AD, Google Apps, Active Directory, ADFS or any SAML Identity Provider**.
-* Add authentication through more traditional **[username/password databases](https://docs.auth0.com/mysql-connection-tutorial)**.
-* Add support for **[linking different user accounts](https://docs.auth0.com/link-accounts)** with the same user.
-* Support for generating signed [Json Web Tokens](https://docs.auth0.com/jwt) to call your APIs and **flow the user identity** securely.
-* Analytics of how, when and where users are logging in.
-* Pull data from other sources and add it to the user profile, through [JavaScript rules](https://docs.auth0.com/rules).
-
-## Create a free Auth0 Account
+See the [Auth0 Management API documentation](https://auth0.com/docs/api/management/v2/tokens) for more information on how to obtain API Tokens.
-1. Go to [Auth0](https://auth0.com) and click Sign Up.
-2. Use Google, GitHub or Microsoft Account to login.
+## API Reference
-## Issue Reporting
+- [AuthAPI](https://javadoc.io/doc/com.auth0/auth0/latest/com/auth0/client/auth/AuthAPI.html)
+- [ManagementApi](https://javadoc.io/doc/com.auth0/auth0/latest/com/auth0/client/mgmt/ManagementApi.html)
-If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues.
+## Feedback
-## Author
+### Contributing
-[Auth0](https://auth0.com)
+We appreciate feedback and contribution to this repo! Before you get started, please see the following:
-## License
+- [Auth0's general contribution guidelines](https://github.com/auth0/open-source-template/blob/master/GENERAL-CONTRIBUTING.md)
+- [Auth0's code of conduct guidelines](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md)
-This project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info.
+### Raise an issue
+To provide feedback or report a bug, [please raise an issue on our issue tracker](https://github.com/auth0/auth0-java/issues).
+### Vulnerability Reporting
+Please do not report security vulnerabilities on the public Github issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues.
-
+---
-[circle-ci-badge]: https://img.shields.io/circleci/project/github/auth0/auth0-java.svg?style=flat
-[circle-ci-url]: https://circleci.com/gh/auth0/auth0-java/tree/master
-[mit-badge]: http://img.shields.io/:license-mit-blue.svg?style=flat
-[mit-url]: https://raw.githubusercontent.com/auth0/auth0-java/master/LICENSE
-[maven-badge]: https://img.shields.io/maven-central/v/com.auth0/auth0.svg
-[maven-url]: http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.auth0%22%20AND%20a%3A%22auth0%22
-[jcenter-badge]: https://api.bintray.com/packages/auth0/java/auth0/images/download.svg
-[jcenter-url]: https://bintray.com/auth0/java/auth0/_latestVersion
-[codecov-badge]: https://codecov.io/gh/auth0/auth0-java/branch/master/graph/badge.svg
-[codecov-url]: https://codecov.io/gh/auth0/auth0-java
+
+
+
+
+
+
+
+
Auth0 is an easy to implement, adaptable authentication and authorization platform. To learn more checkout Why Auth0?
+
+This project is licensed under the MIT license. See the LICENSE file for more info.
+
+**triggerId:** `Optional` — An actions extensibility point.
+
+
+
+
+
+
+
+**actionName:** `Optional` — The name of the action to retrieve.
+
+
+
+
+
+
+
+**deployed:** `Optional` — Optional filter to only retrieve actions that are deployed.
+
+
+
+
+
+
+
+**page:** `Optional` — Use this field to request a specific page of the list results.
+
+
+
+
+
+
+
+**perPage:** `Optional` — The maximum number of results to be returned by the server in single response. 20 by default
+
+
+
+
+
+
+
+**installed:** `Optional` — Optional. When true, return only installed actions. When false, return only custom actions. Returns all actions by default.
+
+
+
+**name:** `String` — The name of an action.
+
+
+
+
+
+
+
+**supportedTriggers:** `List` — The list of triggers that this action supports. At this time, an action can only target a single trigger at a time.
+
+
+
+
+
+
+
+**code:** `Optional` — The source code of the action.
+
+
+
+
+
+
+
+**dependencies:** `Optional>` — The list of third party npm modules, and their versions, that this action depends on.
+
+
+
+
+
+
+
+**runtime:** `Optional` — The Node runtime. For example: `node22`, defaults to `node22`
+
+
+
+
+
+
+
+**secrets:** `Optional>` — The list of secrets that are included in an action or a version of an action.
+
+
+
+
+
+
+
+**modules:** `Optional>` — The list of action modules and their versions used by this action.
+
+
+
+
+
+
+
+**deploy:** `Optional` — True if the action should be deployed after creation.
+
+
+
+Update an existing action. If this action is currently bound to a trigger, updating it will not affect any user flows until the action is deployed.
+
+
+**id:** `String` — The id of the action to update.
+
+
+
+
+
+
+
+**name:** `Optional` — The name of an action.
+
+
+
+
+
+
+
+**supportedTriggers:** `Optional>` — The list of triggers that this action supports. At this time, an action can only target a single trigger at a time.
+
+
+
+
+
+
+
+**code:** `Optional` — The source code of the action.
+
+
+
+
+
+
+
+**dependencies:** `Optional>` — The list of third party npm modules, and their versions, that this action depends on.
+
+
+
+
+
+
+
+**runtime:** `Optional` — The Node runtime. For example: `node22`, defaults to `node22`
+
+
+
+
+
+
+
+**secrets:** `Optional>` — The list of secrets that are included in an action or a version of an action.
+
+
+
+
+
+
+
+**modules:** `Optional>` — The list of action modules and their versions used by this action.
+
+
+
+Deploy an action. Deploying an action will create a new immutable version of the action. If the action is currently bound to a trigger, then the system will begin executing the newly deployed version of the action immediately. Otherwise, the action will only be executed as a part of a flow once it is bound to that flow.
+
+
+**audience:** `String` — The audience (API identifier) of this client grant
+
+
+
+
+
+
+
+**organizationUsage:** `Optional`
+
+
+
+
+
+
+
+**allowAnyOrganization:** `Optional` — If enabled, any organization can be used with this grant. If disabled (default), the grant must be explicitly assigned to the desired organizations.
+
+
+
+
+
+
+
+**scope:** `Optional>` — Scopes allowed for this client grant.
+
+
+
+
+
+
+
+**subjectType:** `Optional`
+
+
+
+
+
+
+
+**authorizationDetailsTypes:** `Optional>` — Types of authorization_details allowed for this client grant.
+
+
+
+
+
+
+
+**allowAllScopes:** `Optional` — If enabled, all scopes configured on the resource server are allowed for this grant.
+
+
+
+Retrieve clients (applications and SSO integrations) matching provided filters. A list of fields to include or exclude may also be specified.
+For more information, read Applications in Auth0 and Single Sign-On.
+
+
+
+ The following can be retrieved with any scope:
+ client_id, app_type, name, and description.
+
+
+ The following properties can only be retrieved with the read:clients or
+ read:client_keys scope:
+ callbacks, oidc_logout, allowed_origins,
+ web_origins, tenant, global, config_route,
+ callback_url_template, jwt_configuration,
+ jwt_configuration.lifetime_in_seconds, jwt_configuration.secret_encoded,
+ jwt_configuration.scopes, jwt_configuration.alg, api_type,
+ logo_uri, allowed_clients, owners, custom_login_page,
+ custom_login_page_off, sso, addons, form_template,
+ custom_login_page_codeview, resource_servers, client_metadata,
+ mobile, mobile.android, mobile.ios, allowed_logout_urls,
+ token_endpoint_auth_method, is_first_party, oidc_conformant,
+ is_token_endpoint_ip_header_trusted, initiate_login_uri, grant_types,
+ refresh_token, refresh_token.rotation_type, refresh_token.expiration_type,
+ refresh_token.leeway, refresh_token.token_lifetime, refresh_token.policies, organization_usage,
+ organization_require_behavior.
+
+
+ The following properties can only be retrieved with the
+ read:client_keys or read:client_credentials scope:
+ encryption_key, encryption_key.pub, encryption_key.cert,
+ client_secret, client_authentication_methods and signing_key.
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Default value is 50, maximum value is 100
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**isGlobal:** `Optional` — Optional filter on the global client parameter.
+
+
+
+
+
+
+
+**isFirstParty:** `Optional` — Optional filter on whether or not a client is a first-party client.
+
+
+
+
+
+
+
+**appType:** `Optional` — Optional filter by a comma-separated list of application types.
+
+
+
+Create a new client (application or SSO integration). For more information, read Create Applications
+API Endpoints for Single Sign-On.
+
+Notes:
+- We recommend leaving the `client_secret` parameter unspecified to allow the generation of a safe secret.
+- The client_authentication_methods and token_endpoint_auth_method properties are mutually exclusive. Use
+client_authentication_methods to configure the client with Private Key JWT authentication method. Otherwise, use token_endpoint_auth_method
+to configure the client with client secret (basic or post) or with no authentication method (none).
+- When using client_authentication_methods to configure the client with Private Key JWT authentication method, specify fully defined credentials.
+These credentials will be automatically enabled for Private Key JWT authentication on the client.
+- To configure client_authentication_methods, the create:client_credentials scope is required.
+- To configure client_authentication_methods, the property jwt_configuration.alg must be set to RS256.
+
+
SSO Integrations created via this endpoint will accept login requests and share user profile information.
+
+**name:** `String` — Name of this client (min length: 1 character, does not allow `<` or `>`).
+
+
+
+
+
+
+
+**description:** `Optional` — Free text description of this client (max length: 140 characters).
+
+
+
+
+
+
+
+**logoUri:** `Optional` — URL of the logo to display for this client. Recommended size is 150x150 pixels.
+
+
+
+
+
+
+
+**callbacks:** `Optional>` — Comma-separated list of URLs whitelisted for Auth0 to use as a callback to the client after authentication.
+
+
+
+
+
+
+
+**oidcLogout:** `Optional`
+
+
+
+
+
+
+
+**oidcBackchannelLogout:** `Optional` — Configuration for OIDC backchannel logout (deprecated, in favor of oidc_logout)
+
+
+
+
+
+
+
+**sessionTransfer:** `Optional`
+
+
+
+
+
+
+
+**allowedOrigins:** `Optional>` — Comma-separated list of URLs allowed to make requests from JavaScript to Auth0 API (typically used with CORS). By default, all your callback URLs will be allowed. This field allows you to enter other origins if necessary. You can also use wildcards at the subdomain level (e.g., https://*.contoso.com). Query strings and hash information are not taken into account when validating these URLs.
+
+
+
+**clientAliases:** `Optional>` — List of audiences/realms for SAML protocol. Used by the wsfed addon.
+
+
+
+
+
+
+
+**allowedClients:** `Optional>` — List of allow clients and API ids that are allowed to make delegation requests. Empty means all all your clients are allowed.
+
+
+
+
+
+
+
+**allowedLogoutUrls:** `Optional>` — Comma-separated list of URLs that are valid to redirect to after logout from Auth0. Wildcards are allowed for subdomains.
+
+
+
+
+
+
+
+**grantTypes:** `Optional>` — List of grant types supported for this application. Can include `authorization_code`, `implicit`, `refresh_token`, `client_credentials`, `password`, `http://auth0.com/oauth/grant-type/password-realm`, `http://auth0.com/oauth/grant-type/mfa-oob`, `http://auth0.com/oauth/grant-type/mfa-otp`, `http://auth0.com/oauth/grant-type/mfa-recovery-code`, `urn:openid:params:grant-type:ciba`, `urn:ietf:params:oauth:grant-type:device_code`, and `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token`.
+
+
+
+
+
+
+
+**tokenEndpointAuthMethod:** `Optional`
+
+
+
+
+
+
+
+**isTokenEndpointIpHeaderTrusted:** `Optional` — If true, trust that the IP specified in the `auth0-forwarded-for` header is the end-user's IP for brute-force-protection on token endpoint.
+
+
+
+
+
+
+
+**appType:** `Optional`
+
+
+
+
+
+
+
+**isFirstParty:** `Optional` — Whether this client a first party client or not
+
+
+
+
+
+
+
+**oidcConformant:** `Optional` — Whether this client conforms to strict OIDC specifications (true) or uses legacy features (false).
+
+
+
+
+
+
+
+**jwtConfiguration:** `Optional`
+
+
+
+
+
+
+
+**encryptionKey:** `Optional`
+
+
+
+
+
+
+
+**sso:** `Optional` — Applies only to SSO clients and determines whether Auth0 will handle Single Sign On (true) or whether the Identity Provider will (false).
+
+
+
+
+
+
+
+**crossOriginAuthentication:** `Optional` — Whether this client can be used to make cross-origin authentication requests (true) or it is not allowed to make such requests (false).
+
+
+
+
+
+
+
+**crossOriginLoc:** `Optional` — URL of the location in your site where the cross origin verification takes place for the cross-origin auth flow when performing Auth in your own domain instead of Auth0 hosted login page.
+
+
+
+
+
+
+
+**ssoDisabled:** `Optional` — true to disable Single Sign On, false otherwise (default: false)
+
+
+
+
+
+
+
+**customLoginPageOn:** `Optional` — true if the custom login page is to be used, false otherwise. Defaults to true
+
+
+
+
+
+
+
+**customLoginPage:** `Optional` — The content (HTML, CSS, JS) of the custom login page.
+
+
+
+
+
+
+
+**customLoginPagePreview:** `Optional` — The content (HTML, CSS, JS) of the custom login page. (Used on Previews)
+
+
+
+
+
+
+
+**formTemplate:** `Optional` — HTML form template to be used for WS-Federation.
+
+
+
+
+
+
+
+**addons:** `Optional`
+
+
+
+
+
+
+
+**clientMetadata:** `Optional
+
+
+
+
+
+**mobile:** `Optional`
+
+
+
+
+
+
+
+**initiateLoginUri:** `Optional` — Initiate login uri, must be https
+
+
+
+**organizationDiscoveryMethods:** `Optional>` — Defines the available methods for organization discovery during the `pre_login_prompt`. Users can discover their organization either by `email`, `organization_name` or both.
+
+
+
+**requirePushedAuthorizationRequests:** `Optional` — Makes the use of Pushed Authorization Requests mandatory for this client
+
+
+
+
+
+
+
+**requireProofOfPossession:** `Optional` — Makes the use of Proof-of-Possession mandatory for this client
+
+
+
+
+
+
+
+**signedRequestObject:** `Optional`
+
+
+
+
+
+
+
+**complianceLevel:** `Optional`
+
+
+
+
+
+
+
+**skipNonVerifiableCallbackUriConfirmationPrompt:** `Optional`
+
+Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`).
+If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps.
+See https://auth0.com/docs/secure/security-guidance/measures-against-app-impersonation for more information.
+
+
+
+
+
+
+
+**tokenExchange:** `Optional`
+
+
+
+
+
+
+
+**parRequestExpiry:** `Optional` — Specifies how long, in seconds, a Pushed Authorization Request URI remains valid
+
+
+
+
+
+
+
+**tokenQuota:** `Optional`
+
+
+
+
+
+
+
+**resourceServerIdentifier:** `Optional` — The identifier of the resource server that this client is linked to.
+
+
+
+Retrieve client details by ID. Clients are SSO connections or Applications linked with your Auth0 tenant. A list of fields to include or exclude may also be specified.
+For more information, read Applications in Auth0 and Single Sign-On.
+
+
+ The following properties can be retrieved with any of the scopes:
+ client_id, app_type, name, and description.
+
+
+ The following properties can only be retrieved with the read:clients or
+ read:client_keys scopes:
+ callbacks, oidc_logout, allowed_origins,
+ web_origins, tenant, global, config_route,
+ callback_url_template, jwt_configuration,
+ jwt_configuration.lifetime_in_seconds, jwt_configuration.secret_encoded,
+ jwt_configuration.scopes, jwt_configuration.alg, api_type,
+ logo_uri, allowed_clients, owners, custom_login_page,
+ custom_login_page_off, sso, addons, form_template,
+ custom_login_page_codeview, resource_servers, client_metadata,
+ mobile, mobile.android, mobile.ios, allowed_logout_urls,
+ token_endpoint_auth_method, is_first_party, oidc_conformant,
+ is_token_endpoint_ip_header_trusted, initiate_login_uri, grant_types,
+ refresh_token, refresh_token.rotation_type, refresh_token.expiration_type,
+ refresh_token.leeway, refresh_token.token_lifetime, refresh_token.policies, organization_usage,
+ organization_require_behavior.
+
+
+ The following properties can only be retrieved with the read:client_keys or read:client_credentials scopes:
+ encryption_key, encryption_key.pub, encryption_key.cert,
+ client_secret, client_authentication_methods and signing_key.
+
+
+**id:** `String` — ID of the client to retrieve.
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+
+
+
+
+client.clients.delete(id)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Delete a client and related configuration (rules, connections, etc).
+
+
+
+
+
+#### 🔌 Usage
+
+
+
+
+
+
+
+```java
+client.clients().delete("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+
+
+
+
+
+**id:** `String` — ID of the client to delete.
+
+
+
+Updates a client's settings. For more information, read Applications in Auth0 and Single Sign-On.
+
+Notes:
+- The `client_secret` and `signing_key` attributes can only be updated with the `update:client_keys` scope.
+- The client_authentication_methods and token_endpoint_auth_method properties are mutually exclusive. Use client_authentication_methods to configure the client with Private Key JWT authentication method. Otherwise, use token_endpoint_auth_method to configure the client with client secret (basic or post) or with no authentication method (none).
+- When using client_authentication_methods to configure the client with Private Key JWT authentication method, only specify the credential IDs that were generated when creating the credentials on the client.
+- To configure client_authentication_methods, the update:client_credentials scope is required.
+- To configure client_authentication_methods, the property jwt_configuration.alg must be set to RS256.
+- To change a client's is_first_party property to false, the organization_usage and organization_require_behavior properties must be unset.
+
+
+**id:** `String` — ID of the client to update.
+
+
+
+
+
+
+
+**name:** `Optional` — The name of the client. Must contain at least one character. Does not allow '<' or '>'.
+
+
+
+
+
+
+
+**description:** `Optional` — Free text description of the purpose of the Client. (Max character length: 140)
+
+
+
+
+
+
+
+**clientSecret:** `Optional` — The secret used to sign tokens for the client
+
+
+
+
+
+
+
+**logoUri:** `Optional` — The URL of the client logo (recommended size: 150x150)
+
+
+
+
+
+
+
+**callbacks:** `Optional>` — A set of URLs that are valid to call back from Auth0 when authenticating users
+
+
+
+
+
+
+
+**oidcLogout:** `Optional`
+
+
+
+
+
+
+
+**oidcBackchannelLogout:** `Optional` — Configuration for OIDC backchannel logout (deprecated, in favor of oidc_logout)
+
+
+
+
+
+
+
+**sessionTransfer:** `Optional`
+
+
+
+
+
+
+
+**allowedOrigins:** `Optional>` — A set of URLs that represents valid origins for CORS
+
+
+
+
+
+
+
+**webOrigins:** `Optional>` — A set of URLs that represents valid web origins for use with web message response mode
+
+
+
+
+
+
+
+**grantTypes:** `Optional>` — A set of grant types that the client is authorized to use. Can include `authorization_code`, `implicit`, `refresh_token`, `client_credentials`, `password`, `http://auth0.com/oauth/grant-type/password-realm`, `http://auth0.com/oauth/grant-type/mfa-oob`, `http://auth0.com/oauth/grant-type/mfa-otp`, `http://auth0.com/oauth/grant-type/mfa-recovery-code`, `urn:openid:params:grant-type:ciba`, `urn:ietf:params:oauth:grant-type:device_code`, and `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token`.
+
+
+
+
+
+
+
+**clientAliases:** `Optional>` — List of audiences for SAML protocol
+
+
+
+
+
+
+
+**allowedClients:** `Optional>` — Ids of clients that will be allowed to perform delegation requests. Clients that will be allowed to make delegation request. By default, all your clients will be allowed. This field allows you to specify specific clients
+
+
+
+
+
+
+
+**allowedLogoutUrls:** `Optional>` — URLs that are valid to redirect to after logout from Auth0
+
+
+
+
+
+
+
+**jwtConfiguration:** `Optional` — An object that holds settings related to how JWTs are created
+
+
+
+
+
+
+
+**encryptionKey:** `Optional` — The client's encryption key
+
+
+
+
+
+
+
+**sso:** `Optional` — true to use Auth0 instead of the IdP to do Single Sign On, false otherwise (default: false)
+
+
+
+
+
+
+
+**crossOriginAuthentication:** `Optional` — true if this client can be used to make cross-origin authentication requests, false otherwise if cross origin is disabled
+
+
+
+
+
+
+
+**crossOriginLoc:** `Optional` — URL for the location in your site where the cross origin verification takes place for the cross-origin auth flow when performing Auth in your own domain instead of Auth0 hosted login page.
+
+
+
+
+
+
+
+**ssoDisabled:** `Optional` — true to disable Single Sign On, false otherwise (default: false)
+
+
+
+
+
+
+
+**customLoginPageOn:** `Optional` — true if the custom login page is to be used, false otherwise.
+
+
+
+
+
+
+
+**tokenEndpointAuthMethod:** `Optional`
+
+
+
+
+
+
+
+**isTokenEndpointIpHeaderTrusted:** `Optional` — If true, trust that the IP specified in the `auth0-forwarded-for` header is the end-user's IP for brute-force-protection on token endpoint.
+
+
+
+
+
+
+
+**appType:** `Optional`
+
+
+
+
+
+
+
+**isFirstParty:** `Optional` — Whether this client a first party client or not
+
+
+
+
+
+
+
+**oidcConformant:** `Optional` — Whether this client will conform to strict OIDC specifications
+
+
+
+
+
+
+
+**customLoginPage:** `Optional` — The content (HTML, CSS, JS) of the custom login page
+
+
+
+
+
+
+
+**customLoginPagePreview:** `Optional`
+
+
+
+
+
+
+
+**tokenQuota:** `Optional`
+
+
+
+
+
+
+
+**formTemplate:** `Optional` — Form template for WS-Federation protocol
+
+
+
+
+
+
+
+**addons:** `Optional`
+
+
+
+
+
+
+
+**clientMetadata:** `Optional
+
+
+
+
+
+**mobile:** `Optional` — Configuration related to native mobile apps
+
+
+
+
+
+
+
+**initiateLoginUri:** `Optional` — Initiate login uri, must be https
+
+
+
+**organizationDiscoveryMethods:** `Optional>` — Defines the available methods for organization discovery during the `pre_login_prompt`. Users can discover their organization either by `email`, `organization_name` or both.
+
+
+
+**requirePushedAuthorizationRequests:** `Optional` — Makes the use of Pushed Authorization Requests mandatory for this client
+
+
+
+
+
+
+
+**requireProofOfPossession:** `Optional` — Makes the use of Proof-of-Possession mandatory for this client
+
+
+
+
+
+
+
+**signedRequestObject:** `Optional`
+
+
+
+
+
+
+
+**complianceLevel:** `Optional`
+
+
+
+
+
+
+
+**skipNonVerifiableCallbackUriConfirmationPrompt:** `Optional`
+
+Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`).
+If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps.
+See https://auth0.com/docs/secure/security-guidance/measures-against-app-impersonation for more information.
+
+
+
+
+
+
+
+**tokenExchange:** `Optional`
+
+
+
+
+
+
+
+**parRequestExpiry:** `Optional` — Specifies how long, in seconds, a Pushed Authorization Request URI remains valid
+
+
+
+Rotate a client secret.
+
+This endpoint cannot be used with clients configured with Private Key JWT authentication method (client_authentication_methods configured with private_key_jwt). The generated secret is NOT base64 encoded.
+
+For more information, read Rotate Client Secrets.
+
+
+Retrieves detailed list of all connections that match the specified strategy. If no strategy is provided, all connections within your tenant are retrieved. This action can accept a list of fields to include or exclude from the resulting list of connections.
+
+This endpoint supports two types of pagination:
+
+
Offset pagination
+
Checkpoint pagination
+
+
+Checkpoint pagination must be used if you need to retrieve more than 1000 connections.
+
+
Checkpoint Pagination
+
+To search by checkpoint, use the following parameters:
+
+
from: Optional id from which to start selection.
+
take: The total amount of entries to retrieve when using the from parameter. Defaults to 50.
+
+
+Note: The first time you call this endpoint using checkpoint pagination, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no pages are remaining.
+
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**strategy:** `Optional` — Provide strategies to only retrieve connections with such strategies
+
+
+
+
+
+
+
+**name:** `Optional` — Provide the name of the connection to retrieve
+
+
+
+
+
+
+
+**fields:** `Optional` — A comma separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields
+
+
+
+
+
+
+
+**includeFields:** `Optional` — true if the fields specified are to be included in the result, false otherwise (defaults to true)
+
+
+
+Creates a new connection according to the JSON object received in body.
+
+Note: If a connection with the same name was recently deleted and had a large number of associated users, the deletion may still be processing. Creating a new connection with that name before the deletion completes may fail or produce unexpected results.
+
+
+**name:** `String` — The name of the connection. Must start and end with an alphanumeric character and can only contain alphanumeric characters and '-'. Max length 128
+
+
+
+
+
+
+
+**displayName:** `Optional` — Connection name used in the new universal login experience
+
+
+
+**enabledClients:** `Optional>` — DEPRECATED property. Use the PATCH /v2/connections/{id}/clients endpoint to enable the connection for a set of clients.
+
+
+
+
+
+
+
+**isDomainConnection:** `Optional` — true promotes to a domain-level connection so that third-party applications can use it. false does not promote the connection, so only first-party applications with the connection enabled can use it. (Defaults to false.)
+
+
+
+
+
+
+
+**showAsButton:** `Optional` — Enables showing a button for the connection in the login page (new experience only). If false, it will be usable only by HRD. (Defaults to false.)
+
+
+
+
+
+
+
+**realms:** `Optional>` — Defines the realms for which the connection will be used (ie: email domains). If the array is empty or the property is not specified, the connection name will be added as realm.
+
+
+
+**id:** `String` — The id of the connection to retrieve
+
+
+
+
+
+
+
+**fields:** `Optional` — A comma separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields
+
+
+
+
+
+
+
+**includeFields:** `Optional` — true if the fields specified are to be included in the result, false otherwise (defaults to true)
+
+
+
+
+
+
+
+
+
+
+
+client.connections.delete(id)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Removes a specific connection from your tenant. This action cannot be undone. Once removed, users can no longer use this connection to authenticate.
+
+Note: If your connection has a large amount of users associated with it, please be aware that this operation can be long running after the response is returned and may impact concurrent create connection requests, if they use an identical connection name.
+
+
+Update details for a specific connection, including option properties for identity provider configuration.
+
+Note: If you use the options parameter, the entire options object is overriden. To avoid partial data or other issues, ensure all parameters are present when using this option.
+
+
+**id:** `String` — The id of the connection to update
+
+
+
+
+
+
+
+**displayName:** `Optional` — The connection name used in the new universal login experience. If display_name is not included in the request, the field will be overwritten with the name value.
+
+
+
+
+
+
+
+**options:** `Optional`
+
+
+
+
+
+
+
+**enabledClients:** `Optional>` — DEPRECATED property. Use the PATCH /v2/connections/{id}/clients endpoint to enable or disable the connection for any clients.
+
+
+
+
+
+
+
+**isDomainConnection:** `Optional` — true promotes to a domain-level connection so that third-party applications can use it. false does not promote the connection, so only first-party applications with the connection enabled can use it. (Defaults to false.)
+
+
+
+
+
+
+
+**showAsButton:** `Optional` — Enables showing a button for the connection in the login page (new experience only). If false, it will be usable only by HRD. (Defaults to false.)
+
+
+
+
+
+
+
+**realms:** `Optional>` — Defines the realms for which the connection will be used (ie: email domains). If the array is empty or the property is not specified, the connection name will be added as realm.
+
+
+
+
+
+
+
+**metadata:** `Optional
+
+
+
+
+
+**authentication:** `Optional`
+
+
+
+
+
+
+
+**connectedAccounts:** `Optional`
+
+
+
+
+
+
+
+
+
+
+
+client.connections.checkStatus(id)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Retrieves the status of an ad/ldap connection referenced by its ID. 200 OK http status code response is returned when the connection is online, otherwise a 404 status code is returned along with an error message
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+**sort:** `Optional` — Field to sort by. Only domain:1 (ascending order by domain) is supported at this time.
+
+
+
+Create a new custom domain.
+
+Note: The custom domain will need to be verified before it will accept
+requests.
+
+Optional attributes that can be updated:
+
+- custom_client_ip_header
+- tls_policy
+
+
+TLS Policies:
+
+- recommended - for modern usage this includes TLS 1.2 only
+
+
+**relyingPartyIdentifier:** `Optional` — Relying Party ID (rpId) to be used for Passkeys on this custom domain. If not provided, the full domain will be used.
+
+
+
+Update a custom domain.
+
+These are the attributes that can be updated:
+
+- custom_client_ip_header
+- tls_policy
+
+
Updating CUSTOM_CLIENT_IP_HEADER for a custom domain
To update the custom_client_ip_header for a domain, the body to
+send should be:
+
{ "custom_client_ip_header": "cf-connecting-ip" }
+
+
Updating TLS_POLICY for a custom domain
To update the tls_policy for a domain, the body to send should be:
+
{ "tls_policy": "recommended" }
+
+
+TLS Policies:
+
+- recommended - for modern usage this includes TLS 1.2 only
+
+
+Some considerations:
+
+- The TLS ciphers and protocols available in each TLS policy follow industry recommendations, and may be updated occasionally.
+- The compatible TLS policy is no longer supported.
+
+
+**id:** `String` — The id of the custom domain to update
+
+
+
+
+
+
+
+**tlsPolicy:** `Optional` — recommended includes TLS 1.2
+
+
+
+
+
+
+
+**customClientIpHeader:** `Optional`
+
+
+
+
+
+
+
+**domainMetadata:** `Optional
+
+
+
+
+
+**relyingPartyIdentifier:** `Optional` — Relying Party ID (rpId) to be used for Passkeys on this custom domain. Set to null to remove the rpId and fall back to using the full domain.
+
+
+
+Run the verification process on a custom domain.
+
+Note: Check the status field to see its verification status. Once verification is complete, it may take up to 10 minutes before the custom domain can start accepting requests.
+
+For self_managed_certs, when the custom domain is verified for the first time, the response will also include the cname_api_key which you will need to configure your proxy. This key must be kept secret, and is used to validate the proxy requests.
+
+Learn more about verifying custom domains that use Auth0 Managed certificates.
+Learn more about verifying custom domains that use Self Managed certificates.
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. There is a maximum of 1000 results allowed from this endpoint.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+**userId:** `Optional` — user_id of the devices to retrieve.
+
+
+
+
+
+
+
+**clientId:** `Optional` — client_id of the devices to retrieve.
+
+
+
+
+
+
+
+**type:** `Optional` — Type of credentials to retrieve. Must be `public_key`, `refresh_token` or `rotating_refresh_token`. The property will default to `refresh_token` when paging is requested
+
+
+
+Create a device credential public key to manage refresh token rotation for a given user_id. Device Credentials APIs are designed for ad-hoc administrative use only and paging is by default enabled for GET requests.
+
+When refresh token rotation is enabled, the endpoint becomes consistent. For more information, read Signing Keys.
+
+
+**resultUrl:** `Optional` — URL to redirect the user to after a successful action.
+
+
+
+
+
+
+
+**subject:** `Optional` — Subject line of the email.
+
+
+
+
+
+
+
+**syntax:** `Optional` — Syntax of the template body.
+
+
+
+
+
+
+
+**urlLifetimeInSeconds:** `Optional` — Lifetime in seconds that the link within the email will be valid for.
+
+
+
+
+
+
+
+**includeEmailInRedirect:** `Optional` — Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
+
+
+
+
+
+
+
+**enabled:** `Optional` — Whether the template is enabled (true) or disabled (false).
+
+
+
+Retrieve an email template by pre-defined name. These names are `verify_email`, `verify_email_by_code`, `reset_email`, `reset_email_by_code`, `welcome_email`, `blocked_account`, `stolen_credentials`, `enrollment_email`, `mfa_oob_code`, `user_invitation`, and `async_approval`. The names `change_password`, and `password_reset` are also supported for legacy scenarios.
+
+
+**resultUrl:** `Optional` — URL to redirect the user to after a successful action.
+
+
+
+
+
+
+
+**subject:** `Optional` — Subject line of the email.
+
+
+
+
+
+
+
+**syntax:** `Optional` — Syntax of the template body.
+
+
+
+
+
+
+
+**urlLifetimeInSeconds:** `Optional` — Lifetime in seconds that the link within the email will be valid for.
+
+
+
+
+
+
+
+**includeEmailInRedirect:** `Optional` — Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
+
+
+
+
+
+
+
+**enabled:** `Optional` — Whether the template is enabled (true) or disabled (false).
+
+
+
+**resultUrl:** `Optional` — URL to redirect the user to after a successful action.
+
+
+
+
+
+
+
+**subject:** `Optional` — Subject line of the email.
+
+
+
+
+
+
+
+**syntax:** `Optional` — Syntax of the template body.
+
+
+
+
+
+
+
+**urlLifetimeInSeconds:** `Optional` — Lifetime in seconds that the link within the email will be valid for.
+
+
+
+
+
+
+
+**includeEmailInRedirect:** `Optional` — Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
+
+
+
+
+
+
+
+**enabled:** `Optional` — Whether the template is enabled (true) or disabled (false).
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**hydrate:** `Optional` — hydration param
+
+
+
+
+
+
+
+**synchronous:** `Optional` — flag to filter by sync/async flows
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**hydrate:** `Optional` — Query parameter to hydrate the response with additional data
+
+
+
+**perPage:** `Optional` — Number of results per page.
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**userId:** `Optional` — user_id of the grants to retrieve.
+
+
+
+
+
+
+
+**clientId:** `Optional` — client_id of the grants to retrieve.
+
+
+
+
+
+
+
+**audience:** `Optional` — audience of the grants to retrieve.
+
+
+
+**connectionId:** `Optional` — Filter groups by connection ID.
+
+
+
+
+
+
+
+**name:** `Optional` — Filter groups by name.
+
+
+
+
+
+
+
+**externalId:** `Optional` — Filter groups by external ID.
+
+
+
+
+
+
+
+**fields:** `Optional` — A comma separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**enabled:** `Optional` — Optional filter on whether a hook is enabled (true) or disabled (false).
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**triggerId:** `Optional` — Retrieves hooks that match the trigger
+
+
+
+**script:** `String` — Code to be executed when this hook runs.
+
+
+
+
+
+
+
+**enabled:** `Optional` — Whether this hook will be executed (true) or ignored (false).
+
+
+
+
+
+
+
+**dependencies:** `Optional
+
+
+
+
+
+**triggerId:** `HookTriggerIdEnum` — Execution stage of this rule. Can be `credentials-exchange`, `pre-user-registration`, `post-user-registration`, `post-change-password`, or `send-phone-message`.
+
+
The status of a log stream maybe any of the following:
+1. active - Stream is currently enabled.
+2. paused - Stream is currently user disabled and will not attempt log delivery.
+3. suspended - Stream is currently disabled because of errors and will not attempt log delivery.
+
+
+
+
+
+#### 🔌 Usage
+
+
+
+
+
+
+
+```java
+client.logStreams().get("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+
+
+
+
+
+**id:** `String` — The id of the log stream to get
+
+
+
+**id:** `String` — The id of the log stream to get
+
+
+
+
+
+
+
+**name:** `Optional` — log stream name
+
+
+
+
+
+
+
+**status:** `Optional`
+
+
+
+
+
+
+
+**isPriority:** `Optional` — True for priority log streams, false for non-priority
+
+
+
+
+
+
+
+**filters:** `Optional>` — Only logs events matching these filters will be delivered by the stream. If omitted or empty, all events will be delivered.
+
+
+
+Retrieve log entries that match the specified search criteria (or all log entries if no criteria specified).
+
+Set custom search criteria using the q parameter, or search from a specific log ID ("search from checkpoint").
+
+For more information on all possible event types, their respective acronyms, and descriptions, see Log Event Type Codes.
+
+
To set custom search criteria, use the following parameters:
page: Page index of the results to return. First page is 0.
+
per_page: Number of results per page.
+
sort: Field to use for sorting appended with `:1` for ascending and `:-1` for descending. e.g. `date:-1`
+
fields: Comma-separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields.
+
include_fields: Whether specified fields are to be included (true) or excluded (false).
+
include_totals: Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). Deprecated: this field is deprecated and should be removed from use. See Search Engine V3 Breaking Changes
+
+
+For more information on the list of fields that can be used in fields and sort, see Searchable Fields.
+
+Auth0 limits the number of logs you can return by search criteria to 100 logs per request. Furthermore, you may paginate only through 1,000 search results. If you exceed this threshold, please redefine your search or use the get logs by checkpoint method.
+
+
To search from a checkpoint log ID, use the following parameters:
+
+
from: Log Event ID from which to start retrieving logs. You can limit the number of logs returned using the take parameter. If you use from at the same time as q, from takes precedence and q is ignored.
+
take: Number of entries to retrieve when using the from parameter.
+
+
+Important: When fetching logs from a checkpoint log ID, any parameter other than from and take will be ignored, and date ordering is not guaranteed.
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Paging is disabled if parameter not sent. Default: 50. Max value: 100
+
+
+
+
+
+
+
+**sort:** `Optional` — Field to use for sorting appended with :1 for ascending and :-1 for descending. e.g. date:-1
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false)
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results as an array when false (default). Return results inside an object that also contains a total result count when true.
+
+
+
+
+
+
+
+**search:** `Optional`
+
+Retrieves logs that match the specified search criteria. This parameter can be combined with all the others in the /api/logs endpoint but is specified separately for clarity.
+If no fields are provided a case insensitive 'starts with' search is performed on all of the following fields: client_name, connection, user_name. Otherwise, you can specify multiple fields and specify the search using the %field%:%search%, for example: application:node user:"John@contoso.com".
+Values specified without quotes are matched using a case insensitive 'starts with' search. If quotes are used a case insensitve exact search is used. If multiple fields are used, the AND operator is used to join the clauses.
+
+
+
+**page:** `Optional` — Use this field to request a specific page of the list results.
+
+
+
+
+
+
+
+**perPage:** `Optional` — The amount of results per page.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+
+
+
+
+client.networkAcls.create(request)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Create a new access control list for your client.
+
+
+Retrieve detailed list of all Organizations available in your tenant. For more information, see Auth0 Organizations.
+
+This endpoint supports two types of pagination:
+
+
Offset pagination
+
Checkpoint pagination
+
+
+Checkpoint pagination must be used if you need to retrieve more than 1000 organizations.
+
+
Checkpoint Pagination
+
+To search by checkpoint, use the following parameters:
+
+
from: Optional id from which to start selection.
+
take: The total number of entries to retrieve when using the from parameter. Defaults to 50.
+
+
+Note: The first time you call this endpoint using checkpoint pagination, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no pages are remaining.
+
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**sort:** `Optional` — Field to sort by. Use field:order where order is 1 for ascending and -1 for descending. e.g. created_at:1. We currently support sorting by the following fields: name, display_name and created_at.
+
+
+
+Create a new Organization within your tenant. To learn more about Organization settings, behavior, and configuration options, review Create Your First Organization.
+
+
+**name:** `String` — The name of this organization.
+
+
+
+
+
+
+
+**displayName:** `Optional` — Friendly name of this organization.
+
+
+
+
+
+
+
+**branding:** `Optional`
+
+
+
+
+
+
+
+**metadata:** `Optional
+
+
+
+
+
+**enabledConnections:** `Optional>` — Connections that will be enabled for this organization. See POST enabled_connections endpoint for the object format. (Max of 10 connections allowed)
+
+
+
+**id:** `String` — ID of the organization to retrieve.
+
+
+
+
+
+
+
+
+
+
+
+client.organizations.delete(id)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Remove an Organization from your tenant. This action cannot be undone.
+
+Note: Members are automatically disassociated from an Organization when it is deleted. However, this action does not delete these users from your tenant.
+
+
+**identifiers:** `Optional` — An optional filter on the resource server identifier. Must be URL encoded and may be specified multiple times (max 10). e.g.../resource-servers?identifiers=id1&identifiers=id2
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+**name:** `Optional` — Friendly name for this resource server. Can not contain `<` or `>` characters.
+
+
+
+
+
+
+
+**identifier:** `String` — Unique identifier for the API used as the audience parameter on authorization calls. Can not be changed once set.
+
+
+
+
+
+
+
+**scopes:** `Optional>` — List of permissions (scopes) that this API uses.
+
+
+
+
+
+
+
+**signingAlg:** `Optional`
+
+
+
+
+
+
+
+**signingSecret:** `Optional` — Secret used to sign tokens when using symmetric algorithms (HS256).
+
+
+
+
+
+
+
+**allowOfflineAccess:** `Optional` — Whether refresh tokens can be issued for this API (true) or not (false).
+
+
+
+
+
+
+
+**tokenLifetime:** `Optional` — Expiration value (in seconds) for access tokens issued for this API from the token endpoint.
+
+
+
+
+
+
+
+**tokenDialect:** `Optional`
+
+
+
+
+
+
+
+**skipConsentForVerifiableFirstPartyClients:** `Optional` — Whether to skip user consent for applications flagged as first party (true) or not (false).
+
+
+
+
+
+
+
+**enforcePolicies:** `Optional` — Whether to enforce authorization policies (true) or to ignore them (false).
+
+
+
+**id:** `String` — ID or audience of the resource server to update.
+
+
+
+
+
+
+
+**name:** `Optional` — Friendly name for this resource server. Can not contain `<` or `>` characters.
+
+
+
+
+
+
+
+**scopes:** `Optional>` — List of permissions (scopes) that this API uses.
+
+
+
+
+
+
+
+**signingAlg:** `Optional`
+
+
+
+
+
+
+
+**signingSecret:** `Optional` — Secret used to sign tokens when using symmetric algorithms (HS256).
+
+
+
+
+
+
+
+**skipConsentForVerifiableFirstPartyClients:** `Optional` — Whether to skip user consent for applications flagged as first party (true) or not (false).
+
+
+
+
+
+
+
+**allowOfflineAccess:** `Optional` — Whether refresh tokens can be issued for this API (true) or not (false).
+
+
+
+
+
+
+
+**tokenLifetime:** `Optional` — Expiration value (in seconds) for access tokens issued for this API from the token endpoint.
+
+
+
+
+
+
+
+**tokenDialect:** `Optional`
+
+
+
+
+
+
+
+**enforcePolicies:** `Optional` — Whether authorization policies are enforced (true) or not enforced (false).
+
+
+
+Retrieve detailed list of user roles created in your tenant.
+
+Note: The returned list does not include standard roles available for tenant members, such as Admin or Support Access.
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**nameFilter:** `Optional` — Optional filter on name (case-insensitive).
+
+
+
+Create a user role for Role-Based Access Control.
+
+Note: New roles are not associated with any permissions by default. To assign existing permissions to your role, review Associate Permissions with a Role. To create new permissions, review Add API Permissions.
+
+
+Retrieve details about a specific user role specified by ID.
+
+
+
+
+
+#### 🔌 Usage
+
+
+
+
+
+
+
+```java
+client.roles().get("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+
+
+
+
+
+**id:** `String` — ID of the role to retrieve.
+
+
+
+
+
+
+
+
+
+
+
+client.roles.delete(id)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Delete a specific user role from your tenant. Once deleted, it is removed from any user who was previously assigned that role. This action cannot be undone.
+
+
+
+
+
+#### 🔌 Usage
+
+
+
+
+
+
+
+```java
+client.roles().delete("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+
+
+
+
+
+**id:** `String` — ID of the role to delete.
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**enabled:** `Optional` — Optional filter on whether a rule is enabled (true) or disabled (false).
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+Create a new rule.
+
+Note: Changing a rule's stage of execution from the default login_success can change the rule's function signature to have user omitted.
+
+
+**id:** `String` — ID of the rule to retrieve.
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+
+
+
+
+client.rules.delete(id)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Delete a rule.
+
+
+
+
+
+#### 🔌 Usage
+
+
+
+
+
+
+
+```java
+client.rules().delete("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+
+
+
+
+
+**id:** `String` — ID of the rule to delete.
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+**name:** `String` — The name of the self-service Profile.
+
+
+
+
+
+
+
+**description:** `Optional` — The description of the self-service Profile.
+
+
+
+
+
+
+
+**branding:** `Optional`
+
+
+
+
+
+
+
+**allowedStrategies:** `Optional>` — List of IdP strategies that will be shown to users during the Self-Service SSO flow. Possible values: [`oidc`, `samlp`, `waad`, `google-apps`, `adfs`, `okta`, `auth0-samlp`, `okta-samlp`, `keycloak-samlp`, `pingfederate`]
+
+
+
+
+
+
+
+**userAttributes:** `Optional>` — List of attributes to be mapped that will be shown to the user during the SS-SSO flow.
+
+
+
+
+
+
+
+**userAttributeProfileId:** `Optional` — ID of the user-attribute-profile to associate with this self-service profile.
+
+
+
+**id:** `String` — The id of the self-service profile to update
+
+
+
+
+
+
+
+**name:** `Optional` — The name of the self-service Profile.
+
+
+
+
+
+
+
+**description:** `Optional`
+
+
+
+
+
+
+
+**branding:** `Optional`
+
+
+
+
+
+
+
+**allowedStrategies:** `Optional>` — List of IdP strategies that will be shown to users during the Self-Service SSO flow. Possible values: [`oidc`, `samlp`, `waad`, `google-apps`, `adfs`, `okta`, `auth0-samlp`, `okta-samlp`, `keycloak-samlp`, `pingfederate`]
+
+
+
+
+
+
+
+**userAttributes:** `Optional>`
+
+
+
+
+
+
+
+**userAttributeProfileId:** `Optional` — ID of the user-attribute-profile to associate with this self-service profile.
+
+
+
+Retrieve the number of logins, signups and breached-password detections (subscription required) that occurred each day within a specified date range.
+
+
+Create an email verification ticket for a given user. An email verification ticket is a generated URL that the user can consume to verify their email address.
+
+
+**resultUrl:** `Optional` — URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using client_id or organization_id.
+
+
+
+
+
+
+
+**userId:** `String` — user_id of for whom the ticket should be created.
+
+
+
+
+
+
+
+**clientId:** `Optional` — ID of the client (application). If provided for tenants using the New Universal Login experience, the email template and UI displays application details, and the user is prompted to redirect to the application's default login route after the ticket is used. client_id is required to use the Password Reset Post Challenge trigger.
+
+
+
+
+
+
+
+**organizationId:** `Optional` — (Optional) Organization ID – the ID of the Organization. If provided, organization parameters will be made available to the email template and organization branding will be applied to the prompt. In addition, the redirect link in the prompt will include organization_id and organization_name query string parameters.
+
+
+
+
+
+
+
+**ttlSec:** `Optional` — Number of seconds for which the ticket is valid before expiration. If unspecified or set to 0, this value defaults to 432000 seconds (5 days).
+
+
+
+
+
+
+
+**includeEmailInRedirect:** `Optional` — Whether to include the email address as part of the returnUrl in the reset_email (true), or not (false).
+
+
+
+Create a password change ticket for a given user. A password change ticket is a generated URL that the user can consume to start a reset password flow.
+
+Note: This endpoint does not verify the given user’s identity. If you call this endpoint within your application, you must design your application to verify the user’s identity.
+
+
+**resultUrl:** `Optional` — URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using client_id or organization_id.
+
+
+
+
+
+
+
+**userId:** `Optional` — user_id of for whom the ticket should be created.
+
+
+
+
+
+
+
+**clientId:** `Optional` — ID of the client (application). If provided for tenants using the New Universal Login experience, the email template and UI displays application details, and the user is prompted to redirect to the application's default login route after the ticket is used. client_id is required to use the Password Reset Post Challenge trigger.
+
+
+
+
+
+
+
+**organizationId:** `Optional` — (Optional) Organization ID – the ID of the Organization. If provided, organization parameters will be made available to the email template and organization branding will be applied to the prompt. In addition, the redirect link in the prompt will include organization_id and organization_name query string parameters.
+
+
+
+
+
+
+
+**connectionId:** `Optional` — ID of the connection. If provided, allows the user to be specified using email instead of user_id. If you set this value, you must also send the email parameter. You cannot send user_id when specifying a connection_id.
+
+
+
+
+
+
+
+**email:** `Optional` — Email address of the user for whom the tickets should be created. Requires the connection_id parameter. Cannot be specified when using user_id.
+
+
+
+
+
+
+
+**ttlSec:** `Optional` — Number of seconds for which the ticket is valid before expiration. If unspecified or set to 0, this value defaults to 432000 seconds (5 days).
+
+
+
+
+
+
+
+**markEmailAsVerified:** `Optional` — Whether to set the email_verified attribute to true (true) or whether it should not be updated (false).
+
+
+
+
+
+
+
+**includeEmailInRedirect:** `Optional` — Whether to include the email address as part of the returnUrl in the reset_email (true), or not (false).
+
+
+
+Retrieve a list of all Token Exchange Profiles available in your tenant.
+
+By using this feature, you agree to the applicable Free Trial terms in Okta’s Master Subscription Agreement. It is your responsibility to securely validate the user’s subject_token. See User Guide for more details.
+
+This endpoint supports Checkpoint pagination. To search by checkpoint, use the following parameters:
+
+
from: Optional id from which to start selection.
+
take: The total amount of entries to retrieve when using the from parameter. Defaults to 50.
+
+
+Note: The first time you call this endpoint using checkpoint pagination, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no pages are remaining.
+
+
+Create a new Token Exchange Profile within your tenant.
+
+By using this feature, you agree to the applicable Free Trial terms in Okta’s Master Subscription Agreement. It is your responsibility to securely validate the user’s subject_token. See User Guide for more details.
+
+
+**name:** `String` — Friendly name of this profile.
+
+
+
+
+
+
+
+**subjectTokenType:** `String` — Subject token type for this profile. When receiving a token exchange request on the Authentication API, the corresponding token exchange profile with a matching subject_token_type will be executed. This must be a URI.
+
+
+
+
+
+
+
+**actionId:** `String` — The ID of the Custom Token Exchange action to execute for this profile, in order to validate the subject_token. The action must use the custom-token-exchange trigger.
+
+
+
+Retrieve details about a single Token Exchange Profile specified by ID.
+
+By using this feature, you agree to the applicable Free Trial terms in Okta’s Master Subscription Agreement. It is your responsibility to securely validate the user’s subject_token. See User Guide for more details.
+
+
+**id:** `String` — ID of the Token Exchange Profile to retrieve.
+
+
+
+
+
+
+
+
+
+
+
+client.tokenExchangeProfiles.delete(id)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Delete a Token Exchange Profile within your tenant.
+
+By using this feature, you agree to the applicable Free Trial terms in Okta's Master Subscription Agreement. It is your responsibility to securely validate the user's subject_token. See User Guide for more details.
+
+
+
+Update a Token Exchange Profile within your tenant.
+
+By using this feature, you agree to the applicable Free Trial terms in Okta's Master Subscription Agreement. It is your responsibility to securely validate the user's subject_token. See User Guide for more details.
+
+
+
+**id:** `String` — ID of the Token Exchange Profile to update.
+
+
+
+
+
+
+
+**name:** `Optional` — Friendly name of this profile.
+
+
+
+
+
+
+
+**subjectTokenType:** `Optional` — Subject token type for this profile. When receiving a token exchange request on the Authentication API, the corresponding token exchange profile with a matching subject_token_type will be executed. This must be a URI.
+
+
+
+**identifier:** `String` — Should be any of a username, phone number, or email.
+
+
+
+
+
+
+
+**considerBruteForceEnablement:** `Optional`
+
+
+ If true and Brute Force Protection is enabled and configured to block logins, will return a list of blocked IP addresses.
+ If true and Brute Force Protection is disabled, will return an empty list.
+
+
+
+
+**id:** `String` — user_id of the user blocks to retrieve.
+
+
+
+
+
+
+
+**considerBruteForceEnablement:** `Optional`
+
+
+ If true and Brute Force Protection is enabled and configured to block logins, will return a list of blocked IP addresses.
+ If true and Brute Force Protection is disabled, will return an empty list.
+
+
+
+
+Retrieve details of users. It is possible to:
+
+- Specify a search criteria for users
+- Sort the users to be returned
+- Select the fields to be returned
+- Specify the number of users to retrieve per page and the page index
+
+The q query parameter can be used to get users that match the specified criteria using query string syntax.
+
+Learn more about searching for users.
+
+Read about best practices when working with the API endpoints for retrieving users.
+
+Auth0 limits the number of users you can return. If you exceed this threshold, please redefine your search, use the export job, or the User Import / Export extension.
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**sort:** `Optional` — Field to sort by. Use field:order where order is 1 for ascending and -1 for descending. e.g. created_at:1
+
+
+
+
+
+
+
+**connection:** `Optional` — Connection filter. Only applies when using search_engine=v1. To filter by connection with search_engine=v2|v3, use q=identities.connection:"connection_name"
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+**searchEngine:** `Optional` — The version of the search engine
+
+
+
+
+
+
+
+**primaryOrder:** `Optional` — If true (default), results are returned in a deterministic order. If false, results may be returned in a non-deterministic order, which can enhance performance for complex queries targeting a small number of users. Set to false only when consistent ordering and pagination is not required.
+
+
+
+Create a new user for a given database or passwordless connection.
+
+Note: connection is required but other parameters such as email and password are dependent upon the type of connection.
+
+
+**phoneNumber:** `Optional` — The user's phone number (following the E.164 recommendation).
+
+
+
+
+
+
+
+**userMetadata:** `Optional
+
+
+
+
+
+**blocked:** `Optional` — Whether this user was blocked by an administrator (true) or not (false).
+
+
+
+
+
+
+
+**emailVerified:** `Optional` — Whether this email address is verified (true) or unverified (false). User will receive a verification email after creation if `email_verified` is false or not specified
+
+
+
+
+
+
+
+**phoneVerified:** `Optional` — Whether this phone number has been verified (true) or not (false).
+
+
+
+
+
+
+
+**appMetadata:** `Optional
+
+
+
+
+
+**givenName:** `Optional` — The user's given name(s).
+
+
+
+
+
+
+
+**familyName:** `Optional` — The user's family name(s).
+
+
+
+
+
+
+
+**name:** `Optional` — The user's full name.
+
+
+
+
+
+
+
+**nickname:** `Optional` — The user's nickname.
+
+
+
+
+
+
+
+**picture:** `Optional` — A URI pointing to the user's picture.
+
+
+
+
+
+
+
+**userId:** `Optional` — The external user's id provided by the identity provider.
+
+
+
+
+
+
+
+**connection:** `String` — Name of the connection this user should be created in.
+
+
+
+
+
+
+
+**password:** `Optional` — Initial password for this user. Only valid for auth0 connection strategy.
+
+
+
+
+
+
+
+**verifyEmail:** `Optional` — Whether the user will receive a verification email after creation (true) or no email (false). Overrides behavior of `email_verified` parameter.
+
+
+
+
+
+
+
+**username:** `Optional` — The user's username. Only valid if the connection requires a username.
+
+
+
+Find users by email. If Auth0 is the identity provider (idP), the email address associated with a user is saved in lower case, regardless of how you initially provided it.
+
+For example, if you register a user as JohnSmith@example.com, Auth0 saves the user's email as johnsmith@example.com.
+
+Therefore, when using this endpoint, make sure that you are searching for users via email addresses using the correct case.
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false). Defaults to true.
+
+
+
+
+
+
+
+**email:** `String` — Email address to search for (case-sensitive).
+
+
+
+**id:** `String` — ID of the user to retrieve.
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+
+
+
+
+client.users.delete(id)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Delete a user by user ID. This action cannot be undone. For Auth0 Dashboard instructions, see Delete Users.
+
+
+
+
+
+#### 🔌 Usage
+
+
+
+
+
+
+
+```java
+client.users().delete("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+
+
+
+
+
+**id:** `String` — ID of the user to delete.
+
+
+
+Update a user.
+
+These are the attributes that can be updated at the root level:
+
+
+
app_metadata
+
blocked
+
email
+
email_verified
+
family_name
+
given_name
+
name
+
nickname
+
password
+
phone_number
+
phone_verified
+
picture
+
username
+
user_metadata
+
verify_email
+
+
+Some considerations:
+
+
The properties of the new object will replace the old ones.
+
The metadata fields are an exception to this rule (user_metadata and app_metadata). These properties are merged instead of being replaced but be careful, the merge only occurs on the first level.
+
If you are updating email, email_verified, phone_number, phone_verified, username or password of a secondary identity, you need to specify the connection property too.
+
If you are updating email or phone_number you can specify, optionally, the client_id property.
+
Updating email_verified is not supported for enterprise and passwordless sms connections.
+
Updating the blocked to false does not affect the user's blocked state from an excessive amount of incorrectly provided credentials. Use the "Unblock a user" endpoint from the "User Blocks" API to change the user's state.
+
Supported attributes can be unset by supplying null as the value.
+
+
+
Updating a field (non-metadata property)
+To mark the email address of a user as verified, the body to send should be:
+
{ "email_verified": true }
+
+
Updating a user metadata root property
Let's assume that our test user has the following user_metadata:
+
{ "user_metadata" : { "profileCode": 1479 } }
+
+To add the field addresses the body to send should be:
+
If there's existing user metadata to which we want to add "home_address": "742 Evergreen Terrace" (using the addresses property) we should send the whole addresses object. Since this is a first-level object, the object will be merged in, but its own properties will not be. The body to send should be:
+
+
+**id:** `String` — ID of the user to update.
+
+
+
+
+
+
+
+**blocked:** `Optional` — Whether this user was blocked by an administrator (true) or not (false).
+
+
+
+
+
+
+
+**emailVerified:** `Optional` — Whether this email address is verified (true) or unverified (false). If set to false the user will not receive a verification email unless `verify_email` is set to true.
+
+
+
+
+
+
+
+**email:** `Optional` — Email address of this user.
+
+
+
+
+
+
+
+**phoneNumber:** `Optional` — The user's phone number (following the E.164 recommendation).
+
+
+
+
+
+
+
+**phoneVerified:** `Optional` — Whether this phone number has been verified (true) or not (false).
+
+
+
+
+
+
+
+**userMetadata:** `Optional
+
+
+
+
+
+**appMetadata:** `Optional
+
+
+
+
+
+**givenName:** `Optional` — Given name/first name/forename of this user.
+
+
+
+
+
+
+
+**familyName:** `Optional` — Family name/last name/surname of this user.
+
+
+
+
+
+
+
+**name:** `Optional` — Name of this user.
+
+
+
+
+
+
+
+**nickname:** `Optional` — Preferred nickname or alias of this user.
+
+
+
+
+
+
+
+**picture:** `Optional` — URL to picture, photo, or avatar of this user.
+
+
+
+
+
+
+
+**verifyEmail:** `Optional` — Whether this user will receive a verification email after creation (true) or no email (false). Overrides behavior of `email_verified` parameter.
+
+
+
+
+
+
+
+**verifyPhoneNumber:** `Optional` — Whether this user will receive a text after changing the phone number (true) or no text (false). Only valid when changing phone number for SMS connections.
+
+
+
+
+
+
+
+**password:** `Optional` — New password for this user. Only valid for database connections.
+
+
+
+
+
+
+
+**connection:** `Optional` — Name of the connection to target for this user update.
+
+
+
+
+
+
+
+**clientId:** `Optional` — Auth0 client ID. Only valid when updating email address.
+
+
+
+
+
+
+
+**username:** `Optional` — The user's username. Only valid if the connection requires a username.
+
+
+
+Remove an existing multi-factor authentication (MFA) recovery code and generate a new one. If a user cannot access the original device or account used for MFA enrollment, they can use a recovery code to authenticate.
+
+
+Retrieve a specific version of an action. An action version is created whenever an action is deployed. An action version is immutable, once created.
+
+
+Performs the equivalent of a roll-back of an action to an earlier, specified version. Creates a new, deployed action version that is identical to the specified version. If this action is currently bound to a trigger, the system will begin executing the newly-created version immediately.
+
+
+Retrieve information about a specific execution of a trigger. Relevant execution IDs will be included in tenant logs generated as part of that authentication flow. Executions will only be stored for 10 days after their creation.
+
+
+Rolls back an Actions Module's draft to a previously created version. This action copies the code, dependencies, and secrets from the specified version into the current draft.
+
+
+Creates a new immutable version of an Actions Module from the current draft version. This publishes the draft as a new version that can be referenced by actions, while maintaining the existing draft for continued development.
+
+
+Retrieve the actions that are bound to a trigger. Once an action is created and deployed, it must be attached (i.e. bound) to a trigger so that it will be executed as part of a flow. The list of actions returned reflects the order in which they will be executed during the appropriate flow.
+
+
+Update the actions that are bound (i.e. attached) to a trigger. Once an action is created and deployed, it must be attached (i.e. bound) to a trigger so that it will be executed as part of a flow. The order in which the actions are provided will determine the order in which they are executed.
+
+
+**triggerId:** `String` — An actions extensibility point.
+
+
+
+
+
+
+
+**bindings:** `Optional>` — The actions that will be bound to this trigger. The order in which they are included will be the order in which they are executed.
+
+
+
+**enabled:** `Optional` — Whether or not breached password detection is active.
+
+
+
+
+
+
+
+**shields:** `Optional>`
+
+Action to take when a breached password is detected during a login.
+ Possible values: block, user_notification, admin_notification.
+
+
+
+
+
+
+
+**adminNotificationFrequency:** `Optional>`
+
+When "admin_notification" is enabled, determines how often email notifications are sent.
+ Possible values: immediately, daily, weekly, monthly.
+
+
+
+Create a phone provider.
+The credentials object requires different properties depending on the phone provider (which is specified using the name property).
+
+
+Update a phone provider.
+The credentials object requires different properties depending on the phone provider (which is specified using the name property).
+
+
+Get the details of a client credential.
+
+Important: To enable credentials to be used for a client authentication method, set the client_authentication_methods property on the client. To enable credentials to be used for JWT-Secured Authorization requests set the signed_request_object property on the client.
+
+
+Create a client credential associated to your application. Credentials can be used to configure Private Key JWT and mTLS authentication methods, as well as for JWT-secured Authorization requests.
+
+
Public Key
Public Key credentials can be used to set up Private Key JWT client authentication and JWT-secured Authorization requests.
+
+Sample:
Certificate credentials can be used to set up mTLS client authentication. CA-signed certificates can be configured either with a signed certificate or with just the certificate Subject DN.
+
+CA-signed Certificate Sample (pem):
+
+**name:** `Optional` — Friendly name for a credential.
+
+
+
+
+
+
+
+**subjectDn:** `Optional` — Subject Distinguished Name. Mutually exclusive with `pem` property. Applies to `cert_subject_dn` credential type.
+
+
+
+
+
+
+
+**pem:** `Optional` — PEM-formatted public key (SPKI and PKCS1) or X509 certificate. Must be JSON escaped.
+
+
+
+
+
+
+
+**alg:** `Optional`
+
+
+
+
+
+
+
+**parseExpiryFromCert:** `Optional` — Parse expiry from x509 certificate. If true, attempts to parse the expiry date from the provided PEM. Applies to `public_key` credential type.
+
+
+
+
+
+
+
+**expiresAt:** `Optional` — The ISO 8601 formatted date representing the expiration of the credential. If not specified (not recommended), the credential never expires. Applies to `public_key` credential type.
+
+
+
+Get the details of a client credential.
+
+Important: To enable credentials to be used for a client authentication method, set the client_authentication_methods property on the client. To enable credentials to be used for JWT-Secured Authorization requests set the signed_request_object property on the client.
+
+
+Retrieve all connections that are enabled for the specified Application, using checkpoint pagination. A list of fields to include or exclude for each connection may also be specified.
+
+
+ This endpoint requires the read:connections scope and any one of read:clients or read:client_summary.
+
+
+ Note: The first time you call this endpoint, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no further results are remaining.
+
+
+**id:** `String` — ID of the client for which to retrieve enabled connections.
+
+
+
+
+
+
+
+**strategy:** `Optional` — Provide strategies to only retrieve connections with such strategies
+
+
+
+
+
+
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**fields:** `Optional` — A comma separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields
+
+
+
+
+
+
+
+**includeFields:** `Optional` — true if the fields specified are to be included in the result, false otherwise (defaults to true)
+
+
+
+Retrieve all clients that have the specified connection enabled.
+
+Note: The first time you call this endpoint, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no further results are remaining.
+
+
+Provision initial connection keys for Okta or OIDC connection strategies. This endpoint allows you to create keys before configuring the connection to use Private Key JWT authentication, enabling zero-downtime transitions.
+
+
+Deletes a specified connection user by its email (you cannot delete all users from specific connection). Currently, only Database Connections are supported.
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (dependent upon include_fields) from the result. Leave empty to retrieve `name` and `enabled`. Additional fields available include `credentials`, `default_from_address`, and `settings`.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+Create an email provider. The credentials object
+requires different properties depending on the email provider (which is specified using the name property):
+
+
mandrill requires api_key
+
sendgrid requires api_key
+
+ sparkpost requires api_key. Optionally, set region to eu to use
+ the SparkPost service hosted in Western Europe; set to null to use the SparkPost service hosted in
+ North America. eu or null are the only valid values for region.
+
+
+ mailgun requires api_key and domain. Optionally, set region to
+ eu to use the Mailgun service hosted in Europe; set to null otherwise. eu or
+ null are the only valid values for region.
+
+
ses requires accessKeyId, secretAccessKey, and region
+
+ smtp requires smtp_host, smtp_port, smtp_user, and
+ smtp_pass
+
+
+Depending on the type of provider it is possible to specify settings object with different configuration
+options, which will be used when sending an email:
+
+
+ smtp provider, settings may contain headers object.
+
+
+ When using AWS SES SMTP host, you may provide a name of configuration set in
+ X-SES-Configuration-Set header. Value must be a string.
+
+
+ When using Sparkpost host, you may provide value for
+ X-MSYS_API header. Value must be an object.
+
+
+
+
+ for ses provider, settings may contain message object, where you can provide
+ a name of configuration set in configuration_set_name property. Value must be a string.
+
+
+Update an email provider. The credentials object
+requires different properties depending on the email provider (which is specified using the name property):
+
+
mandrill requires api_key
+
sendgrid requires api_key
+
+ sparkpost requires api_key. Optionally, set region to eu to use
+ the SparkPost service hosted in Western Europe; set to null to use the SparkPost service hosted in
+ North America. eu or null are the only valid values for region.
+
+
+ mailgun requires api_key and domain. Optionally, set region to
+ eu to use the Mailgun service hosted in Europe; set to null otherwise. eu or
+ null are the only valid values for region.
+
+
ses requires accessKeyId, secretAccessKey, and region
+
+ smtp requires smtp_host, smtp_port, smtp_user, and
+ smtp_pass
+
+
+Depending on the type of provider it is possible to specify settings object with different configuration
+options, which will be used when sending an email:
+
+
+ smtp provider, settings may contain headers object.
+
+
+ When using AWS SES SMTP host, you may provide a name of configuration set in
+ X-SES-Configuration-Set header. Value must be a string.
+
+
+ When using Sparkpost host, you may provide value for
+ X-MSYS_API header. Value must be an object.
+
+
+ for ses provider, settings may contain message object, where you can provide
+ a name of configuration set in configuration_set_name property. Value must be a string.
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+**id:** `String` — Unique identifier for the group (service-generated).
+
+
+
+
+
+
+
+**fields:** `Optional` — A comma separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+Create a multi-factor authentication (MFA) enrollment ticket, and optionally send an email with the created ticket, to a given user.
+Create a multi-factor authentication (MFA) enrollment ticket, and optionally send an email with the created ticket to a given user. Enrollment tickets can specify which factor users must enroll with or allow existing MFA users to enroll in additional factors.
+
+Note: Users cannot enroll in Email as a factor through custom enrollment tickets.
+
+
+**userId:** `String` — user_id for the enrollment ticket
+
+
+
+
+
+
+
+**email:** `Optional` — alternate email to which the enrollment email will be sent. Optional - by default, the email will be sent to the user's default address
+
+
+
+
+
+
+
+**sendMail:** `Optional` — Send an email to the user to start the enrollment
+
+
+
+
+
+
+
+**emailLocale:** `Optional` — Optional. Specify the locale of the enrollment email. Used with send_email.
+
+
+
+
+
+
+
+**factor:** `Optional`
+
+
+
+
+
+
+
+**allowMultipleEnrollments:** `Optional` — Optional. Allows a user who has previously enrolled in MFA to enroll with additional factors. Note: Parameter can only be used with Universal Login; it cannot be used with Classic Login or custom MFA pages.
+
+
all-applications policy prompts with MFA for all logins.
+
confidence-score policy prompts with MFA only for low confidence logins.
+
+
+Note: The confidence-score policy is part of the Adaptive MFA feature. Adaptive MFA requires an add-on for the Enterprise plan; review Auth0 Pricing for more details.
+
all-applications policy prompts with MFA for all logins.
+
confidence-score policy prompts with MFA only for low confidence logins.
+
+
+Note: The confidence-score policy is part of the Adaptive MFA feature. Adaptive MFA requires an add-on for the Enterprise plan; review Auth0 Pricing for more details.
+
+
+Retrieve configuration details for an AWS SNS push notification provider that has been enabled for MFA. To learn more, review Configure Push Notifications for MFA.
+
+
+Retrieve the Twilio SMS provider configuration (subscription required).
+
+ A new endpoint is available to retrieve the Twilio configuration related to phone factors (phone Twilio configuration). It has the same payload as this one. Please use it instead.
+
+
+This endpoint has been deprecated. To complete this action, use the Update Twilio phone configuration endpoint.
+
+ Previous functionality: Update the Twilio SMS provider configuration.
+
+
+This endpoint has been deprecated. To complete this action, use the Retrieve phone configuration endpoint instead.
+
+ Previous functionality: Retrieve details for the multi-factor authentication SMS provider configured for your tenant.
+
+
+This endpoint has been deprecated. To complete this action, use the Update phone configuration endpoint instead.
+
+ Previous functionality: Update the multi-factor authentication SMS provider configuration in your tenant.
+
+
+This endpoint has been deprecated. To complete this action, use the Retrieve enrollment and verification phone templates endpoint instead.
+
+ Previous function: Retrieve details of SMS enrollment and verification templates configured for your tenant.
+
+
+This endpoint has been deprecated. To complete this action, use the Update enrollment and verification phone templates endpoint instead.
+
+ Previous functionality: Customize the messages sent to complete SMS enrollment and verification.
+
+
+**id:** `String` — ID of the hook to retrieve secrets from.
+
+
+
+
+
+
+
+
+
+
+
+client.hooks.secrets.create(id, request)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Add one or more secrets to an existing hook. Accepts an object of key-value pairs, where the key is the name of the secret. A hook can have a maximum of 20 secrets.
+
+
+**connectionId:** `Optional` — connection_id of the connection from which users will be exported.
+
+
+
+
+
+
+
+**format:** `Optional`
+
+
+
+
+
+
+
+**limit:** `Optional` — Limit the number of records.
+
+
+
+
+
+
+
+**fields:** `Optional>` — List of fields to be included in the CSV. Defaults to a predefined set of fields.
+
+
+
+
+
+
+
+
+
+
+
+## Jobs UsersImports
+client.jobs.usersImports.create(request) -> CreateImportUsersResponseContent
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Import users from a formatted file into a connection via a long-running job. When importing users, with or without upsert, the `email_verified` is set to `false` when the email address is added or updated. Users must verify their email address. To avoid this behavior, set `email_verified` to `true` in the imported data.
+
+
+
+## Jobs VerificationEmail
+client.jobs.verificationEmail.create(request) -> CreateVerificationEmailResponseContent
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Send an email to the specified user that asks them to click a link to verify their email address.
+
+Note: You must have the `Status` toggle enabled for the verification email template for the email to be sent.
+
+
+**userId:** `String` — user_id of the user to send the verification email to.
+
+
+
+
+
+
+
+**clientId:** `Optional` — client_id of the client (application). If no value provided, the global Client ID will be used.
+
+
+
+
+
+
+
+**identity:** `Optional`
+
+
+
+
+
+
+
+**organizationId:** `Optional` — (Optional) Organization ID – the ID of the Organization. If provided, organization parameters will be made available to the email template and organization branding will be applied to the prompt. In addition, the redirect link in the prompt will include organization_id and organization_name query string parameters.
+
+
+
+
+
+
+
+
+
+
+
+## Jobs Errors
+client.jobs.errors.get(id) -> ErrorsGetResponse
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Default value is 50, maximum value is 100.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+**audience:** `Optional` — Optional filter on audience of the client grant.
+
+
+
+
+
+
+
+**clientId:** `Optional` — Optional filter on client_id of the client grant.
+
+
+
+
+
+
+
+**grantIds:** `Optional` — Optional filter on the ID of the client grant. Must be URL encoded and may be specified multiple times (max 10). e.g.../client-grants?grant_ids=id1&grant_ids=id2
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+Update the verification status and/or use_for_organization_discovery for an organization discovery domain. The status field must be either pending or verified. The use_for_organization_discovery field can be true or false (default: true).
+
+
+Retrieve details about a specific connection currently enabled for an Organization. Information returned includes details such as connection ID, name, strategy, and whether the connection automatically grants membership upon login.
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+Enable a specific connection for a given Organization. To enable a connection, it must already exist within your tenant; connections cannot be created through this action.
+
+Connections represent the relationship between Auth0 and a source of users. Available types of connections include database, enterprise, and social.
+
+
+**connectionId:** `String` — Single connection ID to add to the organization.
+
+
+
+
+
+
+
+**assignMembershipOnLogin:** `Optional` — When true, all users that log in with this connection will be automatically granted membership in the organization. When false, users must be granted membership in the organization before logging in with this connection.
+
+
+
+
+
+
+
+**isSignupEnabled:** `Optional` — Determines whether organization signup should be enabled for this organization connection. Only applicable for database connections. Default: false.
+
+
+
+
+
+
+
+**showAsButton:** `Optional` — Determines whether a connection should be displayed on this organization’s login prompt. Only applicable for enterprise connections. Default: true.
+
+
+
+Retrieve details about a specific connection currently enabled for an Organization. Information returned includes details such as connection ID, name, strategy, and whether the connection automatically grants membership upon login.
+
+
+Disable a specific connection for an Organization. Once disabled, Organization members can no longer use that connection to authenticate.
+
+Note: This action does not remove the connection from your tenant.
+
+
+**assignMembershipOnLogin:** `Optional` — When true, all users that log in with this connection will be automatically granted membership in the organization. When false, users must be granted membership in the organization before logging in with this connection.
+
+
+
+
+
+
+
+**isSignupEnabled:** `Optional` — Determines whether organization signup should be enabled for this organization connection. Only applicable for database connections. Default: false.
+
+
+
+
+
+
+
+**showAsButton:** `Optional` — Determines whether a connection should be displayed on this organization’s login prompt. Only applicable for enterprise connections. Default: true.
+
+
+
+Retrieve a detailed list of invitations sent to users for a specific Organization. The list includes details such as inviter and invitee information, invitation URLs, and dates of creation and expiration. To learn more about Organization invitations, review Invite Organization Members.
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — When true, return results inside an object that also contains the start and limit. When false (default), a direct array of results is returned. We do not yet support returning the total invitations count.
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false). Defaults to true.
+
+
+
+
+
+
+
+**sort:** `Optional` — Field to sort by. Use field:order where order is 1 for ascending and -1 for descending Defaults to created_at:-1.
+
+
+
+Create a user invitation for a specific Organization. Upon creation, the listed user receives an email inviting them to join the Organization. To learn more about Organization invitations, review Invite Organization Members.
+
+
+**clientId:** `String` — Auth0 client ID. Used to resolve the application's login initiation endpoint.
+
+
+
+
+
+
+
+**connectionId:** `Optional` — The id of the connection to force invitee to authenticate with.
+
+
+
+
+
+
+
+**appMetadata:** `Optional
+
+
+
+
+
+**userMetadata:** `Optional
+
+
+
+
+
+**ttlSec:** `Optional` — Number of seconds for which the invitation is valid before expiration. If unspecified or set to 0, this value defaults to 604800 seconds (7 days). Max value: 2592000 seconds (30 days).
+
+
+
+
+
+
+
+**roles:** `Optional>` — List of roles IDs to associated with the user.
+
+
+
+
+
+
+
+**sendInvitationEmail:** `Optional` — Whether the user will receive an invitation email (true) or no email (false), true by default
+
+
+
+**invitationId:** `String` — The id of the user invitation.
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false). Defaults to true.
+
+
+
+**invitationId:** `String` — The id of the user invitation.
+
+
+
+
+
+
+
+
+
+
+
+## Organizations Members
+client.organizations.members.list(id) -> SyncPagingIterable<OrganizationMember>
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+List organization members.
+This endpoint is subject to eventual consistency. New users may not be immediately included in the response and deleted users may not be immediately removed from it.
+
+
+
+ Use the fields parameter to optionally define the specific member details retrieved. If fields is left blank, all fields (except roles) are returned.
+
+
+ Member roles are not sent by default. Use fields=roles to retrieve the roles assigned to each listed member. To use this parameter, you must include the read:organization_member_roles scope in the token.
+
+
+
+This endpoint supports two types of pagination:
+
+- Offset pagination
+- Checkpoint pagination
+
+Checkpoint pagination must be used if you need to retrieve more than 1000 organization members.
+
+
Checkpoint Pagination
+
+To search by checkpoint, use the following parameters: - from: Optional id from which to start selection. - take: The total amount of entries to retrieve when using the from parameter. Defaults to 50. Note: The first time you call this endpoint using Checkpoint Pagination, you should omit the from parameter. If there are more results, a next value will be included in the response. You can use this for subsequent API calls. When next is no longer included in the response, this indicates there are no more pages remaining.
+
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+Set one or more existing users as members of a specific Organization.
+
+To add a user to an Organization through this action, the user must already exist in your tenant. If a user does not yet exist, you can invite them to create an account, manually create them through the Auth0 Dashboard, or use the Management API.
+
+
+Retrieve detailed list of roles assigned to a given user within the context of a specific Organization.
+
+Users can be members of multiple Organizations with unique roles assigned for each membership. This action only returns the roles associated with the specified Organization; any roles assigned to the user within other Organizations are not included.
+
+
+**userId:** `String` — ID of the user to associate roles with.
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+Assign one or more roles to a user to determine their access for a specific Organization.
+
+Users can be members of multiple Organizations with unique roles assigned for each membership. This action assigns roles to a user only for the specified Organization. Roles cannot be assigned to a user across multiple Organizations in the same call.
+
+
+Remove one or more Organization-specific roles from a given user.
+
+Users can be members of multiple Organizations with unique roles assigned for each membership. This action removes roles from a user in relation to the specified Organization. Roles assigned to the user within a different Organization cannot be managed in the same call.
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (default: true) or excluded (false).
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Maximum value is 100, default value is 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total configuration count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+**prompt:** `Optional` — Name of the prompt to filter by
+
+
+
+
+
+
+
+**screen:** `Optional` — Name of the screen to filter by
+
+
+
+
+
+
+
+**renderingMode:** `Optional` — Rendering mode to filter by
+
+
+
+**id:** `String` — ID of the role to list granted permissions.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+
+
+
+
+client.roles.permissions.add(id, request)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Add one or more permissions to a specified user role.
+
+
+Retrieve list of users associated with a specific role. For Dashboard instructions, review View Users Assigned to Roles.
+
+This endpoint supports two types of pagination:
+
+
Offset pagination
+
Checkpoint pagination
+
+
+Checkpoint pagination must be used if you need to retrieve more than 1000 organization members.
+
+
Checkpoint Pagination
+
+To search by checkpoint, use the following parameters:
+
+
from: Optional id from which to start selection.
+
take: The total amount of entries to retrieve when using the from parameter. Defaults to 50.
+
+
+Note: The first time you call this endpoint using checkpoint pagination, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no pages are remaining.
+
+
+**id:** `String` — ID of the role to retrieve a list of users associated with.
+
+
+
+
+
+
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+
+
+
+
+client.roles.users.assign(id, request)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Assign one or more users to an existing user role. To learn more, review Role-Based Access Control.
+
+Note: New roles cannot be created through this action.
+
+
+**id:** `String` — The id of the self-service profile to retrieve
+
+
+
+
+
+
+
+**connectionId:** `Optional` — If provided, this will allow editing of the provided connection during the SSO Flow
+
+
+
+
+
+
+
+**connectionConfig:** `Optional`
+
+
+
+
+
+
+
+**enabledClients:** `Optional>` — List of client_ids that the connection will be enabled for.
+
+
+
+
+
+
+
+**enabledOrganizations:** `Optional>` — List of organizations that the connection will be enabled for.
+
+
+
+
+
+
+
+**ttlSec:** `Optional` — Number of seconds for which the ticket is valid before expiration. If unspecified or set to 0, this value defaults to 432000 seconds (5 days).
+
+
+
+
+
+
+
+**domainAliasesConfig:** `Optional`
+
+
+
+
+
+
+
+**provisioningConfig:** `Optional`
+
+
+
+
+
+
+
+**useForOrganizationDiscovery:** `Optional` — Indicates whether a verified domain should be used for organization discovery during authentication.
+
+
+
+Revokes an SSO access ticket and invalidates associated sessions. The ticket will no longer be accepted to initiate a Self-Service SSO session. If any users have already started a session through this ticket, their session will be terminated. Clients should expect a `202 Accepted` response upon successful processing, indicating that the request has been acknowledged and that the revocation is underway but may not be fully completed at the time of response. If the specified ticket does not exist, a `202 Accepted` response is also returned, signaling that no further action is required.
+Clients should treat these `202` responses as an acknowledgment that the request has been accepted and is in progress, even if the ticket was not found.
+
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+**defaultAudience:** `Optional` — Default audience for API Authorization.
+
+
+
+
+
+
+
+**defaultDirectory:** `Optional` — Name of connection used for password grants at the `/token` endpoint. The following connection types are supported: LDAP, AD, Database Connections, Passwordless, Windows Azure Active Directory, ADFS.
+
+
+
+
+
+
+
+**errorPage:** `Optional`
+
+
+
+
+
+
+
+**defaultTokenQuota:** `Optional`
+
+
+
+
+
+
+
+**flags:** `Optional`
+
+
+
+
+
+
+
+**friendlyName:** `Optional` — Friendly name for this tenant.
+
+
+
+
+
+
+
+**pictureUrl:** `Optional` — URL of logo to be shown for this tenant (recommended size: 150x150)
+
+
+
+
+
+
+
+**supportEmail:** `Optional` — End-user support email.
+
+
+
+
+
+
+
+**supportUrl:** `Optional` — End-user support url.
+
+
+
+
+
+
+
+**allowedLogoutUrls:** `Optional>` — URLs that are valid to redirect to after logout from Auth0.
+
+
+
+
+
+
+
+**sessionLifetime:** `Optional` — Number of hours a session will stay valid.
+
+
+
+
+
+
+
+**idleSessionLifetime:** `Optional` — Number of hours for which a session can be inactive before the user must log in again.
+
+
+
+
+
+
+
+**ephemeralSessionLifetime:** `Optional` — Number of hours an ephemeral (non-persistent) session will stay valid.
+
+
+
+
+
+
+
+**idleEphemeralSessionLifetime:** `Optional` — Number of hours for which an ephemeral (non-persistent) session can be inactive before the user must log in again.
+
+
+
+
+
+
+
+**sandboxVersion:** `Optional` — Selected sandbox version for the extensibility environment
+
+
+
+
+
+
+
+**legacySandboxVersion:** `Optional` — Selected legacy sandbox version for the extensibility environment
+
+
+
+
+
+
+
+**defaultRedirectionUri:** `Optional` — The default absolute redirection uri, must be https
+
+
+
+
+
+
+
+**enabledLocales:** `Optional>` — Supported locales for the user interface
+
+
+
+
+
+
+
+**sessionCookie:** `Optional`
+
+
+
+
+
+
+
+**sessions:** `Optional`
+
+
+
+
+
+
+
+**oidcLogout:** `Optional`
+
+
+
+
+
+
+
+**customizeMfaInPostloginAction:** `Optional` — Whether to enable flexible factors for MFA in the PostLogin action
+
+
+
+
+
+
+
+**allowOrganizationNameInAuthenticationApi:** `Optional` — Whether to accept an organization name instead of an ID on auth endpoints
+
+
+
+**pushedAuthorizationRequestsSupported:** `Optional` — Enables the use of Pushed Authorization Requests
+
+
+
+
+
+
+
+**authorizationResponseIssParameterSupported:** `Optional` — Supports iss parameter in authorization responses
+
+
+
+
+
+
+
+**skipNonVerifiableCallbackUriConfirmationPrompt:** `Optional`
+
+Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`).
+If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps.
+See https://auth0.com/docs/secure/security-guidance/measures-against-app-impersonation for more information.
+
+
+
+
+
+
+
+**resourceParameterProfile:** `Optional`
+
+
+
+
+
+
+
+**enableAiGuide:** `Optional` — Whether Auth0 Guide (AI-powered assistance) is enabled for this tenant.
+
+
+
+
+
+
+
+**phoneConsolidatedExperience:** `Optional` — Whether Phone Consolidated Experience is enabled for this tenant.
+
+
+
+**id:** `String` — The ID of the user in question.
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0. Default is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Default is 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+Create an authentication method. Authentication methods created via this endpoint will be auto confirmed and should already have verification completed.
+
+
+**phoneNumber:** `Optional` — Applies to phone authentication methods only. The destination phone number used to send verification codes via text and voice.
+
+
+
+
+
+
+
+**email:** `Optional` — Applies to email authentication methods only. The email address used to send verification messages.
+
+
+
+Replace the specified user authentication methods with supplied values.
+
+ Note: Authentication methods supplied through this action do not iterate on existing methods. Instead, any methods passed will overwrite the user’s existing settings.
+
+
+Remove all authenticators registered to a given user ID, such as OTP, email, phone, and push-notification. This action cannot be undone. For more information, review Manage Authentication Methods with Management API.
+
+
+**id:** `String` — ID of the user to list groups for.
+
+
+
+
+
+
+
+**fields:** `Optional` — A comma separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields
+
+
+
+
+
+
+
+**includeFields:** `Optional` — Whether specified fields are to be included (true) or excluded (false).
+
+
+
+
+
+
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+Link two user accounts together forming a primary and secondary relationship. On successful linking, the endpoint returns the new array of the primary account identities.
+
+Note: There are two ways of invoking the endpoint:
+
+
+
With the authenticated primary account's JWT in the Authorization header, which has the update:current_user_identities scope:
+
+ In this case you need to send provider and user_id in the body. Optionally you can also send the connection_id param which is suitable for identifying a particular database connection for the 'auth0' provider.
+
+
+**id:** `String` — ID of the primary user account to link a second user account to.
+
+
+
+
+
+
+
+**provider:** `Optional` — Identity provider of the secondary user account being linked.
+
+
+
+
+
+
+
+**connectionId:** `Optional` — connection_id of the secondary user account being linked when more than one `auth0` database provider exists.
+
+
+
+
+
+
+
+**userId:** `Optional`
+
+
+
+
+
+
+
+**linkWith:** `Optional` — JWT for the secondary account being linked. If sending this parameter, `provider`, `user_id`, and `connection_id` must not be sent.
+
+
+
+Unlink a specific secondary account from a target user. This action requires the ID of both the target user and the secondary account.
+
+Unlinking the secondary account removes it from the identities array of the target user and creates a new standalone profile for the secondary account. To learn more, review Unlink User Accounts.
+
+
+**id:** `String` — ID of the primary user account.
+
+
+
+
+
+
+
+**provider:** `UserIdentityProviderEnum` — Identity provider name of the secondary linked account (e.g. `google-oauth2`).
+
+
+
+
+
+
+
+**userId:** `String` — ID of the secondary linked account (e.g. `123456789081523216417` part after the `|` in `google-oauth2|123456789081523216417`).
+
+
+
+Retrieve log events for a specific user.
+
+Note: For more information on all possible event types, their respective acronyms and descriptions, see Log Event Type Codes.
+
+For more information on the list of fields that can be used in `sort`, see Searchable Fields.
+
+Auth0 limits the number of logs you can return by search criteria to 100 logs per request. Furthermore, you may only paginate through up to 1,000 search results. If you exceed this threshold, please redefine your search.
+
+
+**id:** `String` — ID of the user of the logs to retrieve
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Paging is disabled if parameter not sent.
+
+
+
+
+
+
+
+**sort:** `Optional` — Field to sort by. Use `fieldname:1` for ascending order and `fieldname:-1` for descending.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+Retrieve list of the specified user's current Organization memberships. User must be specified by user ID. For more information, review Auth0 Organizations.
+
+
+**id:** `String` — ID of the user to retrieve the organizations for.
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+**id:** `String` — ID of the user to retrieve the permissions for.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page.
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+Retrieve detailed list of all user roles currently assigned to a user.
+
+Note: This action retrieves all roles assigned to a user in the context of your whole tenant. To retrieve Organization-specific roles, use the following endpoint: Get user roles assigned to an Organization member.
+
+
+**id:** `String` — ID of the user to list roles for.
+
+
+
+
+
+
+
+**perPage:** `Optional` — Number of results per page.
+
+
+
+
+
+
+
+**page:** `Optional` — Page index of the results to return. First page is 0.
+
+
+
+
+
+
+
+**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+
+
+
+
+
+
+
+
+
+
+
+client.users.roles.assign(id, request)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Assign one or more existing user roles to a user. For more information, review Role-Based Access Control.
+
+Note: New roles cannot be created through this action. Additionally, this action is used to assign roles to a user in the context of your whole tenant. To assign roles in the context of a specific Organization, use the following endpoint: Assign user roles to an Organization member.
+
+
+**id:** `String` — ID of the user to associate roles with.
+
+
+
+
+
+
+
+**roles:** `List` — List of roles IDs to associated with the user.
+
+
+
+
+
+
+
+
+
+
+
+client.users.roles.delete(id, request)
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Remove one or more specified user roles assigned to a user.
+
+Note: This action removes a role from a user in the context of your whole tenant. If you want to unassign a role from a user in the context of a specific Organization, use the following endpoint: Delete user roles from an Organization member.
+
+
+**id:** `String` — ID of the template to retrieve.
+
+
+
+
+
+
+
+**name:** `Optional`
+
+
+
+
+
+
+
+**type:** `Optional`
+
+
+
+
+
+
+
+**dialect:** `Optional`
+
+
+
+
+
+
+
+**presentation:** `Optional`
+
+
+
+
+
+
+
+**wellKnownTrustedIssuers:** `Optional`
+
+
+
+
+
+
+
+**version:** `Optional`
+
+
+
+
+
+
+
+
+
+
diff --git a/sample-app/build.gradle b/sample-app/build.gradle
new file mode 100644
index 000000000..4ee8f227b
--- /dev/null
+++ b/sample-app/build.gradle
@@ -0,0 +1,19 @@
+plugins {
+ id 'java-library'
+}
+
+repositories {
+ mavenCentral()
+ maven {
+ url 'https://s01.oss.sonatype.org/content/repositories/releases/'
+ }
+}
+
+dependencies {
+ implementation rootProject
+}
+
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
diff --git a/sample-app/src/main/java/sample/App.java b/sample-app/src/main/java/sample/App.java
new file mode 100644
index 000000000..a2948490d
--- /dev/null
+++ b/sample-app/src/main/java/sample/App.java
@@ -0,0 +1,10 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+
+package sample;
+
+public final class App {
+
+}
+
diff --git a/settings.gradle b/settings.gradle
index 6474ca32b..ef07c3f10 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1,9 @@
-rootProject.name = 'auth0'
\ No newline at end of file
+pluginManagement {
+ repositories {
+ gradlePluginPortal()
+ }
+}
+
+include 'sample-app'
+
+rootProject.name = 'auth0'
diff --git a/src/main/java/com/auth0/client/LoggingOptions.java b/src/main/java/com/auth0/client/LoggingOptions.java
new file mode 100644
index 000000000..c0ef54b71
--- /dev/null
+++ b/src/main/java/com/auth0/client/LoggingOptions.java
@@ -0,0 +1,75 @@
+package com.auth0.client;
+
+import com.auth0.utils.Asserts;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * Used to configure the HTTP Logging options.
+ */
+public class LoggingOptions {
+
+ public enum LogLevel {
+
+ /**
+ * No logging.
+ */
+ NONE,
+
+ /**
+ * Logs request and response lines.
+ */
+ BASIC,
+
+ /**
+ * Logs request and response lines, along with their respective headers. Note that headers may contain
+ * sensitive information; see {@linkplain #headersToRedact}
+ */
+ HEADERS,
+
+ /**
+ * Logs request and response lines, along with their respective headers and bodies. Note that headers and bodies
+ * may contain sensitive information; see {@linkplain #headersToRedact} for header redaction, but that only
+ * applies to headers. This should only be used in controlled or non-production environments.
+ */
+ BODY
+ }
+
+ private LogLevel logLevel;
+ private Set headersToRedact = Collections.emptySet();
+
+ /**
+ * Create a new instance using the specified {@linkplain LogLevel}
+ * @param logLevel the log level to set. Must not be null.
+ */
+ public LoggingOptions(LogLevel logLevel) {
+ Asserts.assertNotNull(logLevel, "logLevel");
+ this.logLevel = logLevel;
+ }
+
+ /**
+ * @return the log level of this instance.
+ */
+ public LogLevel getLogLevel() {
+ return this.logLevel;
+ }
+
+ /**
+ * @return the headers that should be redacted from the output log.
+ */
+ public Set getHeadersToRedact() {
+ return headersToRedact;
+ }
+
+ /**
+ * Sets the headers to redact from the log. When using {@code HEADERS} or {@code BODY} logging levels, there is the
+ * potential of leaking sensitive information such as "Authorization" or "Cookie" headers. Note that this does not
+ * redact any of the body contents from being logged, so care must always be taken with {@code HEADERS} or {@code BODY}
+ * log levels.
+ *
+ * @param headersToRedact the Set of headers to redact.
+ */
+ public void setHeadersToRedact(Set headersToRedact) {
+ this.headersToRedact = headersToRedact;
+ }
+}
diff --git a/src/main/java/com/auth0/client/ProxyOptions.java b/src/main/java/com/auth0/client/ProxyOptions.java
new file mode 100644
index 000000000..7a78f7aaa
--- /dev/null
+++ b/src/main/java/com/auth0/client/ProxyOptions.java
@@ -0,0 +1,55 @@
+package com.auth0.client;
+
+import com.auth0.utils.Asserts;
+import java.net.Proxy;
+import okhttp3.Credentials;
+
+/**
+ * Used to configure Java Proxy-related configurations.
+ */
+public class ProxyOptions {
+
+ private final Proxy proxy;
+ private String basicAuth;
+
+ /**
+ * Builds a new instance using the given Proxy.
+ * The Proxy will not have authentication unless {@link #setBasicAuthentication(String, char[])} is set.
+ *
+ * @param proxy the Proxy to use.
+ */
+ public ProxyOptions(Proxy proxy) {
+ Asserts.assertNotNull(proxy, "proxy");
+ this.proxy = proxy;
+ }
+
+ /**
+ * Setter that builds the authentication value to use for this Proxy.
+ *
+ * @param username the username to use.
+ * @param password the password to use.
+ */
+ public void setBasicAuthentication(String username, char[] password) {
+ Asserts.assertNotNull(proxy, "username");
+ Asserts.assertNotNull(proxy, "password");
+ this.basicAuth = Credentials.basic(username, new String(password));
+ }
+
+ /**
+ * Getter of the Proxy instance to set
+ *
+ * @return the Proxy instance to set
+ */
+ public Proxy getProxy() {
+ return proxy;
+ }
+
+ /**
+ * Getter of the authentication value to use for this Proxy.
+ *
+ * @return the authentication value to use for this Proxy, or null if unset.
+ */
+ public String getBasicAuthentication() {
+ return basicAuth;
+ }
+}
diff --git a/src/main/java/com/auth0/client/auth/AuthAPI.java b/src/main/java/com/auth0/client/auth/AuthAPI.java
index 0f6c5df8f..7072aed26 100644
--- a/src/main/java/com/auth0/client/auth/AuthAPI.java
+++ b/src/main/java/com/auth0/client/auth/AuthAPI.java
@@ -1,17 +1,43 @@
package com.auth0.client.auth;
-import com.auth0.json.auth.UserInfo;
+import static com.auth0.json.ObjectMapperProvider.getMapper;
+
+import com.auth0.json.auth.*;
import com.auth0.net.*;
+import com.auth0.net.client.Auth0HttpClient;
+import com.auth0.net.client.DefaultHttpClient;
+import com.auth0.net.client.HttpMethod;
import com.auth0.utils.Asserts;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
import okhttp3.HttpUrl;
-import okhttp3.OkHttpClient;
-import okhttp3.logging.HttpLoggingInterceptor;
-import okhttp3.logging.HttpLoggingInterceptor.Level;
+import org.jetbrains.annotations.TestOnly;
/**
- * Class that provides an implementation of some of the Authentication and Authorization API methods defined in https://auth0.com/docs/api/authentication.
- * To begin create a new instance of {@link #AuthAPI(String, String, String)} using the tenant domain, and the Application's client id and client secret.
+ * Class that provides an implementation of of the Authentication and Authorization API methods defined by the
+ * Auth0 Authentication API.
+ * Instances are created using the {@link Builder}. If you are also using the {@link ManagementAPI}, it is recommended
+ * to configure each with the same {@link DefaultHttpClient} to enable both API clients to share the same Http client.
+ *
+ * To use with a confidential client, instantiate an instance with a client secret:
+ *
+ * Operations that always require a client secret will throw a {@code InvalidStateException} if the client is not created
+ * with a secret.
*/
@SuppressWarnings("WeakerAccess")
public class AuthAPI {
@@ -26,78 +52,88 @@ public class AuthAPI {
private static final String KEY_CONNECTION = "connection";
private static final String KEY_TOKEN = "token";
private static final String KEY_REFRESH_TOKEN = "refresh_token";
-
+ private static final String KEY_OTP = "otp";
+ private static final String KEY_REALM = "realm";
+ private static final String KEY_MFA_TOKEN = "mfa_token";
+ private static final String KEY_CLIENT_ASSERTION = "client_assertion";
+ private static final String KEY_CLIENT_ASSERTION_TYPE = "client_assertion_type";
private static final String PATH_OAUTH = "oauth";
private static final String PATH_TOKEN = "token";
private static final String PATH_DBCONNECTIONS = "dbconnections";
private static final String PATH_REVOKE = "revoke";
+ private static final String PATH_PASSWORDLESS = "passwordless";
+ private static final String PATH_START = "start";
+ private static final String KEY_ORGANIZATION = "organization";
+ private static final String KEY_PHONE_NUMBER = "phone_number";
- private final OkHttpClient client;
+ private final Auth0HttpClient client;
private final String clientId;
private final String clientSecret;
+ private final ClientAssertionSigner clientAssertionSigner;
private final HttpUrl baseUrl;
- private final TelemetryInterceptor telemetry;
- private final HttpLoggingInterceptor logging;
/**
- * Create a new instance with the given tenant's domain, application's client id and client secret. These values can be obtained at https://manage.auth0.com/#/applications/{YOUR_CLIENT_ID}/settings.
- *
- * @param domain tenant's domain.
- * @param clientId the application's client id.
- * @param clientSecret the application's client secret.
+ * Initialize a new {@link Builder} to configure and create an instance. Use this to construct an instance
+ * with a client secret when using a confidential client (Regular Web Application).
+ * @param domain the tenant's domain. Must be a non-null valid HTTPS URL.
+ * @param clientId the application's client ID.
+ * @param clientSecret the applications client secret.
+ * @return a Builder for further configuration.
*/
- public AuthAPI(String domain, String clientId, String clientSecret) {
- Asserts.assertNotNull(domain, "domain");
- Asserts.assertNotNull(clientId, "client id");
- Asserts.assertNotNull(clientSecret, "client secret");
-
- this.baseUrl = createBaseUrl(domain);
- if (baseUrl == null) {
- throw new IllegalArgumentException("The domain had an invalid format and couldn't be parsed as an URL.");
- }
- this.clientId = clientId;
- this.clientSecret = clientSecret;
-
- telemetry = new TelemetryInterceptor();
- logging = new HttpLoggingInterceptor();
- logging.setLevel(Level.NONE);
- client = new OkHttpClient.Builder()
- .addInterceptor(logging)
- .addInterceptor(telemetry)
- .build();
+ public static Builder newBuilder(String domain, String clientId, String clientSecret) {
+ return new Builder(domain, clientId).withClientSecret(clientSecret);
}
/**
- * Avoid sending Telemetry data in every request to the Auth0 servers.
+ * Initialize a new {@link Builder} to configure and create an instance. Use this to construct an instance
+ * with a client assertion signer used in place of a client secret when calling token APIs.
+ *
+ * @param domain the tenant's domain. Must be a non-null valid HTTPS URL.
+ * @param clientId the application's client ID.
+ * @param clientAssertionSigner the {@code ClientAssertionSigner} used to create the signed client assertion.
+ * @return a Builder for further configuration.
*/
- public void doNotSendTelemetry() {
- telemetry.setEnabled(false);
+ public static Builder newBuilder(String domain, String clientId, ClientAssertionSigner clientAssertionSigner) {
+ return new Builder(domain, clientId).withClientAssertionSigner(clientAssertionSigner);
}
/**
- * Setter for the Telemetry to send in every request to Auth0.
- *
- * @param telemetry to send in every request to Auth0
+ * Initialize a new {@link Builder} to configure and create an instance. Use this to construct an instance
+ * without a client secret (for example, when only using APIs that do not require a secret).
+ * @param domain the tenant's domain. Must be a non-null valid HTTPS URL.
+ * @param clientId the application's client ID.
+ * @return a Builder for further configuration.
*/
- public void setTelemetry(Telemetry telemetry) {
- this.telemetry.setTelemetry(telemetry);
+ public static Builder newBuilder(String domain, String clientId) {
+ return new Builder(domain, clientId);
}
- /**
- * Whether to enable or not the current HTTP Logger for every Request, Response and other sensitive information.
- *
- * @param enabled whether to enable the HTTP logger or not.
- */
- public void setLoggingEnabled(boolean enabled) {
- logging.setLevel(enabled ? Level.BODY : Level.NONE);
+ private AuthAPI(
+ String domain,
+ String clientId,
+ String clientSecret,
+ ClientAssertionSigner clientAssertionSigner,
+ Auth0HttpClient httpClient) {
+ Asserts.assertNotNull(domain, "domain");
+ Asserts.assertNotNull(clientId, "client id");
+ Asserts.assertNotNull(httpClient, "Http client");
+
+ this.baseUrl = createBaseUrl(domain);
+ if (baseUrl == null) {
+ throw new IllegalArgumentException("The domain had an invalid format and couldn't be parsed as an URL.");
+ }
+ this.clientId = clientId;
+ this.clientSecret = clientSecret;
+ this.clientAssertionSigner = clientAssertionSigner;
+ this.client = httpClient;
}
- //Visible for Testing
- OkHttpClient getClient() {
- return client;
+ @TestOnly
+ Auth0HttpClient getHttpClient() {
+ return this.client;
}
- //Visible for Testing
+ @TestOnly
HttpUrl getBaseUrl() {
return baseUrl;
}
@@ -115,8 +151,7 @@ private HttpUrl createBaseUrl(String domain) {
* i.e.:
*
*
- * @param redirectUri the redirect_uri value to set, white-listed in the Application settings. Must be already URL Encoded.
+ * @param redirectUri the URL to redirect to after authorization has been granted by the user. Your Auth0 application
+ * must have this URL as one of its Allowed Callback URLs. Must be a valid non-encoded URL.
* @return a new instance of the {@link AuthorizeUrlBuilder} to configure.
*/
public AuthorizeUrlBuilder authorizeUrl(String redirectUri) {
@@ -134,20 +170,225 @@ public AuthorizeUrlBuilder authorizeUrl(String redirectUri) {
return AuthorizeUrlBuilder.newInstance(baseUrl, clientId, redirectUri);
}
+ public Request authorizeBackChannel(
+ String scope, String bindingMessage, Map loginHint) {
+ return authorizeBackChannel(scope, bindingMessage, loginHint, null, null);
+ }
+
+ public Request authorizeBackChannel(
+ String scope,
+ String bindingMessage,
+ Map loginHint,
+ String audience,
+ Integer requestExpiry) {
+ Asserts.assertNotNull(scope, "scope");
+ Asserts.assertNotNull(bindingMessage, "binding message");
+ Asserts.assertNotNull(loginHint, "login hint");
+
+ String url = baseUrl.newBuilder().addPathSegment("bc-authorize").build().toString();
+
+ FormBodyRequest request = new FormBodyRequest<>(
+ client, null, url, HttpMethod.POST, new TypeReference() {});
+
+ request.addParameter(KEY_CLIENT_ID, clientId);
+ addClientAuthentication(request, false);
+ request.addParameter("scope", scope);
+ request.addParameter("binding_message", bindingMessage);
+
+ if (Objects.nonNull(audience)) {
+ request.addParameter(KEY_AUDIENCE, audience);
+ }
+ if (Objects.nonNull(requestExpiry)) {
+ request.addParameter("requested_expiry", requestExpiry);
+ }
+
+ try {
+ String loginHintJson = getMapper().writeValueAsString(loginHint);
+ request.addParameter("login_hint", loginHintJson);
+ } catch (JsonProcessingException e) {
+ throw new IllegalArgumentException("'loginHint' must be a map that can be serialized to JSON", e);
+ }
+ return request;
+ }
+
+ public Request getBackChannelLoginStatus(String authReqId, String grantType) {
+ Asserts.assertNotNull(authReqId, "auth req id");
+ Asserts.assertNotNull(grantType, "grant type");
+
+ String url = getTokenUrl();
+
+ FormBodyRequest request = new FormBodyRequest<>(
+ client, null, url, HttpMethod.POST, new TypeReference() {});
+
+ request.addParameter(KEY_CLIENT_ID, clientId);
+ addClientAuthentication(request, false);
+ request.addParameter("auth_req_id", authReqId);
+ request.addParameter(KEY_GRANT_TYPE, grantType);
+
+ return request;
+ }
+
+ /**
+ * Builds an authorization URL for Pushed Authorization Requests (PAR)
+ * @param requestUri the {@code request_uri} parameter from a successful pushed authorization request.
+ * @see AuthAPI#pushedAuthorizationRequest(String, String, Map)
+ * @see RFC 9126
+ * @return the {@code request_uri} from a successful pushed authorization request.
+ */
+ public String authorizeUrlWithPAR(String requestUri) {
+ Asserts.assertNotNull(requestUri, "request uri");
+ return baseUrl.newBuilder()
+ .addPathSegment("authorize")
+ .addQueryParameter("client_id", clientId)
+ .addQueryParameter("request_uri", requestUri)
+ .build()
+ .toString();
+ }
+
+ /**
+ * Builds an authorization URL for JWT-Secured Authorization Request (JAR)
+ * @param request the {@code request} parameter value. As specified, it must be a signed JWT and contain claims representing the authorization parameters.
+ * @see AuthAPI#pushedAuthorizationRequestWithJAR(String)
+ * @see Authorization Code Flow with JWT-Secured Authorization Requests (JAR)
+ * @see RFC 9101
+ * @return the authorization URL to redirect users to for authentication.
+ */
+ public String authorizeUrlWithJAR(String request) {
+ Asserts.assertNotNull(request, "request");
+ return baseUrl.newBuilder()
+ .addPathSegment("authorize")
+ .addQueryParameter("client_id", clientId)
+ .addQueryParameter("request", request)
+ .build()
+ .toString();
+ }
+
+ /**
+ * Builds a request to make a Pushed Authorization Request (PAR) to receive a {@code request_uri} to send to the {@code /authorize} endpoint.
+ * @param redirectUri the URL to redirect to after authorization has been granted by the user. Your Auth0 application
+ * must have this URL as one of its Allowed Callback URLs. Must be a valid non-encoded URL.
+ * @param responseType the response type to set. Must not be null.
+ * @param params an optional map of key/value pairs representing any additional parameters to send on the request.
+ * @see RFC 9126
+ * @return a request to execute.
+ */
+ public Request pushedAuthorizationRequest(
+ String redirectUri, String responseType, Map params) {
+ return pushedAuthorizationRequest(redirectUri, responseType, params, null);
+ }
+
+ /**
+ * Builds a request to make a Pushed Authorization Request (PAR) to receive a {@code request_uri} to send to the {@code /authorize} endpoint.
+ * @param redirectUri the URL to redirect to after authorization has been granted by the user. Your Auth0 application
+ * must have this URL as one of its Allowed Callback URLs. Must be a valid non-encoded URL.
+ * @param responseType the response type to set. Must not be null.
+ * @param params an optional map of key/value pairs representing any additional parameters to send on the request.
+ * @param authorizationDetails A list of maps representing the value of the (optional) {@code authorization_details} parameter, used to perform Rich Authorization Requests. The list will be serialized to JSON and sent on the request.
+ * @see #pushedAuthorizationRequest(String, String, Map, List)
+ * @see RFC 9126
+ * @see RFC 9396
+ * @see Authorization Code Flow with Rich Authorization Requests (RAR)
+ * @return a request to execute.
+ */
+ public Request pushedAuthorizationRequest(
+ String redirectUri,
+ String responseType,
+ Map params,
+ List
+ */
+ public CompletableFuture> list(ListClientsRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve clients (applications and SSO integrations) matching provided filters. A list of fields to include or exclude may also be specified.
+ * For more information, read Applications in Auth0 and Single Sign-On.
+ *
+ *
+ * The following can be retrieved with any scope:
+ * client_id, app_type, name, and description.
+ *
+ * The following properties can only be retrieved with the
+ * read:client_keys or read:client_credentials scope:
+ * encryption_key, encryption_key.pub, encryption_key.cert,
+ * client_secret, client_authentication_methods and signing_key.
+ *
+ * The following properties can only be retrieved with the read:client_keys or read:client_credentials scopes:
+ * encryption_key, encryption_key.pub, encryption_key.cert,
+ * client_secret, client_authentication_methods and signing_key.
+ *
+ *
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve client details by ID. Clients are SSO connections or Applications linked with your Auth0 tenant. A list of fields to include or exclude may also be specified.
+ * For more information, read Applications in Auth0 and Single Sign-On.
+ *
+ *
+ * The following properties can be retrieved with any of the scopes:
+ * client_id, app_type, name, and description.
+ *
+ * The following properties can only be retrieved with the read:client_keys or read:client_credentials scopes:
+ * encryption_key, encryption_key.pub, encryption_key.cert,
+ * client_secret, client_authentication_methods and signing_key.
+ *
+ *
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve client details by ID. Clients are SSO connections or Applications linked with your Auth0 tenant. A list of fields to include or exclude may also be specified.
+ * For more information, read Applications in Auth0 and Single Sign-On.
+ *
+ *
+ * The following properties can be retrieved with any of the scopes:
+ * client_id, app_type, name, and description.
+ *
+ * The following properties can only be retrieved with the read:client_keys or read:client_credentials scopes:
+ * encryption_key, encryption_key.pub, encryption_key.cert,
+ * client_secret, client_authentication_methods and signing_key.
+ *
+ *
+ */
+ public CompletableFuture get(String id, GetClientRequestParameters request) {
+ return this.rawClient.get(id, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve client details by ID. Clients are SSO connections or Applications linked with your Auth0 tenant. A list of fields to include or exclude may also be specified.
+ * For more information, read Applications in Auth0 and Single Sign-On.
+ *
+ *
+ * The following properties can be retrieved with any of the scopes:
+ * client_id, app_type, name, and description.
+ *
+ * The following properties can only be retrieved with the read:client_keys or read:client_credentials scopes:
+ * encryption_key, encryption_key.pub, encryption_key.cert,
+ * client_secret, client_authentication_methods and signing_key.
+ *
+ *
+ */
+ public CompletableFuture get(
+ String id, GetClientRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.get(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a client and related configuration (rules, connections, etc).
+ */
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a client and related configuration (rules, connections, etc).
+ */
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Updates a client's settings. For more information, read Applications in Auth0 and Single Sign-On.
+ *
Notes:
+ *
+ *
The client_secret and signing_key attributes can only be updated with the update:client_keys scope.
+ *
The client_authentication_methods and token_endpoint_auth_method properties are mutually exclusive. Use client_authentication_methods to configure the client with Private Key JWT authentication method. Otherwise, use token_endpoint_auth_method to configure the client with client secret (basic or post) or with no authentication method (none).
+ *
When using client_authentication_methods to configure the client with Private Key JWT authentication method, only specify the credential IDs that were generated when creating the credentials on the client.
+ *
To configure client_authentication_methods, the update:client_credentials scope is required.
+ *
To configure client_authentication_methods, the property jwt_configuration.alg must be set to RS256.
+ *
To change a client's is_first_party property to false, the organization_usage and organization_require_behavior properties must be unset.
+ *
+ */
+ public CompletableFuture update(String id) {
+ return this.rawClient.update(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Updates a client's settings. For more information, read Applications in Auth0 and Single Sign-On.
+ *
Notes:
+ *
+ *
The client_secret and signing_key attributes can only be updated with the update:client_keys scope.
+ *
The client_authentication_methods and token_endpoint_auth_method properties are mutually exclusive. Use client_authentication_methods to configure the client with Private Key JWT authentication method. Otherwise, use token_endpoint_auth_method to configure the client with client secret (basic or post) or with no authentication method (none).
+ *
When using client_authentication_methods to configure the client with Private Key JWT authentication method, only specify the credential IDs that were generated when creating the credentials on the client.
+ *
To configure client_authentication_methods, the update:client_credentials scope is required.
+ *
To configure client_authentication_methods, the property jwt_configuration.alg must be set to RS256.
+ *
To change a client's is_first_party property to false, the organization_usage and organization_require_behavior properties must be unset.
+ *
+ */
+ public CompletableFuture update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Updates a client's settings. For more information, read Applications in Auth0 and Single Sign-On.
+ *
Notes:
+ *
+ *
The client_secret and signing_key attributes can only be updated with the update:client_keys scope.
+ *
The client_authentication_methods and token_endpoint_auth_method properties are mutually exclusive. Use client_authentication_methods to configure the client with Private Key JWT authentication method. Otherwise, use token_endpoint_auth_method to configure the client with client secret (basic or post) or with no authentication method (none).
+ *
When using client_authentication_methods to configure the client with Private Key JWT authentication method, only specify the credential IDs that were generated when creating the credentials on the client.
+ *
To configure client_authentication_methods, the update:client_credentials scope is required.
+ *
To configure client_authentication_methods, the property jwt_configuration.alg must be set to RS256.
+ *
To change a client's is_first_party property to false, the organization_usage and organization_require_behavior properties must be unset.
+ *
+ */
+ public CompletableFuture update(String id, UpdateClientRequestContent request) {
+ return this.rawClient.update(id, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Updates a client's settings. For more information, read Applications in Auth0 and Single Sign-On.
+ *
Notes:
+ *
+ *
The client_secret and signing_key attributes can only be updated with the update:client_keys scope.
+ *
The client_authentication_methods and token_endpoint_auth_method properties are mutually exclusive. Use client_authentication_methods to configure the client with Private Key JWT authentication method. Otherwise, use token_endpoint_auth_method to configure the client with client secret (basic or post) or with no authentication method (none).
+ *
When using client_authentication_methods to configure the client with Private Key JWT authentication method, only specify the credential IDs that were generated when creating the credentials on the client.
+ *
To configure client_authentication_methods, the update:client_credentials scope is required.
+ *
To configure client_authentication_methods, the property jwt_configuration.alg must be set to RS256.
+ *
To change a client's is_first_party property to false, the organization_usage and organization_require_behavior properties must be unset.
This endpoint cannot be used with clients configured with Private Key JWT authentication method (client_authentication_methods configured with private_key_jwt). The generated secret is NOT base64 encoded.
This endpoint cannot be used with clients configured with Private Key JWT authentication method (client_authentication_methods configured with private_key_jwt). The generated secret is NOT base64 encoded.
+ */
+ public CompletableFuture rotateSecret(String id, RequestOptions requestOptions) {
+ return this.rawClient.rotateSecret(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public AsyncCredentialsClient credentials() {
+ return this.credentialsClient.get();
+ }
+
+ public AsyncConnectionsClient connections() {
+ return this.connectionsClient.get();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncConnectionProfilesClient.java b/src/main/java/com/auth0/client/mgmt/AsyncConnectionProfilesClient.java
new file mode 100644
index 000000000..adaa05fac
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncConnectionProfilesClient.java
@@ -0,0 +1,170 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.ConnectionProfile;
+import com.auth0.client.mgmt.types.CreateConnectionProfileRequestContent;
+import com.auth0.client.mgmt.types.CreateConnectionProfileResponseContent;
+import com.auth0.client.mgmt.types.GetConnectionProfileResponseContent;
+import com.auth0.client.mgmt.types.GetConnectionProfileTemplateResponseContent;
+import com.auth0.client.mgmt.types.ListConnectionProfileRequestParameters;
+import com.auth0.client.mgmt.types.ListConnectionProfileTemplateResponseContent;
+import com.auth0.client.mgmt.types.UpdateConnectionProfileRequestContent;
+import com.auth0.client.mgmt.types.UpdateConnectionProfileResponseContent;
+import java.util.concurrent.CompletableFuture;
+
+public class AsyncConnectionProfilesClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawConnectionProfilesClient rawClient;
+
+ public AsyncConnectionProfilesClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawConnectionProfilesClient(clientOptions);
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawConnectionProfilesClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * Retrieve a list of Connection Profiles. This endpoint supports Checkpoint pagination.
+ */
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a list of Connection Profiles. This endpoint supports Checkpoint pagination.
+ */
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a list of Connection Profiles. This endpoint supports Checkpoint pagination.
+ */
+ public CompletableFuture> list(
+ ListConnectionProfileRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a list of Connection Profiles. This endpoint supports Checkpoint pagination.
+ */
+ public CompletableFuture> list(
+ ListConnectionProfileRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create a Connection Profile.
+ */
+ public CompletableFuture create(
+ CreateConnectionProfileRequestContent request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create a Connection Profile.
+ */
+ public CompletableFuture create(
+ CreateConnectionProfileRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a list of Connection Profile Templates.
+ */
+ public CompletableFuture listTemplates() {
+ return this.rawClient.listTemplates().thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a list of Connection Profile Templates.
+ */
+ public CompletableFuture listTemplates(
+ RequestOptions requestOptions) {
+ return this.rawClient.listTemplates(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a Connection Profile Template.
+ */
+ public CompletableFuture getTemplate(String id) {
+ return this.rawClient.getTemplate(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a Connection Profile Template.
+ */
+ public CompletableFuture getTemplate(
+ String id, RequestOptions requestOptions) {
+ return this.rawClient.getTemplate(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details about a single Connection Profile specified by ID.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details about a single Connection Profile specified by ID.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a single Connection Profile specified by ID.
+ */
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a single Connection Profile specified by ID.
+ */
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update the details of a specific Connection Profile.
+ */
+ public CompletableFuture update(String id) {
+ return this.rawClient.update(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update the details of a specific Connection Profile.
+ */
+ public CompletableFuture update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update the details of a specific Connection Profile.
+ */
+ public CompletableFuture update(
+ String id, UpdateConnectionProfileRequestContent request) {
+ return this.rawClient.update(id, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update the details of a specific Connection Profile.
+ */
+ public CompletableFuture update(
+ String id, UpdateConnectionProfileRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncConnectionsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncConnectionsClient.java
new file mode 100644
index 000000000..298fa3dc6
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncConnectionsClient.java
@@ -0,0 +1,268 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.connections.AsyncClientsClient;
+import com.auth0.client.mgmt.connections.AsyncDirectoryProvisioningClient;
+import com.auth0.client.mgmt.connections.AsyncKeysClient;
+import com.auth0.client.mgmt.connections.AsyncScimConfigurationClient;
+import com.auth0.client.mgmt.connections.AsyncUsersClient;
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.Suppliers;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.ConnectionForList;
+import com.auth0.client.mgmt.types.CreateConnectionRequestContent;
+import com.auth0.client.mgmt.types.CreateConnectionResponseContent;
+import com.auth0.client.mgmt.types.GetConnectionRequestParameters;
+import com.auth0.client.mgmt.types.GetConnectionResponseContent;
+import com.auth0.client.mgmt.types.ListConnectionsQueryParameters;
+import com.auth0.client.mgmt.types.UpdateConnectionRequestContent;
+import com.auth0.client.mgmt.types.UpdateConnectionResponseContent;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Supplier;
+
+public class AsyncConnectionsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawConnectionsClient rawClient;
+
+ protected final Supplier directoryProvisioningClient;
+
+ protected final Supplier scimConfigurationClient;
+
+ protected final Supplier clientsClient;
+
+ protected final Supplier keysClient;
+
+ protected final Supplier usersClient;
+
+ public AsyncConnectionsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawConnectionsClient(clientOptions);
+ this.directoryProvisioningClient = Suppliers.memoize(() -> new AsyncDirectoryProvisioningClient(clientOptions));
+ this.scimConfigurationClient = Suppliers.memoize(() -> new AsyncScimConfigurationClient(clientOptions));
+ this.clientsClient = Suppliers.memoize(() -> new AsyncClientsClient(clientOptions));
+ this.keysClient = Suppliers.memoize(() -> new AsyncKeysClient(clientOptions));
+ this.usersClient = Suppliers.memoize(() -> new AsyncUsersClient(clientOptions));
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawConnectionsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * Retrieves detailed list of all connections that match the specified strategy. If no strategy is provided, all connections within your tenant are retrieved. This action can accept a list of fields to include or exclude from the resulting list of connections.
+ *
This endpoint supports two types of pagination:
+ *
+ *
Offset pagination
+ *
Checkpoint pagination
+ *
+ *
Checkpoint pagination must be used if you need to retrieve more than 1000 connections.
+ *
Checkpoint Pagination
+ *
To search by checkpoint, use the following parameters:
+ *
+ *
from: Optional id from which to start selection.
+ *
take: The total amount of entries to retrieve when using the from parameter. Defaults to 50.
+ *
+ *
Note: The first time you call this endpoint using checkpoint pagination, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no pages are remaining.
+ */
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieves detailed list of all connections that match the specified strategy. If no strategy is provided, all connections within your tenant are retrieved. This action can accept a list of fields to include or exclude from the resulting list of connections.
+ *
This endpoint supports two types of pagination:
+ *
+ *
Offset pagination
+ *
Checkpoint pagination
+ *
+ *
Checkpoint pagination must be used if you need to retrieve more than 1000 connections.
+ *
Checkpoint Pagination
+ *
To search by checkpoint, use the following parameters:
+ *
+ *
from: Optional id from which to start selection.
+ *
take: The total amount of entries to retrieve when using the from parameter. Defaults to 50.
+ *
+ *
Note: The first time you call this endpoint using checkpoint pagination, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no pages are remaining.
+ */
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieves detailed list of all connections that match the specified strategy. If no strategy is provided, all connections within your tenant are retrieved. This action can accept a list of fields to include or exclude from the resulting list of connections.
+ *
This endpoint supports two types of pagination:
+ *
+ *
Offset pagination
+ *
Checkpoint pagination
+ *
+ *
Checkpoint pagination must be used if you need to retrieve more than 1000 connections.
+ *
Checkpoint Pagination
+ *
To search by checkpoint, use the following parameters:
+ *
+ *
from: Optional id from which to start selection.
+ *
take: The total amount of entries to retrieve when using the from parameter. Defaults to 50.
+ *
+ *
Note: The first time you call this endpoint using checkpoint pagination, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no pages are remaining.
+ */
+ public CompletableFuture> list(ListConnectionsQueryParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieves detailed list of all connections that match the specified strategy. If no strategy is provided, all connections within your tenant are retrieved. This action can accept a list of fields to include or exclude from the resulting list of connections.
+ *
This endpoint supports two types of pagination:
+ *
+ *
Offset pagination
+ *
Checkpoint pagination
+ *
+ *
Checkpoint pagination must be used if you need to retrieve more than 1000 connections.
+ *
Checkpoint Pagination
+ *
To search by checkpoint, use the following parameters:
+ *
+ *
from: Optional id from which to start selection.
+ *
take: The total amount of entries to retrieve when using the from parameter. Defaults to 50.
+ *
+ *
Note: The first time you call this endpoint using checkpoint pagination, omit the from parameter. If there are more results, a next value is included in the response. You can use this for subsequent API calls. When next is no longer included in the response, no pages are remaining.
+ */
+ public CompletableFuture> list(
+ ListConnectionsQueryParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Creates a new connection according to the JSON object received in body.
+ *
Note: If a connection with the same name was recently deleted and had a large number of associated users, the deletion may still be processing. Creating a new connection with that name before the deletion completes may fail or produce unexpected results.
+ */
+ public CompletableFuture create(CreateConnectionRequestContent request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Creates a new connection according to the JSON object received in body.
+ *
Note: If a connection with the same name was recently deleted and had a large number of associated users, the deletion may still be processing. Creating a new connection with that name before the deletion completes may fail or produce unexpected results.
+ */
+ public CompletableFuture create(
+ CreateConnectionRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details for a specified connection along with options that can be used for identity provider configuration.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details for a specified connection along with options that can be used for identity provider configuration.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details for a specified connection along with options that can be used for identity provider configuration.
+ */
+ public CompletableFuture get(String id, GetConnectionRequestParameters request) {
+ return this.rawClient.get(id, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details for a specified connection along with options that can be used for identity provider configuration.
+ */
+ public CompletableFuture get(
+ String id, GetConnectionRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.get(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Removes a specific connection from your tenant. This action cannot be undone. Once removed, users can no longer use this connection to authenticate.
+ *
Note: If your connection has a large amount of users associated with it, please be aware that this operation can be long running after the response is returned and may impact concurrent create connection requests, if they use an identical connection name.
+ */
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Removes a specific connection from your tenant. This action cannot be undone. Once removed, users can no longer use this connection to authenticate.
+ *
Note: If your connection has a large amount of users associated with it, please be aware that this operation can be long running after the response is returned and may impact concurrent create connection requests, if they use an identical connection name.
+ */
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update details for a specific connection, including option properties for identity provider configuration.
+ *
Note: If you use the options parameter, the entire options object is overriden. To avoid partial data or other issues, ensure all parameters are present when using this option.
+ */
+ public CompletableFuture update(String id) {
+ return this.rawClient.update(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update details for a specific connection, including option properties for identity provider configuration.
+ *
Note: If you use the options parameter, the entire options object is overriden. To avoid partial data or other issues, ensure all parameters are present when using this option.
+ */
+ public CompletableFuture update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update details for a specific connection, including option properties for identity provider configuration.
+ *
Note: If you use the options parameter, the entire options object is overriden. To avoid partial data or other issues, ensure all parameters are present when using this option.
+ */
+ public CompletableFuture update(
+ String id, UpdateConnectionRequestContent request) {
+ return this.rawClient.update(id, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update details for a specific connection, including option properties for identity provider configuration.
+ *
Note: If you use the options parameter, the entire options object is overriden. To avoid partial data or other issues, ensure all parameters are present when using this option.
+ */
+ public CompletableFuture update(
+ String id, UpdateConnectionRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieves the status of an ad/ldap connection referenced by its ID. 200 OK http status code response is returned when the connection is online, otherwise a 404 status code is returned along with an error message
+ */
+ public CompletableFuture checkStatus(String id) {
+ return this.rawClient.checkStatus(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieves the status of an ad/ldap connection referenced by its ID. 200 OK http status code response is returned when the connection is online, otherwise a 404 status code is returned along with an error message
+ */
+ public CompletableFuture checkStatus(String id, RequestOptions requestOptions) {
+ return this.rawClient.checkStatus(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public AsyncDirectoryProvisioningClient directoryProvisioning() {
+ return this.directoryProvisioningClient.get();
+ }
+
+ public AsyncScimConfigurationClient scimConfiguration() {
+ return this.scimConfigurationClient.get();
+ }
+
+ public AsyncClientsClient clients() {
+ return this.clientsClient.get();
+ }
+
+ public AsyncKeysClient keys() {
+ return this.keysClient.get();
+ }
+
+ public AsyncUsersClient users() {
+ return this.usersClient.get();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncCustomDomainsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncCustomDomainsClient.java
new file mode 100644
index 000000000..be8502d7d
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncCustomDomainsClient.java
@@ -0,0 +1,272 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.types.CreateCustomDomainRequestContent;
+import com.auth0.client.mgmt.types.CreateCustomDomainResponseContent;
+import com.auth0.client.mgmt.types.CustomDomain;
+import com.auth0.client.mgmt.types.GetCustomDomainResponseContent;
+import com.auth0.client.mgmt.types.ListCustomDomainsRequestParameters;
+import com.auth0.client.mgmt.types.TestCustomDomainResponseContent;
+import com.auth0.client.mgmt.types.UpdateCustomDomainRequestContent;
+import com.auth0.client.mgmt.types.UpdateCustomDomainResponseContent;
+import com.auth0.client.mgmt.types.VerifyCustomDomainResponseContent;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+public class AsyncCustomDomainsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawCustomDomainsClient rawClient;
+
+ public AsyncCustomDomainsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawCustomDomainsClient(clientOptions);
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawCustomDomainsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * Retrieve details on custom domains.
+ */
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details on custom domains.
+ */
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details on custom domains.
+ */
+ public CompletableFuture> list(ListCustomDomainsRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve details on custom domains.
+ */
+ public CompletableFuture> list(
+ ListCustomDomainsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create a new custom domain.
+ *
Note: The custom domain will need to be verified before it will accept
+ * requests.
+ *
Optional attributes that can be updated:
+ *
+ *
custom_client_ip_header
+ *
tls_policy
+ *
+ *
TLS Policies:
+ *
+ *
recommended - for modern usage this includes TLS 1.2 only
+ *
+ */
+ public CompletableFuture create(CreateCustomDomainRequestContent request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create a new custom domain.
+ *
Note: The custom domain will need to be verified before it will accept
+ * requests.
+ *
Optional attributes that can be updated:
+ *
+ *
custom_client_ip_header
+ *
tls_policy
+ *
+ *
TLS Policies:
+ *
+ *
recommended - for modern usage this includes TLS 1.2 only
+ *
+ */
+ public CompletableFuture create(
+ CreateCustomDomainRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a custom domain configuration and status.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a custom domain configuration and status.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a custom domain and stop serving requests for it.
+ */
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a custom domain and stop serving requests for it.
+ */
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update a custom domain.
+ *
These are the attributes that can be updated:
+ *
+ *
custom_client_ip_header
+ *
tls_policy
+ *
+ *
Updating CUSTOM_CLIENT_IP_HEADER for a custom domain
To update the custom_client_ip_header for a domain, the body to
+ * send should be:
+ *
{ "custom_client_ip_header": "cf-connecting-ip" }
+ *
Updating TLS_POLICY for a custom domain
To update the tls_policy for a domain, the body to send should be:
+ *
{ "tls_policy": "recommended" }
+ *
TLS Policies:
+ *
+ *
recommended - for modern usage this includes TLS 1.2 only
+ *
+ *
Some considerations:
+ *
+ *
The TLS ciphers and protocols available in each TLS policy follow industry recommendations, and may be updated occasionally.
Updating CUSTOM_CLIENT_IP_HEADER for a custom domain
To update the custom_client_ip_header for a domain, the body to
+ * send should be:
+ *
{ "custom_client_ip_header": "cf-connecting-ip" }
+ *
Updating TLS_POLICY for a custom domain
To update the tls_policy for a domain, the body to send should be:
+ *
{ "tls_policy": "recommended" }
+ *
TLS Policies:
+ *
+ *
recommended - for modern usage this includes TLS 1.2 only
+ *
+ *
Some considerations:
+ *
+ *
The TLS ciphers and protocols available in each TLS policy follow industry recommendations, and may be updated occasionally.
+ *
The compatible TLS policy is no longer supported.
+ *
+ */
+ public CompletableFuture update(
+ String id, UpdateCustomDomainRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Run the test process on a custom domain.
+ */
+ public CompletableFuture test(String id) {
+ return this.rawClient.test(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Run the test process on a custom domain.
+ */
+ public CompletableFuture test(String id, RequestOptions requestOptions) {
+ return this.rawClient.test(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Run the verification process on a custom domain.
+ *
Note: Check the status field to see its verification status. Once verification is complete, it may take up to 10 minutes before the custom domain can start accepting requests.
+ *
For self_managed_certs, when the custom domain is verified for the first time, the response will also include the cname_api_key which you will need to configure your proxy. This key must be kept secret, and is used to validate the proxy requests.
+ *
Learn more about verifying custom domains that use Auth0 Managed certificates.
+ * Learn more about verifying custom domains that use Self Managed certificates.
+ */
+ public CompletableFuture verify(String id) {
+ return this.rawClient.verify(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Run the verification process on a custom domain.
+ *
Note: Check the status field to see its verification status. Once verification is complete, it may take up to 10 minutes before the custom domain can start accepting requests.
+ *
For self_managed_certs, when the custom domain is verified for the first time, the response will also include the cname_api_key which you will need to configure your proxy. This key must be kept secret, and is used to validate the proxy requests.
+ *
Learn more about verifying custom domains that use Auth0 Managed certificates.
+ * Learn more about verifying custom domains that use Self Managed certificates.
+ */
+ public CompletableFuture verify(String id, RequestOptions requestOptions) {
+ return this.rawClient.verify(id, requestOptions).thenApply(response -> response.body());
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncDeviceCredentialsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncDeviceCredentialsClient.java
new file mode 100644
index 000000000..9f3a40a5b
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncDeviceCredentialsClient.java
@@ -0,0 +1,93 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.CreatePublicKeyDeviceCredentialRequestContent;
+import com.auth0.client.mgmt.types.CreatePublicKeyDeviceCredentialResponseContent;
+import com.auth0.client.mgmt.types.DeviceCredential;
+import com.auth0.client.mgmt.types.ListDeviceCredentialsRequestParameters;
+import java.util.concurrent.CompletableFuture;
+
+public class AsyncDeviceCredentialsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawDeviceCredentialsClient rawClient;
+
+ public AsyncDeviceCredentialsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawDeviceCredentialsClient(clientOptions);
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawDeviceCredentialsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * Retrieve device credential information (public_key, refresh_token, or rotating_refresh_token) associated with a specific user.
+ */
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve device credential information (public_key, refresh_token, or rotating_refresh_token) associated with a specific user.
+ */
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve device credential information (public_key, refresh_token, or rotating_refresh_token) associated with a specific user.
+ */
+ public CompletableFuture> list(
+ ListDeviceCredentialsRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve device credential information (public_key, refresh_token, or rotating_refresh_token) associated with a specific user.
+ */
+ public CompletableFuture> list(
+ ListDeviceCredentialsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create a device credential public key to manage refresh token rotation for a given user_id. Device Credentials APIs are designed for ad-hoc administrative use only and paging is by default enabled for GET requests.
+ *
When refresh token rotation is enabled, the endpoint becomes consistent. For more information, read Signing Keys.
+ */
+ public CompletableFuture createPublicKey(
+ CreatePublicKeyDeviceCredentialRequestContent request) {
+ return this.rawClient.createPublicKey(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create a device credential public key to manage refresh token rotation for a given user_id. Device Credentials APIs are designed for ad-hoc administrative use only and paging is by default enabled for GET requests.
+ *
When refresh token rotation is enabled, the endpoint becomes consistent. For more information, read Signing Keys.
+ */
+ public CompletableFuture createPublicKey(
+ CreatePublicKeyDeviceCredentialRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.createPublicKey(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Permanently delete a device credential (such as a refresh token or public key) with the given ID.
+ */
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Permanently delete a device credential (such as a refresh token or public key) with the given ID.
+ */
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncEmailTemplatesClient.java b/src/main/java/com/auth0/client/mgmt/AsyncEmailTemplatesClient.java
new file mode 100644
index 000000000..774b71fbf
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncEmailTemplatesClient.java
@@ -0,0 +1,113 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.types.CreateEmailTemplateRequestContent;
+import com.auth0.client.mgmt.types.CreateEmailTemplateResponseContent;
+import com.auth0.client.mgmt.types.EmailTemplateNameEnum;
+import com.auth0.client.mgmt.types.GetEmailTemplateResponseContent;
+import com.auth0.client.mgmt.types.SetEmailTemplateRequestContent;
+import com.auth0.client.mgmt.types.SetEmailTemplateResponseContent;
+import com.auth0.client.mgmt.types.UpdateEmailTemplateRequestContent;
+import com.auth0.client.mgmt.types.UpdateEmailTemplateResponseContent;
+import java.util.concurrent.CompletableFuture;
+
+public class AsyncEmailTemplatesClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawEmailTemplatesClient rawClient;
+
+ public AsyncEmailTemplatesClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawEmailTemplatesClient(clientOptions);
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawEmailTemplatesClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * Create an email template.
+ */
+ public CompletableFuture create(CreateEmailTemplateRequestContent request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create an email template.
+ */
+ public CompletableFuture create(
+ CreateEmailTemplateRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve an email template by pre-defined name. These names are verify_email, verify_email_by_code, reset_email, reset_email_by_code, welcome_email, blocked_account, stolen_credentials, enrollment_email, mfa_oob_code, user_invitation, and async_approval. The names change_password, and password_reset are also supported for legacy scenarios.
+ */
+ public CompletableFuture get(EmailTemplateNameEnum templateName) {
+ return this.rawClient.get(templateName).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve an email template by pre-defined name. These names are verify_email, verify_email_by_code, reset_email, reset_email_by_code, welcome_email, blocked_account, stolen_credentials, enrollment_email, mfa_oob_code, user_invitation, and async_approval. The names change_password, and password_reset are also supported for legacy scenarios.
+ */
+ public CompletableFuture get(
+ EmailTemplateNameEnum templateName, RequestOptions requestOptions) {
+ return this.rawClient.get(templateName, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update an email template.
+ */
+ public CompletableFuture set(
+ EmailTemplateNameEnum templateName, SetEmailTemplateRequestContent request) {
+ return this.rawClient.set(templateName, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update an email template.
+ */
+ public CompletableFuture set(
+ EmailTemplateNameEnum templateName, SetEmailTemplateRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.set(templateName, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Modify an email template.
+ */
+ public CompletableFuture update(EmailTemplateNameEnum templateName) {
+ return this.rawClient.update(templateName).thenApply(response -> response.body());
+ }
+
+ /**
+ * Modify an email template.
+ */
+ public CompletableFuture update(
+ EmailTemplateNameEnum templateName, RequestOptions requestOptions) {
+ return this.rawClient.update(templateName, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Modify an email template.
+ */
+ public CompletableFuture update(
+ EmailTemplateNameEnum templateName, UpdateEmailTemplateRequestContent request) {
+ return this.rawClient.update(templateName, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Modify an email template.
+ */
+ public CompletableFuture update(
+ EmailTemplateNameEnum templateName,
+ UpdateEmailTemplateRequestContent request,
+ RequestOptions requestOptions) {
+ return this.rawClient.update(templateName, request, requestOptions).thenApply(response -> response.body());
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncEventStreamsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncEventStreamsClient.java
new file mode 100644
index 000000000..848b81ddc
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncEventStreamsClient.java
@@ -0,0 +1,125 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.Suppliers;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.eventstreams.AsyncDeliveriesClient;
+import com.auth0.client.mgmt.eventstreams.AsyncRedeliveriesClient;
+import com.auth0.client.mgmt.types.CreateEventStreamResponseContent;
+import com.auth0.client.mgmt.types.CreateEventStreamTestEventRequestContent;
+import com.auth0.client.mgmt.types.CreateEventStreamTestEventResponseContent;
+import com.auth0.client.mgmt.types.EventStreamResponseContent;
+import com.auth0.client.mgmt.types.EventStreamsCreateRequest;
+import com.auth0.client.mgmt.types.GetEventStreamResponseContent;
+import com.auth0.client.mgmt.types.ListEventStreamsRequestParameters;
+import com.auth0.client.mgmt.types.UpdateEventStreamRequestContent;
+import com.auth0.client.mgmt.types.UpdateEventStreamResponseContent;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Supplier;
+
+public class AsyncEventStreamsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawEventStreamsClient rawClient;
+
+ protected final Supplier deliveriesClient;
+
+ protected final Supplier redeliveriesClient;
+
+ public AsyncEventStreamsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawEventStreamsClient(clientOptions);
+ this.deliveriesClient = Suppliers.memoize(() -> new AsyncDeliveriesClient(clientOptions));
+ this.redeliveriesClient = Suppliers.memoize(() -> new AsyncRedeliveriesClient(clientOptions));
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawEventStreamsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(
+ ListEventStreamsRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(
+ ListEventStreamsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture create(EventStreamsCreateRequest request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture create(
+ EventStreamsCreateRequest request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(String id) {
+ return this.rawClient.update(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(
+ String id, UpdateEventStreamRequestContent request) {
+ return this.rawClient.update(id, request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(
+ String id, UpdateEventStreamRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture test(
+ String id, CreateEventStreamTestEventRequestContent request) {
+ return this.rawClient.test(id, request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture test(
+ String id, CreateEventStreamTestEventRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.test(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public AsyncDeliveriesClient deliveries() {
+ return this.deliveriesClient.get();
+ }
+
+ public AsyncRedeliveriesClient redeliveries() {
+ return this.redeliveriesClient.get();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncFlowsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncFlowsClient.java
new file mode 100644
index 000000000..0d26afb4c
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncFlowsClient.java
@@ -0,0 +1,121 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.Suppliers;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.flows.AsyncExecutionsClient;
+import com.auth0.client.mgmt.flows.vault.AsyncVaultClient;
+import com.auth0.client.mgmt.types.CreateFlowRequestContent;
+import com.auth0.client.mgmt.types.CreateFlowResponseContent;
+import com.auth0.client.mgmt.types.FlowSummary;
+import com.auth0.client.mgmt.types.GetFlowRequestParameters;
+import com.auth0.client.mgmt.types.GetFlowResponseContent;
+import com.auth0.client.mgmt.types.ListFlowsRequestParameters;
+import com.auth0.client.mgmt.types.UpdateFlowRequestContent;
+import com.auth0.client.mgmt.types.UpdateFlowResponseContent;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Supplier;
+
+public class AsyncFlowsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawFlowsClient rawClient;
+
+ protected final Supplier executionsClient;
+
+ protected final Supplier vaultClient;
+
+ public AsyncFlowsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawFlowsClient(clientOptions);
+ this.executionsClient = Suppliers.memoize(() -> new AsyncExecutionsClient(clientOptions));
+ this.vaultClient = Suppliers.memoize(() -> new AsyncVaultClient(clientOptions));
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawFlowsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(ListFlowsRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(
+ ListFlowsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture create(CreateFlowRequestContent request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture create(
+ CreateFlowRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(String id, GetFlowRequestParameters request) {
+ return this.rawClient.get(id, request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(
+ String id, GetFlowRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.get(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(String id) {
+ return this.rawClient.update(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(String id, UpdateFlowRequestContent request) {
+ return this.rawClient.update(id, request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(
+ String id, UpdateFlowRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public AsyncExecutionsClient executions() {
+ return this.executionsClient.get();
+ }
+
+ public AsyncVaultClient vault() {
+ return this.vaultClient.get();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncFormsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncFormsClient.java
new file mode 100644
index 000000000..6a3b6b9e1
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncFormsClient.java
@@ -0,0 +1,103 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.CreateFormRequestContent;
+import com.auth0.client.mgmt.types.CreateFormResponseContent;
+import com.auth0.client.mgmt.types.FormSummary;
+import com.auth0.client.mgmt.types.GetFormRequestParameters;
+import com.auth0.client.mgmt.types.GetFormResponseContent;
+import com.auth0.client.mgmt.types.ListFormsRequestParameters;
+import com.auth0.client.mgmt.types.UpdateFormRequestContent;
+import com.auth0.client.mgmt.types.UpdateFormResponseContent;
+import java.util.concurrent.CompletableFuture;
+
+public class AsyncFormsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawFormsClient rawClient;
+
+ public AsyncFormsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawFormsClient(clientOptions);
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawFormsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(ListFormsRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture> list(
+ ListFormsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture create(CreateFormRequestContent request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture create(
+ CreateFormRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(String id, GetFormRequestParameters request) {
+ return this.rawClient.get(id, request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture get(
+ String id, GetFormRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.get(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(String id) {
+ return this.rawClient.update(id).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(String id, UpdateFormRequestContent request) {
+ return this.rawClient.update(id, request).thenApply(response -> response.body());
+ }
+
+ public CompletableFuture update(
+ String id, UpdateFormRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncGroupsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncGroupsClient.java
new file mode 100644
index 000000000..7015f6561
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncGroupsClient.java
@@ -0,0 +1,83 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.Suppliers;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.groups.AsyncMembersClient;
+import com.auth0.client.mgmt.types.GetGroupResponseContent;
+import com.auth0.client.mgmt.types.Group;
+import com.auth0.client.mgmt.types.ListGroupsRequestParameters;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Supplier;
+
+public class AsyncGroupsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawGroupsClient rawClient;
+
+ protected final Supplier membersClient;
+
+ public AsyncGroupsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawGroupsClient(clientOptions);
+ this.membersClient = Suppliers.memoize(() -> new AsyncMembersClient(clientOptions));
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawGroupsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * List all groups in your tenant.
+ */
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ /**
+ * List all groups in your tenant.
+ */
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * List all groups in your tenant.
+ */
+ public CompletableFuture> list(ListGroupsRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * List all groups in your tenant.
+ */
+ public CompletableFuture> list(
+ ListGroupsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a group by its ID.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a group by its ID.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public AsyncMembersClient members() {
+ return this.membersClient.get();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncHooksClient.java b/src/main/java/com/auth0/client/mgmt/AsyncHooksClient.java
new file mode 100644
index 000000000..86a72611b
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncHooksClient.java
@@ -0,0 +1,161 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.Suppliers;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.hooks.AsyncSecretsClient;
+import com.auth0.client.mgmt.types.CreateHookRequestContent;
+import com.auth0.client.mgmt.types.CreateHookResponseContent;
+import com.auth0.client.mgmt.types.GetHookRequestParameters;
+import com.auth0.client.mgmt.types.GetHookResponseContent;
+import com.auth0.client.mgmt.types.Hook;
+import com.auth0.client.mgmt.types.ListHooksRequestParameters;
+import com.auth0.client.mgmt.types.UpdateHookRequestContent;
+import com.auth0.client.mgmt.types.UpdateHookResponseContent;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Supplier;
+
+public class AsyncHooksClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawHooksClient rawClient;
+
+ protected final Supplier secretsClient;
+
+ public AsyncHooksClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawHooksClient(clientOptions);
+ this.secretsClient = Suppliers.memoize(() -> new AsyncSecretsClient(clientOptions));
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawHooksClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * Retrieve all hooks. Accepts a list of fields to include or exclude in the result.
+ */
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve all hooks. Accepts a list of fields to include or exclude in the result.
+ */
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve all hooks. Accepts a list of fields to include or exclude in the result.
+ */
+ public CompletableFuture> list(ListHooksRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve all hooks. Accepts a list of fields to include or exclude in the result.
+ */
+ public CompletableFuture> list(
+ ListHooksRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create a new hook.
+ */
+ public CompletableFuture create(CreateHookRequestContent request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Create a new hook.
+ */
+ public CompletableFuture create(
+ CreateHookRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a hook by its ID. Accepts a list of fields to include in the result.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a hook by its ID. Accepts a list of fields to include in the result.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a hook by its ID. Accepts a list of fields to include in the result.
+ */
+ public CompletableFuture get(String id, GetHookRequestParameters request) {
+ return this.rawClient.get(id, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a hook by its ID. Accepts a list of fields to include in the result.
+ */
+ public CompletableFuture get(
+ String id, GetHookRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.get(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a hook.
+ */
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a hook.
+ */
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update an existing hook.
+ */
+ public CompletableFuture update(String id) {
+ return this.rawClient.update(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update an existing hook.
+ */
+ public CompletableFuture update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update an existing hook.
+ */
+ public CompletableFuture update(String id, UpdateHookRequestContent request) {
+ return this.rawClient.update(id, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update an existing hook.
+ */
+ public CompletableFuture update(
+ String id, UpdateHookRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
+ }
+
+ public AsyncSecretsClient secrets() {
+ return this.secretsClient.get();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncJobsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncJobsClient.java
new file mode 100644
index 000000000..8f6728f9a
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncJobsClient.java
@@ -0,0 +1,75 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.Suppliers;
+import com.auth0.client.mgmt.jobs.AsyncErrorsClient;
+import com.auth0.client.mgmt.jobs.AsyncUsersExportsClient;
+import com.auth0.client.mgmt.jobs.AsyncUsersImportsClient;
+import com.auth0.client.mgmt.jobs.AsyncVerificationEmailClient;
+import com.auth0.client.mgmt.types.GetJobResponseContent;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Supplier;
+
+public class AsyncJobsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawJobsClient rawClient;
+
+ protected final Supplier usersExportsClient;
+
+ protected final Supplier usersImportsClient;
+
+ protected final Supplier verificationEmailClient;
+
+ protected final Supplier errorsClient;
+
+ public AsyncJobsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawJobsClient(clientOptions);
+ this.usersExportsClient = Suppliers.memoize(() -> new AsyncUsersExportsClient(clientOptions));
+ this.usersImportsClient = Suppliers.memoize(() -> new AsyncUsersImportsClient(clientOptions));
+ this.verificationEmailClient = Suppliers.memoize(() -> new AsyncVerificationEmailClient(clientOptions));
+ this.errorsClient = Suppliers.memoize(() -> new AsyncErrorsClient(clientOptions));
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawJobsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * Retrieves a job. Useful to check its status.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieves a job. Useful to check its status.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ public AsyncUsersExportsClient usersExports() {
+ return this.usersExportsClient.get();
+ }
+
+ public AsyncUsersImportsClient usersImports() {
+ return this.usersImportsClient.get();
+ }
+
+ public AsyncVerificationEmailClient verificationEmail() {
+ return this.verificationEmailClient.get();
+ }
+
+ public AsyncErrorsClient errors() {
+ return this.errorsClient.get();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncLogStreamsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncLogStreamsClient.java
new file mode 100644
index 000000000..d7e08394c
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncLogStreamsClient.java
@@ -0,0 +1,833 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.types.CreateLogStreamRequestContent;
+import com.auth0.client.mgmt.types.CreateLogStreamResponseContent;
+import com.auth0.client.mgmt.types.GetLogStreamResponseContent;
+import com.auth0.client.mgmt.types.LogStreamResponseSchema;
+import com.auth0.client.mgmt.types.UpdateLogStreamRequestContent;
+import com.auth0.client.mgmt.types.UpdateLogStreamResponseContent;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+public class AsyncLogStreamsClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawLogStreamsClient rawClient;
+
+ public AsyncLogStreamsClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawLogStreamsClient(clientOptions);
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawLogStreamsClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * Retrieve details on log streams.
+ *
The status of a log stream maybe any of the following:
+ * 1. active - Stream is currently enabled.
+ * 2. paused - Stream is currently user disabled and will not attempt log delivery.
+ * 3. suspended - Stream is currently disabled because of errors and will not attempt log delivery.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a log stream configuration and status.
+ *
The status of a log stream maybe any of the following:
+ * 1. active - Stream is currently enabled.
+ * 2. paused - Stream is currently user disabled and will not attempt log delivery.
+ * 3. suspended - Stream is currently disabled because of errors and will not attempt log delivery.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a log stream.
+ */
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Delete a log stream.
+ */
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Update a log stream.
+ *
Examples of how to use the PATCH endpoint.
The following fields may be updated in a PATCH operation:
name
status
sink
Note: For log streams of type eventbridge and eventgrid, updating the sink is not permitted.
+ *
Update the status of a log stream
{
+ * "status": "active|paused"
+ * }
+ *
Update the name of a log stream
{
+ * "name": "string"
+ * }
+ *
Update the sink properties of a stream of type http
page: Page index of the results to return. First page is 0.
+ *
per_page: Number of results per page.
+ *
sort: Field to use for sorting appended with `:1` for ascending and `:-1` for descending. e.g. `date:-1`
+ *
fields: Comma-separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields.
+ *
include_fields: Whether specified fields are to be included (true) or excluded (false).
+ *
include_totals: Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). Deprecated: this field is deprecated and should be removed from use. See Search Engine V3 Breaking Changes
+ *
+ *
For more information on the list of fields that can be used in fields and sort, see Searchable Fields.
+ *
Auth0 limits the number of logs you can return by search criteria to 100 logs per request. Furthermore, you may paginate only through 1,000 search results. If you exceed this threshold, please redefine your search or use the get logs by checkpoint method.
+ *
To search from a checkpoint log ID, use the following parameters:
+ *
+ *
from: Log Event ID from which to start retrieving logs. You can limit the number of logs returned using the take parameter. If you use from at the same time as q, from takes precedence and q is ignored.
+ *
take: Number of entries to retrieve when using the from parameter.
+ *
+ *
Important: When fetching logs from a checkpoint log ID, any parameter other than from and take will be ignored, and date ordering is not guaranteed.
+ */
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve log entries that match the specified search criteria (or all log entries if no criteria specified).
+ *
Set custom search criteria using the q parameter, or search from a specific log ID ("search from checkpoint").
+ *
For more information on all possible event types, their respective acronyms, and descriptions, see Log Event Type Codes.
+ *
To set custom search criteria, use the following parameters:
page: Page index of the results to return. First page is 0.
+ *
per_page: Number of results per page.
+ *
sort: Field to use for sorting appended with `:1` for ascending and `:-1` for descending. e.g. `date:-1`
+ *
fields: Comma-separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields.
+ *
include_fields: Whether specified fields are to be included (true) or excluded (false).
+ *
include_totals: Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). Deprecated: this field is deprecated and should be removed from use. See Search Engine V3 Breaking Changes
+ *
+ *
For more information on the list of fields that can be used in fields and sort, see Searchable Fields.
+ *
Auth0 limits the number of logs you can return by search criteria to 100 logs per request. Furthermore, you may paginate only through 1,000 search results. If you exceed this threshold, please redefine your search or use the get logs by checkpoint method.
+ *
To search from a checkpoint log ID, use the following parameters:
+ *
+ *
from: Log Event ID from which to start retrieving logs. You can limit the number of logs returned using the take parameter. If you use from at the same time as q, from takes precedence and q is ignored.
+ *
take: Number of entries to retrieve when using the from parameter.
+ *
+ *
Important: When fetching logs from a checkpoint log ID, any parameter other than from and take will be ignored, and date ordering is not guaranteed.
+ */
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve log entries that match the specified search criteria (or all log entries if no criteria specified).
+ *
Set custom search criteria using the q parameter, or search from a specific log ID ("search from checkpoint").
+ *
For more information on all possible event types, their respective acronyms, and descriptions, see Log Event Type Codes.
+ *
To set custom search criteria, use the following parameters:
page: Page index of the results to return. First page is 0.
+ *
per_page: Number of results per page.
+ *
sort: Field to use for sorting appended with `:1` for ascending and `:-1` for descending. e.g. `date:-1`
+ *
fields: Comma-separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields.
+ *
include_fields: Whether specified fields are to be included (true) or excluded (false).
+ *
include_totals: Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). Deprecated: this field is deprecated and should be removed from use. See Search Engine V3 Breaking Changes
+ *
+ *
For more information on the list of fields that can be used in fields and sort, see Searchable Fields.
+ *
Auth0 limits the number of logs you can return by search criteria to 100 logs per request. Furthermore, you may paginate only through 1,000 search results. If you exceed this threshold, please redefine your search or use the get logs by checkpoint method.
+ *
To search from a checkpoint log ID, use the following parameters:
+ *
+ *
from: Log Event ID from which to start retrieving logs. You can limit the number of logs returned using the take parameter. If you use from at the same time as q, from takes precedence and q is ignored.
+ *
take: Number of entries to retrieve when using the from parameter.
+ *
+ *
Important: When fetching logs from a checkpoint log ID, any parameter other than from and take will be ignored, and date ordering is not guaranteed.
+ */
+ public CompletableFuture> list(ListLogsRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve log entries that match the specified search criteria (or all log entries if no criteria specified).
+ *
Set custom search criteria using the q parameter, or search from a specific log ID ("search from checkpoint").
+ *
For more information on all possible event types, their respective acronyms, and descriptions, see Log Event Type Codes.
+ *
To set custom search criteria, use the following parameters:
page: Page index of the results to return. First page is 0.
+ *
per_page: Number of results per page.
+ *
sort: Field to use for sorting appended with `:1` for ascending and `:-1` for descending. e.g. `date:-1`
+ *
fields: Comma-separated list of fields to include or exclude (depending on include_fields) from the result, empty to retrieve all fields.
+ *
include_fields: Whether specified fields are to be included (true) or excluded (false).
+ *
include_totals: Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). Deprecated: this field is deprecated and should be removed from use. See Search Engine V3 Breaking Changes
+ *
+ *
For more information on the list of fields that can be used in fields and sort, see Searchable Fields.
+ *
Auth0 limits the number of logs you can return by search criteria to 100 logs per request. Furthermore, you may paginate only through 1,000 search results. If you exceed this threshold, please redefine your search or use the get logs by checkpoint method.
+ *
To search from a checkpoint log ID, use the following parameters:
+ *
+ *
from: Log Event ID from which to start retrieving logs. You can limit the number of logs returned using the take parameter. If you use from at the same time as q, from takes precedence and q is ignored.
+ *
take: Number of entries to retrieve when using the from parameter.
+ *
+ *
Important: When fetching logs from a checkpoint log ID, any parameter other than from and take will be ignored, and date ordering is not guaranteed.
+ */
+ public CompletableFuture> list(
+ ListLogsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve an individual log event.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve an individual log event.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncManagementApi.java b/src/main/java/com/auth0/client/mgmt/AsyncManagementApi.java
new file mode 100644
index 000000000..eb0f4e9e9
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncManagementApi.java
@@ -0,0 +1,329 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.anomaly.AsyncAnomalyClient;
+import com.auth0.client.mgmt.attackprotection.AsyncAttackProtectionClient;
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.Suppliers;
+import com.auth0.client.mgmt.emails.AsyncEmailsClient;
+import com.auth0.client.mgmt.guardian.AsyncGuardianClient;
+import com.auth0.client.mgmt.keys.AsyncKeysClient;
+import com.auth0.client.mgmt.riskassessments.AsyncRiskAssessmentsClient;
+import com.auth0.client.mgmt.tenants.AsyncTenantsClient;
+import com.auth0.client.mgmt.verifiablecredentials.AsyncVerifiableCredentialsClient;
+import java.util.function.Supplier;
+
+public class AsyncManagementApi {
+ protected final ClientOptions clientOptions;
+
+ protected final Supplier actionsClient;
+
+ protected final Supplier brandingClient;
+
+ protected final Supplier clientGrantsClient;
+
+ protected final Supplier clientsClient;
+
+ protected final Supplier connectionProfilesClient;
+
+ protected final Supplier connectionsClient;
+
+ protected final Supplier customDomainsClient;
+
+ protected final Supplier deviceCredentialsClient;
+
+ protected final Supplier emailTemplatesClient;
+
+ protected final Supplier eventStreamsClient;
+
+ protected final Supplier flowsClient;
+
+ protected final Supplier formsClient;
+
+ protected final Supplier userGrantsClient;
+
+ protected final Supplier groupsClient;
+
+ protected final Supplier hooksClient;
+
+ protected final Supplier jobsClient;
+
+ protected final Supplier logStreamsClient;
+
+ protected final Supplier logsClient;
+
+ protected final Supplier networkAclsClient;
+
+ protected final Supplier organizationsClient;
+
+ protected final Supplier promptsClient;
+
+ protected final Supplier refreshTokensClient;
+
+ protected final Supplier resourceServersClient;
+
+ protected final Supplier rolesClient;
+
+ protected final Supplier rulesClient;
+
+ protected final Supplier rulesConfigsClient;
+
+ protected final Supplier selfServiceProfilesClient;
+
+ protected final Supplier sessionsClient;
+
+ protected final Supplier statsClient;
+
+ protected final Supplier supplementalSignalsClient;
+
+ protected final Supplier ticketsClient;
+
+ protected final Supplier tokenExchangeProfilesClient;
+
+ protected final Supplier userAttributeProfilesClient;
+
+ protected final Supplier userBlocksClient;
+
+ protected final Supplier usersClient;
+
+ protected final Supplier anomalyClient;
+
+ protected final Supplier attackProtectionClient;
+
+ protected final Supplier emailsClient;
+
+ protected final Supplier guardianClient;
+
+ protected final Supplier keysClient;
+
+ protected final Supplier riskAssessmentsClient;
+
+ protected final Supplier tenantsClient;
+
+ protected final Supplier verifiableCredentialsClient;
+
+ public AsyncManagementApi(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.actionsClient = Suppliers.memoize(() -> new AsyncActionsClient(clientOptions));
+ this.brandingClient = Suppliers.memoize(() -> new AsyncBrandingClient(clientOptions));
+ this.clientGrantsClient = Suppliers.memoize(() -> new AsyncClientGrantsClient(clientOptions));
+ this.clientsClient = Suppliers.memoize(() -> new AsyncClientsClient(clientOptions));
+ this.connectionProfilesClient = Suppliers.memoize(() -> new AsyncConnectionProfilesClient(clientOptions));
+ this.connectionsClient = Suppliers.memoize(() -> new AsyncConnectionsClient(clientOptions));
+ this.customDomainsClient = Suppliers.memoize(() -> new AsyncCustomDomainsClient(clientOptions));
+ this.deviceCredentialsClient = Suppliers.memoize(() -> new AsyncDeviceCredentialsClient(clientOptions));
+ this.emailTemplatesClient = Suppliers.memoize(() -> new AsyncEmailTemplatesClient(clientOptions));
+ this.eventStreamsClient = Suppliers.memoize(() -> new AsyncEventStreamsClient(clientOptions));
+ this.flowsClient = Suppliers.memoize(() -> new AsyncFlowsClient(clientOptions));
+ this.formsClient = Suppliers.memoize(() -> new AsyncFormsClient(clientOptions));
+ this.userGrantsClient = Suppliers.memoize(() -> new AsyncUserGrantsClient(clientOptions));
+ this.groupsClient = Suppliers.memoize(() -> new AsyncGroupsClient(clientOptions));
+ this.hooksClient = Suppliers.memoize(() -> new AsyncHooksClient(clientOptions));
+ this.jobsClient = Suppliers.memoize(() -> new AsyncJobsClient(clientOptions));
+ this.logStreamsClient = Suppliers.memoize(() -> new AsyncLogStreamsClient(clientOptions));
+ this.logsClient = Suppliers.memoize(() -> new AsyncLogsClient(clientOptions));
+ this.networkAclsClient = Suppliers.memoize(() -> new AsyncNetworkAclsClient(clientOptions));
+ this.organizationsClient = Suppliers.memoize(() -> new AsyncOrganizationsClient(clientOptions));
+ this.promptsClient = Suppliers.memoize(() -> new AsyncPromptsClient(clientOptions));
+ this.refreshTokensClient = Suppliers.memoize(() -> new AsyncRefreshTokensClient(clientOptions));
+ this.resourceServersClient = Suppliers.memoize(() -> new AsyncResourceServersClient(clientOptions));
+ this.rolesClient = Suppliers.memoize(() -> new AsyncRolesClient(clientOptions));
+ this.rulesClient = Suppliers.memoize(() -> new AsyncRulesClient(clientOptions));
+ this.rulesConfigsClient = Suppliers.memoize(() -> new AsyncRulesConfigsClient(clientOptions));
+ this.selfServiceProfilesClient = Suppliers.memoize(() -> new AsyncSelfServiceProfilesClient(clientOptions));
+ this.sessionsClient = Suppliers.memoize(() -> new AsyncSessionsClient(clientOptions));
+ this.statsClient = Suppliers.memoize(() -> new AsyncStatsClient(clientOptions));
+ this.supplementalSignalsClient = Suppliers.memoize(() -> new AsyncSupplementalSignalsClient(clientOptions));
+ this.ticketsClient = Suppliers.memoize(() -> new AsyncTicketsClient(clientOptions));
+ this.tokenExchangeProfilesClient = Suppliers.memoize(() -> new AsyncTokenExchangeProfilesClient(clientOptions));
+ this.userAttributeProfilesClient = Suppliers.memoize(() -> new AsyncUserAttributeProfilesClient(clientOptions));
+ this.userBlocksClient = Suppliers.memoize(() -> new AsyncUserBlocksClient(clientOptions));
+ this.usersClient = Suppliers.memoize(() -> new AsyncUsersClient(clientOptions));
+ this.anomalyClient = Suppliers.memoize(() -> new AsyncAnomalyClient(clientOptions));
+ this.attackProtectionClient = Suppliers.memoize(() -> new AsyncAttackProtectionClient(clientOptions));
+ this.emailsClient = Suppliers.memoize(() -> new AsyncEmailsClient(clientOptions));
+ this.guardianClient = Suppliers.memoize(() -> new AsyncGuardianClient(clientOptions));
+ this.keysClient = Suppliers.memoize(() -> new AsyncKeysClient(clientOptions));
+ this.riskAssessmentsClient = Suppliers.memoize(() -> new AsyncRiskAssessmentsClient(clientOptions));
+ this.tenantsClient = Suppliers.memoize(() -> new AsyncTenantsClient(clientOptions));
+ this.verifiableCredentialsClient = Suppliers.memoize(() -> new AsyncVerifiableCredentialsClient(clientOptions));
+ }
+
+ public AsyncActionsClient actions() {
+ return this.actionsClient.get();
+ }
+
+ public AsyncBrandingClient branding() {
+ return this.brandingClient.get();
+ }
+
+ public AsyncClientGrantsClient clientGrants() {
+ return this.clientGrantsClient.get();
+ }
+
+ public AsyncClientsClient clients() {
+ return this.clientsClient.get();
+ }
+
+ public AsyncConnectionProfilesClient connectionProfiles() {
+ return this.connectionProfilesClient.get();
+ }
+
+ public AsyncConnectionsClient connections() {
+ return this.connectionsClient.get();
+ }
+
+ public AsyncCustomDomainsClient customDomains() {
+ return this.customDomainsClient.get();
+ }
+
+ public AsyncDeviceCredentialsClient deviceCredentials() {
+ return this.deviceCredentialsClient.get();
+ }
+
+ public AsyncEmailTemplatesClient emailTemplates() {
+ return this.emailTemplatesClient.get();
+ }
+
+ public AsyncEventStreamsClient eventStreams() {
+ return this.eventStreamsClient.get();
+ }
+
+ public AsyncFlowsClient flows() {
+ return this.flowsClient.get();
+ }
+
+ public AsyncFormsClient forms() {
+ return this.formsClient.get();
+ }
+
+ public AsyncUserGrantsClient userGrants() {
+ return this.userGrantsClient.get();
+ }
+
+ public AsyncGroupsClient groups() {
+ return this.groupsClient.get();
+ }
+
+ public AsyncHooksClient hooks() {
+ return this.hooksClient.get();
+ }
+
+ public AsyncJobsClient jobs() {
+ return this.jobsClient.get();
+ }
+
+ public AsyncLogStreamsClient logStreams() {
+ return this.logStreamsClient.get();
+ }
+
+ public AsyncLogsClient logs() {
+ return this.logsClient.get();
+ }
+
+ public AsyncNetworkAclsClient networkAcls() {
+ return this.networkAclsClient.get();
+ }
+
+ public AsyncOrganizationsClient organizations() {
+ return this.organizationsClient.get();
+ }
+
+ public AsyncPromptsClient prompts() {
+ return this.promptsClient.get();
+ }
+
+ public AsyncRefreshTokensClient refreshTokens() {
+ return this.refreshTokensClient.get();
+ }
+
+ public AsyncResourceServersClient resourceServers() {
+ return this.resourceServersClient.get();
+ }
+
+ public AsyncRolesClient roles() {
+ return this.rolesClient.get();
+ }
+
+ public AsyncRulesClient rules() {
+ return this.rulesClient.get();
+ }
+
+ public AsyncRulesConfigsClient rulesConfigs() {
+ return this.rulesConfigsClient.get();
+ }
+
+ public AsyncSelfServiceProfilesClient selfServiceProfiles() {
+ return this.selfServiceProfilesClient.get();
+ }
+
+ public AsyncSessionsClient sessions() {
+ return this.sessionsClient.get();
+ }
+
+ public AsyncStatsClient stats() {
+ return this.statsClient.get();
+ }
+
+ public AsyncSupplementalSignalsClient supplementalSignals() {
+ return this.supplementalSignalsClient.get();
+ }
+
+ public AsyncTicketsClient tickets() {
+ return this.ticketsClient.get();
+ }
+
+ public AsyncTokenExchangeProfilesClient tokenExchangeProfiles() {
+ return this.tokenExchangeProfilesClient.get();
+ }
+
+ public AsyncUserAttributeProfilesClient userAttributeProfiles() {
+ return this.userAttributeProfilesClient.get();
+ }
+
+ public AsyncUserBlocksClient userBlocks() {
+ return this.userBlocksClient.get();
+ }
+
+ public AsyncUsersClient users() {
+ return this.usersClient.get();
+ }
+
+ public AsyncAnomalyClient anomaly() {
+ return this.anomalyClient.get();
+ }
+
+ public AsyncAttackProtectionClient attackProtection() {
+ return this.attackProtectionClient.get();
+ }
+
+ public AsyncEmailsClient emails() {
+ return this.emailsClient.get();
+ }
+
+ public AsyncGuardianClient guardian() {
+ return this.guardianClient.get();
+ }
+
+ public AsyncKeysClient keys() {
+ return this.keysClient.get();
+ }
+
+ public AsyncRiskAssessmentsClient riskAssessments() {
+ return this.riskAssessmentsClient.get();
+ }
+
+ public AsyncTenantsClient tenants() {
+ return this.tenantsClient.get();
+ }
+
+ public AsyncVerifiableCredentialsClient verifiableCredentials() {
+ return this.verifiableCredentialsClient.get();
+ }
+
+ public static AsyncManagementApiBuilder builder() {
+ return new AsyncManagementApiBuilder();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncManagementApiBuilder.java b/src/main/java/com/auth0/client/mgmt/AsyncManagementApiBuilder.java
new file mode 100644
index 000000000..84e1bedd2
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncManagementApiBuilder.java
@@ -0,0 +1,217 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.Environment;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import okhttp3.OkHttpClient;
+
+public class AsyncManagementApiBuilder {
+ private Optional timeout = Optional.empty();
+
+ private Optional maxRetries = Optional.empty();
+
+ private final Map customHeaders = new HashMap<>();
+
+ private String token = null;
+
+ private Environment environment = Environment.DEFAULT;
+
+ private OkHttpClient httpClient;
+
+ private String tenantDomain;
+
+ /**
+ * Sets token
+ */
+ public AsyncManagementApiBuilder token(String token) {
+ this.token = token;
+ return this;
+ }
+
+ public AsyncManagementApiBuilder environment(Environment environment) {
+ this.environment = environment;
+ return this;
+ }
+
+ public AsyncManagementApiBuilder url(String url) {
+ this.environment = Environment.custom(url);
+ return this;
+ }
+
+ /**
+ * Sets the timeout (in seconds) for the client. Defaults to 60 seconds.
+ */
+ public AsyncManagementApiBuilder timeout(int timeout) {
+ this.timeout = Optional.of(timeout);
+ return this;
+ }
+
+ /**
+ * Sets the maximum number of retries for the client. Defaults to 2 retries.
+ */
+ public AsyncManagementApiBuilder maxRetries(int maxRetries) {
+ this.maxRetries = Optional.of(maxRetries);
+ return this;
+ }
+
+ /**
+ * Sets the underlying OkHttp client
+ */
+ public AsyncManagementApiBuilder httpClient(OkHttpClient httpClient) {
+ this.httpClient = httpClient;
+ return this;
+ }
+
+ /**
+ * Add a custom header to be sent with all requests.
+ * For headers that need to be computed dynamically or conditionally, use the setAdditional() method override instead.
+ *
+ * @param name The header name
+ * @param value The header value
+ * @return This builder for method chaining
+ */
+ public AsyncManagementApiBuilder addHeader(String name, String value) {
+ this.customHeaders.put(name, value);
+ return this;
+ }
+
+ public AsyncManagementApiBuilder tenantDomain(String tenantDomain) {
+ this.tenantDomain = tenantDomain;
+ return this;
+ }
+
+ protected ClientOptions buildClientOptions() {
+ ClientOptions.Builder builder = ClientOptions.builder();
+ setEnvironment(builder);
+ setAuthentication(builder);
+ setHttpClient(builder);
+ setTimeouts(builder);
+ setRetries(builder);
+ for (Map.Entry header : this.customHeaders.entrySet()) {
+ builder.addHeader(header.getKey(), header.getValue());
+ }
+ setAdditional(builder);
+ return builder.build();
+ }
+
+ /**
+ * Sets the environment configuration for the client.
+ * Override this method to modify URLs or add environment-specific logic.
+ *
+ * @param builder The ClientOptions.Builder to configure
+ */
+ protected void setEnvironment(ClientOptions.Builder builder) {
+ if (this.tenantDomain != null) {
+ String _tenantDomain = this.tenantDomain != null ? this.tenantDomain : "{TENANT}.auth0.com";
+ this.environment =
+ Environment.custom("https://{tenantDomain}/api/v2".replace("{tenantDomain}", _tenantDomain));
+ }
+ builder.environment(this.environment);
+ }
+
+ /**
+ * Override this method to customize authentication.
+ * This method is called during client options construction to set up authentication headers.
+ *
+ * @param builder The ClientOptions.Builder to configure
+ *
+ * Example:
+ *
+ */
+ protected void setAdditional(ClientOptions.Builder builder) {}
+
+ /**
+ * Override this method to add custom validation logic before the client is built.
+ * This method is called at the beginning of the build() method to ensure the configuration is valid.
+ * Throw an exception to prevent client creation if validation fails.
+ *
+ * Example:
+ *