> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lumos.com/llms.txt
> Use this file to discover all available pages before exploring further.

# JetBrains

## After this article

You'll be able to connect JetBrains to Lumos to sync users, teams, and licenses, and to manage license assignments.

## Capabilities

| Functionality | Type | Sync | Provision | Description |
| - | - | - | - | - |
| Users | Account | Yes | Yes | User accounts (provisioned by invite email) |
| Teams | Permission | Yes | No | Team profiles |
| Licenses | Permission | Yes | Yes | Licenses |

## Required plan and roles

* **Credentials:** an **API Token** and your **Customer Code**.
* **Accounts API:** the **Accounts API** must be enabled for your JetBrains Accounts.
* **Role:** the JetBrains Account API doesn't offer granular scopes, so the token grants access based on the token owner's role.
  * **Organization Admin** is the only role where everything works without caveats.
  * **Team Admin** works for read and write operations, but only for licenses and accounts within their team.
  * **Viewer** or **Primary Contact** works for all read operations.

## Read-only access vs provisioning

**Is read-only possible?** Yes. Since the Account API grants access based on the token owner's role rather than a chosen scope, generating the token from a **Viewer** or **Primary Contact** account produces a token that works for all read operations without provisioning access.

**What read-only requires.** An API Token generated by a user with the **Viewer** or **Primary Contact** role, then follow the steps below to connect.

**What full provisioning requires.** An API Token generated by an **Organization Admin** (everything works without caveats) or a **Team Admin** (read and write, but scoped to accounts and licenses within their team only).

**Watch out for.** Because the JetBrains Account API has no granular scopes, the token's access is entirely a function of the role of the person who generated it. There's no way to grant a narrower write scope than the token owner's own role, if you need broader provisioning coverage later, you have to regenerate the token under a more privileged role (Organization Admin for full coverage, since a Team Admin token is limited to its own team). Only users assigned a license are synced at all, regardless of token role.

## Instructions

**Phase 1: Connect in Lumos**

1. Find the JetBrains card in your Lumos integrations. Reconnect an existing card or add a new one.
2. Provide your **API Token** and **Customer Code**.
3. Click **Connect**.

Only users associated with licenses are shown.

**Why licenses come from the Account API.** This integration uses the JetBrains Account API, not the License Vault API, because the License Vault API doesn't carry the user information Lumos needs. As a result, the integration doesn't show licenses through the Vault, and it shows only users that are assigned licenses.

## API Endpoints Used

<Note>
  The API endpoints this integration uses are available to logged-in Lumos customers. [Log in](/login) to view them.
</Note>

## Troubleshooting

**Can't connect the integration.** Confirm the Accounts API is enabled for your JetBrains Accounts, and that the API Token and Customer Code are correct.

**Some accounts or licenses are missing.** The token's access follows the owner's role. A Team Admin token covers only licenses and accounts within their team, and only users assigned a license appear at all. Use an Organization Admin token for full coverage.

**License sync fails with 429 "Too many requests".** The connector's rate limiting was adjusted with throttle and backoff on the license sync, so a 429 no longer stops the full sync from completing. If you still see it, let the sync retry.
