IDE Services 2024.4 Help

2024.3 General Availability

  • IDE Services Core

    • Rebranding from Toolbox Enterprise to JetBrains IDE Services

    • Introduced HELM charts for Kubernetes deployment.

    • Separated free functionality from IDE Provisioner. It is now possible to manage the Toolbox App settings and selected plugins with IDE Provisioner disabled.

  • IDE Provisioner

    • Added a New Settings Controller for better management of IDE settings.

  • AI Enterprise

    • Introduced AI Enterprise, a new product of the JetBrains IDE Services suite.

  • Web UI

    • Implemented usage limits for all IDE Services products (for the pay-as-you-go billing model.)

    • Implemented the functionality for enabling and disabling IDE Services products on the profile level.

API changes

  • GET /api/configs:

    • Breaking change! Removed the required property 'codeWithMe' from the response with the '200' status

  • PATCH /api/configs: Breaking change! removed the endpoint.

  • GET /api/constituents:

    • Breaking change! Removed the required property 'ai' from the response with the '200' status

    • Breaking change! Removed the required property 'cwm' from the response with the '200' status

    • Breaking change! Removed the required property 'idep' from the response with the '200' status

    • The response property 'items' became required for the status '200'

    • Added the required property 'items' to the response with the '200' status

  • GET /api/constituents/ai:

    • Breaking change! Removed the required property 'id' from the response with the '200' status

    • Breaking change! Removed the required property 'url' from the response with the '200' status

    • Added the optional property 'assignedUsersLimit' to the response with the '200' status

    • The response property 'activeIdeProfilesCount' became required for the status '200'

    • The response property 'activeUsersCount' became required for the status '200'

    • The response property 'disabledByLimitsUsersCount' became required for the status '200'

    • The response property 'provider' became required for the status '200'

    • Added the required property 'activeIdeProfilesCount' to the response with the '200' status

    • Added the required property 'activeUsersCount' to the response with the '200' status

    • Added the required property 'disabledByLimitsUsersCount' to the response with the '200' status

    • Added the required property 'provider' to the response with the '200' status

  • POST /api/constituents/ai:

    • Breaking change! Added the new required request property 'provider'

    • Breaking change! Removed the required property 'id' from the response with the '200' status

    • Breaking change! Removed the required property 'id' from the response with the '403' status

    • Breaking change! Removed the required property 'url' from the response with the '200' status

    • Breaking change! Removed the required property 'url' from the response with the '403' status

    • Breaking change! Removed the request property 'url'

    • Added the new optional request property 'assignedUsersLimit'

    • Added the optional property 'assignedUsersLimit' to the response with the '200' status

    • Added the optional property 'assignedUsersLimit' to the response with the '403' status

    • The response property 'activeIdeProfilesCount' became required for the status '200'

    • The response property 'activeIdeProfilesCount' became required for the status '403'

    • The response property 'activeUsersCount' became required for the status '200'

    • The response property 'activeUsersCount' became required for the status '403'

    • The response property 'disabledByLimitsUsersCount' became required for the status '200'

    • The response property 'disabledByLimitsUsersCount' became required for the status '403'

    • The response property 'provider' became required for the status '200'

    • The response property 'provider' became required for the status '403'

    • Added the required property 'activeIdeProfilesCount' to the response with the '200' status

    • Added the required property 'activeIdeProfilesCount' to the response with the '403' status

    • Added the required property 'activeUsersCount' to the response with the '200' status

    • Added the required property 'activeUsersCount' to the response with the '403' status

    • Added the required property 'disabledByLimitsUsersCount' to the response with the '200' status

    • Added the required property 'disabledByLimitsUsersCount' to the response with the '403' status

    • Added the required property 'provider' to the response with the '200' status

    • Added the required property 'provider' to the response with the '403' status

  • PUT /api/constituents/ai:

    • Breaking change! Added the new required request property 'provider'

    • Breaking change! Removed the required property 'id' from the response with the '200' status

    • Breaking change! Removed the required property 'url' from the response with the '200' status

    • Breaking change! Removed the request property 'url'

    • Added the new optional request property 'assignedUsersLimit'

    • Added the optional property 'assignedUsersLimit' to the response with the '200' status

    • The response property 'activeIdeProfilesCount' became required for the status '200'

    • The response property 'activeUsersCount' became required for the status '200'

    • The response property 'disabledByLimitsUsersCount' became required for the status '200'

    • The response property 'provider' became required for the status '200'

    • Added the required property 'activeIdeProfilesCount' to the response with the '200' status

    • Added the required property 'activeUsersCount' to the response with the '200' status

    • Added the required property 'disabledByLimitsUsersCount' to the response with the '200' status

    • Added the required property 'provider' to the response with the '200' status

  • POST /api/constituents/cwm:

    • The request property 'concurrentHostsLimit' became optional

  • PUT /api/constituents/cwm:

    • The request property 'concurrentHostsLimit' became optional

  • DELETE /api/constituents/idep:

    • Breaking change! Removed the media type 'application/json' for the response with the status '200'

    • Breaking change! Removed the media type 'application/json' for the response with the status '403'

  • GET /api/constituents/idep:

    • Breaking change! Removed the media type 'application/json' for the response with the status '403'

    • Breaking change! Removed the media type 'application/json' for the response with the status '404'

    • The response property 'activeUsersCount' became required for the status '200'

    • The response property 'disabledByLimitsUsersCount' became required for the status '200'

    • Added the required property 'activeUsersCount' to the response with the '200' status

    • Added the required property 'disabledByLimitsUsersCount' to the response with the '200' status

  • POST /api/constituents/idep:

    • Breaking change! Removed the media type '/' for the response with the status '403'

    • Breaking change! Removed the media type 'application/json' for the response with the status '400'

    • Breaking change! Removed the media type 'application/json' for the response with the status '409'

    • The request property 'assignedUsersLimit' became optional

    • The response property 'activeUsersCount' became required for the status '200'

    • The response property 'disabledByLimitsUsersCount' became required for the status '200'

    • Added the required property 'activeUsersCount' to the response with the '200' status

    • Added the required property 'disabledByLimitsUsersCount' to the response with the '200' status

  • PUT /api/constituents/idep:

    • Breaking change! Removed the media type 'application/json' for the response with the status '403'

    • Breaking change! Removed the media type 'application/json' for the response with the status '404'

    • The request property 'assignedUsersLimit' became optional

    • The response property 'activeUsersCount' became required for the status '200'

    • The response property 'disabledByLimitsUsersCount' became required for the status '200'

    • Added the required property 'activeUsersCount' to the response with the '200' status

    • Added the required property 'disabledByLimitsUsersCount' to the response with the '200' status

  • DELETE /api/constituents/lv: added the endpoint.

  • GET /api/constituents/lv:

    • Added the non-success response with the status '404'

  • POST /api/constituents/lv: added the endpoint.

  • GET /api/debug/stream: added the endpoint.

  • GET /api/feed-filters/products: Breaking change! removed the endpoint.

  • GET /api/feed-filters/{id}/products: added the endpoint.

  • POST /api/idp/sync-status: added the endpoint.

  • GET /api/ij-plugins: Breaking change! This API has been deprecated.

  • GET /api/ij-plugins-extras/all-channels: Breaking change! This API has been deprecated.

  • GET /api/ij-plugins-extras/audit-logs: Breaking change! This API has been deprecated.

  • DELETE /api/ij-plugins/{pluginId}: Breaking change! This API has been deprecated.

  • GET /api/ij-plugins/{pluginId}: Breaking change! This API has been deprecated.

  • PATCH /api/ij-plugins/{pluginId}: Breaking change! This API has been deprecated.

  • GET /api/license:

    • Breaking change! The response property 'isServerKeyValid' became optional for the status '200'

    • Breaking change! Removed the required property 'isLicenseExpiredButCorrect' from the response with the '200' status

    • Breaking change! Removed the required property 'isLicenseValid' from the response with the '200' status

    • Breaking change! Removed the required property 'licenseId' from the response with the '200' status

    • Breaking change! Removed the required property 'licenseKey' from the response with the '200' status

    • Added the optional property 'activatedBy' to the response with the '200' status

    • Added the optional property 'activationDate' to the response with the '200' status

    • Added the optional property 'expirationDate' to the response with the '200' status

    • Added the optional property 'id' to the response with the '200' status

    • Added the optional property 'key' to the response with the '200' status

    • Added the optional property 'lastRefreshedDate' to the response with the '200' status

    • Added the optional property 'plan' to the response with the '200' status

    • Added the optional property 'status' to the response with the '200' status

    • The response property 'isValid' became required for the status '200'

    • The response property 'jbaUrl' became required for the status '200'

    • Added the required property 'isValid' to the response with the '200' status

    • Added the required property 'jbaUrl' to the response with the '200' status

  • POST /api/license:

    • Breaking change! The response property 'isServerKeyValid' became optional for the status '200'

    • Breaking change! Removed the required property 'isLicenseExpiredButCorrect' from the response with the '200' status

    • Breaking change! Removed the required property 'isLicenseValid' from the response with the '200' status

    • Breaking change! Removed the required property 'licenseId' from the response with the '200' status

    • Breaking change! Removed the required property 'licenseKey' from the response with the '200' status

    • Added the optional property 'activatedBy' to the response with the '200' status

    • Added the optional property 'activationDate' to the response with the '200' status

    • Added the optional property 'expirationDate' to the response with the '200' status

    • Added the optional property 'id' to the response with the '200' status

    • Added the optional property 'key' to the response with the '200' status

    • Added the optional property 'lastRefreshedDate' to the response with the '200' status

    • Added the optional property 'plan' to the response with the '200' status

    • Added the optional property 'status' to the response with the '200' status

    • The response property 'isValid' became required for the status '200'

    • The response property 'jbaUrl' became required for the status '200'

    • Added the required property 'isValid' to the response with the '200' status

    • Added the required property 'jbaUrl' to the response with the '200' status

  • POST /api/license/sync: added the endpoint.

  • GET /api/login/authenticated: added the endpoint.

  • GET /api/machine-config:

    • The response property 'proxyRequired' became required for the status '200'

    • Added the required property 'proxyRequired' to the response with the '200' status

  • PATCH /api/machine-config:

    • The response property 'proxyRequired' became required for the status '200'

    • Added the required property 'proxyRequired' to the response with the '200' status

  • GET /api/metrics: added the endpoint.

  • GET /api/plugin-repository:

    • Added the new optional 'query' request parameter 'channel[]'

  • GET /api/plugins:

    • Breaking change! Deleted the 'query' request parameter 'private'

  • GET /api/profiles/schema.json: Breaking change! removed the endpoint.

  • GET /api/profiles/{profileId}/groups:

    • Added the new optional 'query' request parameter 'order'

    • Added the new optional 'query' request parameter 'sort'

  • GET /api/profiles/{profileId}/users:

    • Added the required property 'items/items/constituents' to the response with the '200' status

    • Added the required property 'items/items/isAssignedDirectly' to the response with the '200' status

  • DELETE /api/transparency/agreement: added the endpoint.

  • GET /api/transparency/agreement:

    • The response property 'isDefault' became required for the status '200'

    • Added the required property 'isDefault' to the response with the '200' status

  • POST /api/transparency/agreement:

    • The response property 'isDefault' became required for the status '200'

    • Added the required property 'isDefault' to the response with the '200' status

  • POST /api/transparency/agreement/upload:

    • The response property 'isDefault' became required for the status '200'

    • Added the required property 'isDefault' to the response with the '200' status

  • GET /api/usage-stats/events-stats-ai-last:

    • The response property 'value' became required for the status '200'

    • Added the required property 'value' to the response with the '200' status

  • GET /api/usage-stats/events-stats-cwm-last:

    • The response property 'value' became required for the status '200'

    • Added the required property 'value' to the response with the '200' status

  • GET /api/usage-stats/events-stats-ide: Breaking change! removed the endpoint.

  • GET /api/usage-stats/events-stats-ide-last: Breaking change! removed the endpoint.

  • GET /api/usage-stats/events-stats-idep: added the endpoint.

  • GET /api/usage-stats/events-stats-idep-last: added the endpoint.

  • GET /api/users:

    • Added the new optional 'query' request parameter 'filter-constituent'

    • Added the required property 'items/items/constituents' to the response with the '200' status

  • POST /api/users:

    • Added the required property 'profiles/items/isAssignedDirectly' to the response with the '200' status

  • GET /api/users/{id}:

    • Added the required property 'profiles/items/isAssignedDirectly' to the response with the '200' status

  • PATCH /api/users/{id}:

    • Added the required property 'profiles/items/isAssignedDirectly' to the response with the '200' status

  • PUT /api/users/{id}:

    • Added the required property 'profiles/items/isAssignedDirectly' to the response with the '200' status

  • DELETE /api/users/{id}/tokens: added the endpoint.

  • GET /api/users/{userId}/profiles:

    • Added the required property 'items/items/isAssignedDirectly' to the response with the '200' status

Last modified: 16 July 2024