Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
2dfb7b7
Enhance the consistency, usability, maintainability, and overall deve…
Impertatore Apr 1, 2025
cc16257
Remove redundant plugins folder - inherited from Studio team.
Impertatore Apr 1, 2025
f2541f8
Resolve bug in redirecting to the landing page https://developers.rws…
Impertatore Apr 3, 2025
3f9bf27
Use dotnet to install docfx - resolves dependencies automatically
Impertatore Apr 8, 2025
c87735d
updated to newer version of docs and contracts
rpascalsdl Oct 6, 2025
263d371
Update API documentation links and add scripts for link conversion
rpascalsdl Oct 7, 2025
d71e85b
Fix webhook documentation links and add scripts for converting contra…
rpascalsdl Nov 4, 2025
38cc86f
Push new branch
mdipsan Nov 4, 2025
57e0ee9
Merge branch 'main' into main_extensibility_docs_improvements
mdipsan Nov 4, 2025
ec15493
Some fixes after the merging from main
mdipsan Nov 4, 2025
48ff180
Update extensibility docs
mdipsan Nov 4, 2025
ad4fd96
Update extensibility doc links to contract
mdipsan Nov 4, 2025
4aa7f8c
Fix old broken linkds
mdipsan Nov 4, 2025
9454f24
Open extensibility API spec directly in fullscreen
mdipsan Nov 4, 2025
13e3d62
Fix extensibility API internal links
mdipsan Nov 4, 2025
9c998b1
Revert navbar search icon placement and clean up CSS after merge from…
mdipsan Nov 5, 2025
5590375
Revert favicon
mdipsan Nov 5, 2025
6ff2b33
Remove scripts for converting contract and reference links in markdow…
mdipsan Nov 5, 2025
783b9ce
Update style for Extensibility notes
mdipsan Nov 6, 2025
3d04b15
Fix broken link to BCM Fragment
mdipsan Nov 6, 2025
3a144ab
Merge branch 'main' into main_extensibility_docs_improvements
rtritean Nov 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
950 changes: 70 additions & 880 deletions articles/Extensibility/api/Extensibility-API.v1.json

Large diffs are not rendered by default.

21 changes: 17 additions & 4 deletions articles/Extensibility/docs/Whats-New.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# What's New

## July 2025

- We've expanded support for custom tabs to additional [locations](../docs/development/UI-App-custom-elements-locations.md). You can now use them in the following views:
- tasks list
- orders list
- projects list
- reports list

## April 2025

- To facilitate the management of large translation requests, batching support has been added for MT provider apps. This update includes the introduction of a new parameter, `extensions.configuration.segmentBatchSize`, which can be added to your [descriptor](../api/Extensibility-API.v1-fv.html#/operations/descriptor), along with a new error response featuring status code [413](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/413) on the translation [endpoint](../api/Extensibility-API.v1-fv.html#/operations/MachineTranslationProviderTranslateBCM).
- A new option has been introduced on the app registration [page](../docs/appManagement/Registering.md), allowing users to designate their app for development purposes by selecting a checkbox.

## December 2024
- We have officially rebranded from RWS Language Cloud API to Trados Cloud Platform API. All references to our previous brand name will now reflect our new identity, Trados.

Expand All @@ -12,7 +25,7 @@
- With this release we deliver a new extension point designed to allow developers to extend and customize the UI elements of our platform. This extension point is being released as BETA. For more details see this [page](../docs/development/UI-App-development-guide.md).
- We unified the Preview documentation pages into a single comprehensive [page](../docs/development/Preview-App-development-guide.md). We have introduced a new version, known as V2, of our Preview APIs.
- We extended the information available under Verification Provider [page](../docs/development/Verification-App-development-guide.md). We have introduced a new version, known as V2, of our Verification APIs.
- You can now add comments to [Submit Task Outcome](../App-API.v1.json/paths/~1external-job~1v1~1callback/post) for the automatic task extensions.
- You can now add comments to [Submit Task Outcome](../api/Extensibility-API.v1-fv.html#/operations/automatiktasktypecallback) for the automatic task extensions.

## June 2024
- With this release, we have migrated from the Add-Ons concept to Apps. This significant first step sets the stage for expanding this concept to multiple areas that facilitate integrations.
Expand All @@ -25,20 +38,20 @@


## August 2023
- With this release we introduced a folder identifier where the translation engines will be added. This can be used to filter the [engines](../App-API.v1.json/paths/~1lc.mtprovider.engines/get) by folder.
- With this release we introduced a folder identifier where the translation engines will be added. This can be used to filter the [engines](../api/Extensibility-API.v1-fv.html#/operations/GetMachineTranslationProviderEngines) by folder.
- We also added recommendations on [best practices](../docs/development/Tehnical-Requirements-And-Best-Practices.md) for a secure application development.
- We made additional smaller improvements and corrections to our documentation.

## April 2023
- We added details for the `engineId`, `projectId`, `sourceFileId` and `targetFileId` parameters of the [Translate](../App-API.v1.json/paths/~1lc.mtprovider.translate/post) endpoint.
- We added details for the `engineId`, `projectId`, `sourceFileId` and `targetFileId` parameters of the [Translate](../api/Extensibility-API.v1-fv.html#/operations/MachineTranslationProviderTranslateBCM) endpoint.
- We updated the [Registering the app](../docs/appManagement/Registering.md) page.


## February 2023
- We introduced requirements that become mandatory for all future apps, namely: acceptance of Terms & Conditions and the Privacy Policy, along with the provisioning of the app's release notes, documentation link and the developer's contact details, starting with descriptor version `1.3`.
- We published newer blueprints for both Java and .NET.
- We made available headers for developers to implement custom functionality based on the current version of the installed apps: `appVersion`, `extensionPointVersion` and `extensionId`.
- Added `projectId`, `sourceFileId` and `targetFileId` on the [translate](../App-API.v1.json/paths/~1lc.mtprovider.translate/post) request.
- Added `projectId`, `sourceFileId` and `targetFileId` on the [translate](../api/Extensibility-API.v1-fv.html#/operations/MachineTranslationProviderTranslateBCM) request.

## January 2023
- We published new pages with our recommendations for implementing Dynamic Preview.
Expand Down
2 changes: 2 additions & 0 deletions articles/Extensibility/docs/appManagement/Approvals.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ focus: false
-->
![Comment](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/app-management/Comment.gif?raw=true)

> [!NOTE]
> This is not a live chat, and you should refresh to check for replies. However, you don't need to keep an eye on it always, as we have email notifications in place for both roles: the developer and the support team member.

The comments panel is also used to track the **approval requests**. These requests can only be triggered by the app's developer in one of the following scenarios:
Expand All @@ -37,6 +38,7 @@ The **Approval Process** ends with one of the following:
1. The request is **approved** or **rejected** by the RWS Support team.
2. The request is **canceled** by the developer.

> [!NOTE]
> During the Approval Process you can still use your app as usual.

## App Suspended
Expand Down
5 changes: 3 additions & 2 deletions articles/Extensibility/docs/appManagement/Installing.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ After the app is successfully registered, you can proceed to install it. The ins

To install the app you need to:
1. Find your app in the **My Apps** tab and select the **Install** button.
2. When prompted with a form containing placeholders for the account settings details, remember that these are the configuration settings exposed through the [descriptor](../../App-API.v1.json/paths/~1descriptor/get). All mandatory fields will be marked with '*'.
2. When prompted with a form containing placeholders for the account settings details, remember that these are the configuration settings exposed through the [descriptor](../../api/Extensibility-API.v1-fv.html#/operations/descriptor). All mandatory fields will be marked with '*'.
3. Pay attention if the app advertises any [scopes](../../docs/development/Authentication-Overview.md), you will be notified by the installation form.

<!--
Expand All @@ -18,11 +18,12 @@ focus: false
![ScopesInstallForm](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/ScopesInstallv2.png?raw=true)

4. Fill in the fields and select **Complete**.
5. If the app supports validation of settings, it will be automatically performed at installation time via the [validation endpoint](../../App-API.v1.json/paths/~1configuration~1validation/post).
5. If the app supports validation of settings, it will be automatically performed at installation time via the [validation endpoint](../../api/Extensibility-API.v1-fv.html#/operations/ValidateConfigurationSettings).

<!--
focus: false
-->
![Install](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/app-management/InstallApp.gif?raw=true)

> [!NOTE]
> The configuration settings can be modified anytime by clicking the **Edit App Configuration** button.
1 change: 1 addition & 0 deletions articles/Extensibility/docs/appManagement/Publishing.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@ focus: false
-->
![Publish](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/app-management/Publish.gif?raw=true)

> [!NOTE]
> Publishing a private app will always publish its latest version.
7 changes: 4 additions & 3 deletions articles/Extensibility/docs/appManagement/Registering.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,14 @@ focus: false

2. Go to **My Apps** tab, select **New App** and provide the following details:
- the *Development Name* and *Development Description*, which will only be visible to the developer tenant (do not confuse them with the name and the description of the app descriptor)
- the *App Descriptor URL* is the app's [descriptor](../../App-API.v1.json/paths/~1descriptor/get) address. This must be a secure URL.
- the *App Descriptor URL* is the app's [descriptor](../../api/Extensibility-API.v1-fv.html#/operations/descriptor) address. This must be a secure URL.
- the *Development App* checkbox represents whether your app is intended for development and testing purposes. Development apps cannot be published.
3. After filling in these fields, finish the registration by clicking the **Register** button.

<!--
focus: false
-->
![Register](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/app-management/RegisterApp.gif?raw=true)
![Register](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/app-management/RegisterAppDevCheckbox.gif?raw=true)

Common issues that may occur during registration include:

Expand All @@ -32,4 +33,4 @@ Issue | Fix suggestion
Invalid Descriptor URL | Make sure the provided URL is formed correctly and it points to your descriptor endpoint.
Incorrect `BaseUrl` | If you are using one of our blueprints, check the blueprint guides ([.NET](../development/blueprints/Dot-Net-Blueprint.md#appsettingsjson) or [Java](../development/blueprints/Java-Blueprint.md#applicationyml)) on how to set up the `BaseUrl` field.
Already registered | This would normally occur if you already registered your app. If so, you can [unregister](./Retiring.md) the old version and perform the registration once again.
Descriptor does not comply with the [contract](../../App-API.v1.json/paths/~1descriptor/get) | Make sure the required fields are returned and the allowed values correspond to the ones from the contract.
Descriptor does not comply with the [contract](../../api/Extensibility-API.v1-fv.html#/operations/descriptor) | Make sure the required fields are returned and the allowed values correspond to the ones from the contract.
1 change: 1 addition & 0 deletions articles/Extensibility/docs/appManagement/Retiring.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ focus: false

After the app becomes private, the only active instances left should be the developer's one and the shared ones (if the app had been previously shared). You can either uninstall them manually or unregister the app directly. The second option will automatically uninstall the instances left, before removing the app.

> [!NOTE]
> An app can only be deleted when there are no other installed instances.

To unregister the app, you need to:
Expand Down
3 changes: 3 additions & 0 deletions articles/Extensibility/docs/appManagement/Sharing.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ stoplight-id: ruuiy7dsn27on
# Sharing the App
By default, a newly registered app is private, meaning that only the developer tenant has access to it. However, you can share your app with other tenants even if it hasn't been published yet.

A private version of a public app can also be shared prior to its publication. Please note that once the app is published, the Share button will no longer be visible.

To share the app you need to:
1. Test that it works as expected.
2. Select your app from the **My Apps** tab and click the **Share** button.
Expand All @@ -16,4 +18,5 @@ focus: false
-->
![Share](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/app-management/Share.gif?raw=true)

> [!NOTE]
> The number of sharing links and shared installed instances is restricted by the sharing benefit quota from your account subscription.
2 changes: 1 addition & 1 deletion articles/Extensibility/docs/appManagement/Updating.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ stoplight-id: b7cdff09ad767
There might be times when you need to make changes to your app. Whether you want to fix bugs, correct flaws, or add new functionality, the changes should eventually reach your registered app instance. That's why RWS Trados supports app versioning.

To update the app you need to:
1. Increment the `version` field in the app's [descriptor](../../App-API.v1.json/paths/~1descriptor/get), as Trados relies on it to detect the newer versions.
1. Increment the `version` field in the app's [descriptor](../../api/Extensibility-API.v1-fv.html#/operations/descriptor), as Trados relies on it to detect the newer versions.
2. Wait for Trados to detect the new version. It could take up to 2 minutes to detect it.
3. You should also receive an email notification informing you that there's a new app version available.
4. Check the new version on the app details page. If you don't see it, please contact our support team.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ To benefit from the app's functionality, you first have to install it on your ac

Some apps also support validation of the configured settings. The first validation is automatically performed at installation time. If the provided settings are invalid, you will be prompted with an error message letting you know that the settings are incorrect.

> [!NOTE]
> The configuration settings can be modified at any time by clicking the **Edit App Configuration** button.

## Using the Automatic Task App
Expand All @@ -59,6 +60,7 @@ To use the app's automatic task(s) within your projects, first, you will need a
5. Click **Save configurations** and complete your template.
6. When finished, click **Save & Activate**.

> [!NOTE]
> The above illustrations are based on a template draft. You may need to create the new template from scratch.

### Creating a New Workflow
Expand All @@ -82,4 +84,5 @@ After creating the project, you can track the progress in the **Task History** t

![AutomaticTaskProjectHistory](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/guides/consumer/ConsumerATTaskHistory-app.png?raw=true)

> [!NOTE]
> The app task illustrated above is just a mockup task that does not have a real purpose.
3 changes: 3 additions & 0 deletions articles/Extensibility/docs/consumer/MT-App-consumer-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ To benefit from the app's functionality first you have to install it on your acc

Some apps also support validation of the configured settings. The first validation is automatically performed at installation time. If the provided settings are invalid, you will be prompted with an error message letting you know that the settings are incorrect.

> [!NOTE]
> The configuration settings can be modified at any time by clicking the **Edit App Configuration** button.

## Using the Machine Translation App
Expand Down Expand Up @@ -62,10 +63,12 @@ To create a **Project** with the new resources you can either have them in a **P

![MTProject](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/guides/consumer/ConsumerCreateMTAppProject.gif?raw=true)

> [!NOTE]
> The project language pair also has to match the ones from the engine and the workflow.

Once the project reaches the **Translation** step, you can open it in **Online Editor** and check the translated segments from the MT app. You also have the possibility to search for Lookups in order to receive alternative translations.

![OEtranslations](https://github.com/RWS/language-cloud-public-api-doc-resources/blob/main/extensibility/guides/MTAppOELookup.gif?raw=true)

> [!NOTE]
> The translations illustrated above are just some demonstrative mock-ups.
11 changes: 8 additions & 3 deletions articles/Extensibility/docs/development/App-Descriptor.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The app developer must accurately fill in all the details within the descriptor,

## Basic Information

The descriptor model defines attributes that provide basic information like `name`, `description`, `releaseNotes`. The [model](../../App-API.v1.json/paths/~1descriptor/get) provides documentation for all the fields.
The descriptor model defines attributes that provide basic information like `name`, `description`, `releaseNotes`. The [model](../../api/Extensibility-API.v1-fv.html#/operations/descriptor) provides documentation for all the fields.

## Version

Expand Down Expand Up @@ -56,8 +56,9 @@ Standard endpoints are defined under the `Standard` tag. The actual path should
### Lifecycle Endpoint

Additionally, in the `standardEnpoints` section we can find the lifecycle endpoint. This endpoint needs to handle different events sent by Trados (similar to webhooks). For instance, when the app is being installed on a certain account, Trados will send an `INSTALLED` event along with some data for that account. The app should react and save the received data.
- `appLifecycle` - is used for all types of events: `REGISTERED`, `UNREGISTERED`, `INSTALLED`, and `UNINSTALLED`. See the contract [here](../../App-API.v1.json/paths/~1app-lifecycle/post).
- `appLifecycle` - is used for all types of events: `REGISTERED`, `UNREGISTERED`, `INSTALLED`, and `UNINSTALLED`. See the contract [here](../../api/Extensibility-API.v1-fv.html#/operations/Lifecycle).

> [!NOTE]
> If your app is built from our blueprints, you shouldn't have to change anything, as these endpoints work out of the box.

## Extensions
Expand Down Expand Up @@ -90,12 +91,13 @@ Any extension will have the generic set of properties:
Read more on how to define the extensions for your app in our development guides:
1. Automatic Task [guide](./Automatic-Task-App-development-guide.md).
2. Machine Translation [guide](./MT-App-development-guide.md).
3. Preview [guide](./Dynamic-Preview-guide.md).
3. Preview [guide](./Preview-App-development-guide.md).

## Configuration

An app can request configuration details at installation time (and it can be edited later).

> [!NOTE]
> On an update, new configuration settings can be added, and the user will be requested to enter the newer configuration values.

Configurations are app scoped. If you need to assign configuration values for individual extensions within the app, use clear and explicit naming conventions so users understand what information to input into each field. Additionally, tooltips can be provided by setting the description attribute.
Expand All @@ -121,6 +123,8 @@ Example:
...
}
```

> [!NOTE]
> Note that in the example the `optional` and `defaultValue` properties have not been specified, so these will be set to their default values, as specified in the contract ( false for `optional` and undefined for `defaultValue`).

Moreover, you have the option to define a list of choices using the `options` field. When this field is filled, the values will be presented in a dropdown menu. It's important to note that the only acceptable `dataType` in this scenario is `string`.
Expand All @@ -134,6 +138,7 @@ The scopes advised in the descriptor will be presented to the consumers during i

Once access is granted, the app will be able to perform authorized requests to the Trados Cloud Platform API.

> [!NOTE]
> If the app doesn't make requests to Trados Cloud Platform API, no scopes should be specified.

## Webhooks
Expand Down
Loading
Loading