2024.4
Web UI
Revamped the IDE Services dashboard.
Updated the Aggregated Settings tab on the User details page.
Updated the Automation Tokens tab on the Configuration page.
Added change history pages for users, licenses, and plugins.
Implemented a number of minor improvements to enhance the look and feel of the IDE Services Web UI.
Profiles
Added a setting to restrict access to JetBrains Marketplace.
AI Enterprise
Implemented the functionality for configuring multiple AI providers on the server. For more details, refer to Use your own AI provider.
Added an option to choose the default AI provider on a profile level.
API Changes
GET /api/authentication: Added the endpointGET /api/authentication/identity-providers: Added the endpointGET /api/automation-tokens:Added the new optional
queryrequest parameterstateAdded the required property
/items/stateto the response with the200status
POST /api/automation-tokens: Added the required propertystateto the response with the200statusDELETE /api/automation-tokens/{id}:Added the optional property
expireDateto the response with the200statusAdded the optional property
lastModifiedByto the response with the200statusAdded the optional property
lastModifiedDateto the response with the200statusAdded the required property
clientIdto the response with the200statusAdded the required property
createdByto the response with the200statusAdded the required property
createdDateto the response with the200statusAdded the required property
idto the response with the200statusAdded the required property
isExpiredto the response with the200statusAdded the required property
stateto the response with the200statusAdded the required property
versionto the response with the200status
GET /api/automation-tokens/{id}: Added the required propertystateto the response with the200statusPATCH /api/automation-tokens/{id}: Added the required propertystateto the response with the200statusGET /api/constituents/ai:Added the optional property
provider/jetbrains/enableCloneFinderto the response with the200statusAdded the required property
allowDataCollectionto the response with the200statusAdded the required property
availableProvidersto the response with the200statusAdded the required property
defaultProviderto the response with the200status
POST /api/constituents/ai:Added the new optional request property
allowDataCollectionAdded the new optional request property
defaultProviderAdded the new optional request property
provider/jetbrains/enableCloneFinderAdded the new
jetbrainsenum value to the request propertyprovider/jetbrains/idAdded the new
jetbrainsenum value to the request propertyprovider/openai/idAdded the new
openaienum value to the request propertyprovider/jetbrains/idAdded the new
openaienum value to the request propertyprovider/openai/idAdded the optional property
provider/jetbrains/enableCloneFinderto the response with the200statusAdded the required property
allowDataCollectionto the response with the200statusAdded the required property
availableProvidersto the response with the200statusAdded the required property
defaultProviderto the response with the200status
PUT /api/constituents/ai:Added the new optional request property
allowDataCollectionAdded the new optional request property
defaultProviderAdded the new optional request property
provider/jetbrains/enableCloneFinderAdded the new
jetbrainsenum value to the request propertyprovider/jetbrains/idAdded the new
jetbrainsenum value to the request propertyprovider/openai/idAdded the new
openaienum value to the request propertyprovider/jetbrains/idAdded the new
openaienum value to the request propertyprovider/openai/idAdded the optional property
provider/jetbrains/enableCloneFinderto the response with the200statusAdded the required property
allowDataCollectionto the response with the200statusAdded the required property
availableProvidersto the response with the200statusAdded the required property
defaultProviderto the response with the200status
DELETE /api/constituents/ai/providers/{providerId}: Added the endpoint.GET /api/constituents/ai/providers/{providerId}: Added the endpoint.GET /api/constituents/cwm: Added the required propertyactiveUsersto the response with the200statusPOST /api/constituents/cwm: Added the required propertyactiveUsersto the response with the200statusPUT /api/constituents/cwm: Added the required propertyactiveUsersto the response with the200statusPOST /api/idp/sync-status: Added the required propertysyncTypeto the response with the200statusGET /api/license:Breaking change! Removed the required property
activatedBy/rolefrom the response with the200statusBreaking change! Removed the required property
activatedBy/usernamefrom the response with the200statusAdded the required property
activatedBy/nameto the response with the200statusAdded the required property
activatedBy/typeto the response with the200statusAdded the required property
constituentsto the response with the200status
POST /api/license:Breaking change! Removed the required property
activatedBy/rolefrom the response with the200statusBreaking change! Removed the required property
activatedBy/usernamefrom the response with the200statusAdded the required property
activatedBy/nameto the response with the200statusAdded the required property
activatedBy/typeto the response with the200statusAdded the required property
constituentsto the response with the200status
GET /api/license/audit-logs:Breaking change! Removed the required property
items/items/author/rolefrom the response with the200statusBreaking change! Removed the required property
items/items/author/usernamefrom the response with the200statusAdded the required property
items/items/author/nameto the response with the200statusAdded the required property
items/items/author/typeto the response with the200status
GET /api/plugins-audit-logs:Added the optional property
items/items/createdBy/emailto the response with the200statusAdded the required property
items/items/createdBy/idto the response with the200statusAdded the required property
items/items/createdBy/isActiveto the response with the200statusAdded the required property
items/items/createdBy/nameto the response with the200statusAdded the required property
items/items/createdBy/typeto the response with the200status
GET /api/profiles/{profileId}/audit-logs:Breaking change! Removed the required property
items/items/author/rolefrom the response with the200statusBreaking change! Removed the required property
items/items/author/usernamefrom the response with the200statusBreaking change! Added the new
MARKETPLACE_SETTINGenum value to theitems/items/typeresponse property for the response status200Added the new optional
queryrequest parameterlimitAdded the new optional
queryrequest parameteroffsetAdded the new optional
queryrequest parameterorderAdded the new optional
queryrequest parameterpageAdded the new optional
queryrequest parametersortAdded the new enum value
MARKETPLACE_SETTINGto thequeryrequest parametertypeAdded the required property
items/items/author/nameto the response with the200statusAdded the required property
items/items/author/typeto the response with the200status
GET /api/profiles/{profileId}/audit-logs/{eventId}:Added the required property
author/nameto the response with the200statusAdded the required property
author/typeto the response with the200status
POST /api/tools/settings:Added the new optional
headerrequest parameterX-IDES-USER-EMAILAdded the new optional
headerrequest parameterX-IDES-USER-IDAdded the new optional
headerrequest parameterX-IDES-USER-SUBJECT
POST /api/tools/settings/ide-configuration:Added the new optional
headerrequest parameterX-IDES-USER-EMAILAdded the new optional
headerrequest parameterX-IDES-USER-IDAdded the new optional
headerrequest parameterX-IDES-USER-SUBJECT
GET /api/users: Added the required propertyitems/items/isReadOnlyto the response with the200statusPOST /api/users:Added the required property
constituentsto the response with the200statusAdded the required property
isReadOnlyto the response with the200status
GET /api/users/{id}:Added the required property
constituentsto the response with the200statusAdded the required property
isReadOnlyto the response with the200status
PATCH /api/users/{id}:Added the required property
constituentsto the response with the200statusAdded the required property
isReadOnlyto the response with the200status
PUT /api/users/{id}:Added the required property
constituentsto the response with the200statusAdded the required property
isReadOnlyto the response with the200status
GET /api/users/{userId}/audit-logs: Added the endpointGET /api/users/{userId}/products:Added the required property
items/items/appTypeto the response with the200statusAdded the required property
items/items/availableBuildsto the response with the200statusAdded the required property
items/items/unavailableBuildsto the response with the200status
GET /api/users/{userId}/settings: Added the endpoint