<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.rws.com/cfs-file/__key/system/syndication/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Blogs</title><subtitle type="html">Language Developers Blogs</subtitle><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/atom</id><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog" /><link rel="self" type="application/atom+xml" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/atom" /><generator uri="http://telligent.com" version="12.1.4.25258">Telligent Community (Build: 12.1.4.25258)</generator><updated>2016-09-30T13:27:40Z</updated><entry><title>IMPORTANT! Implementation of previously notified changes</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/important-implementation-of-previously-notified-changes" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/important-implementation-of-previously-notified-changes</id><published>2023-09-05T15:25:11Z</published><updated>2023-09-05T15:25:11Z</updated><content type="html">In line with our policy, any deprecated functionality or breaking API changes are announced 6 months in advance. With this in mind, the following two changes require notification.
Enforcement of validation of fields when a project is created
Previously announced in &lt;a href="https://languagecloud.sdl.com/lc/api-docs/whats-new#15-february-2023"&gt;February 2023&lt;/a&gt;, &lt;a href="https://languagecloud.sdl.com/lc/api-docs/whats-new#19-may-2023"&gt;May 2023&lt;/a&gt;, and &lt;a href="https://languagecloud.sdl.com/lc/api-docs/whats-new#17-august-2023"&gt;August 2023&lt;/a&gt;. The dueBy, location, and languageDirection fields will be required when creating a new proje...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/important-implementation-of-previously-notified-changes"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=10293&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>David Pooley</name><uri>https://community.rws.com/members/dpooley</uri></author></entry><entry><title>Language Cloud Public API Updates [August 2022]</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-08-12" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-08-12</id><published>2022-08-17T10:49:39Z</published><updated>2022-08-17T10:49:39Z</updated><content type="html">What&amp;#39;s new
Visit the&amp;nbsp;&lt;a href="https://languagecloud.sdl.com/lc/api-docs/16d216d6237ee-what-s-new" rel="noopener noreferrer" target="_blank"&gt;What&amp;#39;s new&lt;/a&gt;&amp;nbsp;page to find out more. Recent changes include:

There are new endpoints for downloading project quotes
New versions of source and target files can be&amp;nbsp;uploaded
New information about file formats

What&amp;#39;s&amp;nbsp;deprecated
Visit the&amp;nbsp;&lt;a href="https://languagecloud.sdl.com/lc/api-docs/8ba4317de9d1e-what-s-deprecated"&gt;What&amp;#39;s deprecated&lt;/a&gt;&amp;nbsp;page to find out more. Recent changes include:

The Export Quote endpoint will be retired in Dece...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-08-12"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=10032&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>David Pooley</name><uri>https://community.rws.com/members/dpooley</uri></author><category term="Language Cloud" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Language%2bCloud" /><category term="Public API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Public%2bAPI" /></entry><entry><title>Language Cloud Public API Updates [July 2022] #2</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-07-28" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-07-28</id><published>2022-08-10T09:30:16Z</published><updated>2022-08-10T09:30:16Z</updated><content type="html">What&amp;#39;s new
Visit the&amp;nbsp;&lt;a href="https://languagecloud.sdl.com/lc/api-docs/16d216d6237ee-what-s-new" rel="noopener noreferrer" target="_blank"&gt;What&amp;#39;s new&lt;/a&gt;&amp;nbsp;page to find out more. Recent changes include:

Guidelines for &lt;a href="https://languagecloud.sdl.com/lc/api-docs/ebe07c95829f3-how-to-use-location-and-folders"&gt;How to use location and folders&lt;/a&gt;
Details on &lt;a href="https://languagecloud.sdl.com/lc/api-docs/h5oizt92tuhtg-how-to-report-an-issue"&gt;How to report an API issue&lt;/a&gt;
(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-07-28"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=10029&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>David Pooley</name><uri>https://community.rws.com/members/dpooley</uri></author><category term="Language Cloud" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Language%2bCloud" /><category term="Public API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Public%2bAPI" /></entry><entry><title>Language Cloud Public API Updates [July 2022]</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-07-19" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-07-19</id><published>2022-07-05T08:09:52Z</published><updated>2022-07-05T08:09:52Z</updated><content type="html">For developers who want to integrate with RWS Language Cloud applications, the Public API provides a rich feature set. New features and functionality are being added to the API all the time so I thought I would take this opportunity to let you know what&amp;#39;s been happening recently.
What&amp;#39;s new
There is a specific section of the API documentation where you can find a list of newly released endpoints o...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/lc-public-api-2022-07-19"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=10004&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>David Pooley</name><uri>https://community.rws.com/members/dpooley</uri></author><category term="Language Cloud" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Language%2bCloud" /><category term="Public API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Public%2bAPI" /></entry><entry><title>Retrieve the list of active Projects available in SDL WorldServer using the REST API</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/retrieve-the-list-of-active-projects-available-in-sdl-worldserver-using-the-rest-api" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/retrieve-the-list-of-active-projects-available-in-sdl-worldserver-using-the-rest-api</id><published>2019-04-16T15:57:00Z</published><updated>2019-04-16T15:57:00Z</updated><content type="html">In this article, I would like to present a method for retrieving the list of active Projects in SDL WorldServer using the REST API.
The method takes two parameters:

wsBaseUrl
token

The wsBaseUrl must be the &amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt; where your WorldServer instance is running.
The second parameter is a security token, which can be retrieved by using the SDL WorldServer REST API&amp;nbsp;&lt;a title="Connecting to SDL WorldServer using the /login REST API call" href="/developers-more/developers/language-developers/b/language-developers-blog/posts/connecting-to-sdl-worldserver-using-the-login-rest-api-call" rel="noopener noreferrer" target="_blank"&gt;as...&lt;/a&gt;(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/retrieve-the-list-of-active-projects-available-in-sdl-worldserver-using-the-rest-api"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=8296&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="Translation technology" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Translation%2btechnology" /><category term="API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/API" /><category term="REST" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/REST" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /><category term="Java" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Java" /></entry><entry><title>Complete a Task Step in SDL WorldServer using the REST API</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/complete-a-task-step-in-sdl-worldserver-using-the-rest-api" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/complete-a-task-step-in-sdl-worldserver-using-the-rest-api</id><published>2019-04-16T15:46:00Z</published><updated>2019-04-16T15:46:00Z</updated><content type="html">In this article, I would like to present a method for&amp;nbsp;completing an active Task Step in&amp;nbsp;SDL WorldServer using the REST API.
The method takes three parameters:

wsBaseUrl
token
completeTaskStepRequestBody

The wsBaseUrl must be the &amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt; where your WorldServer instance is running.
The second parameter is a security token, which can be retrieved by using the ...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/complete-a-task-step-in-sdl-worldserver-using-the-rest-api"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=8295&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="Translation technology" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Translation%2btechnology" /><category term="API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/API" /><category term="REST" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/REST" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /><category term="Java" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Java" /></entry><entry><title>Download an asset associated with a TASK in SDL WorldServer using the REST API</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/download-an-asset-from-sdl-worldserver-using-the-rest-api" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/download-an-asset-from-sdl-worldserver-using-the-rest-api</id><published>2019-04-16T15:16:00Z</published><updated>2019-04-16T15:16:00Z</updated><content type="html">In this article, I would like to present a method for&amp;nbsp;downloading&amp;nbsp;a file (asset) associated with a Task in SDL WorldServer using the REST API.
The method takes six parameters:

wsBaseUrl
token
taskId
assetName
downloadLocation
assetLocationType

The wsBaseUrl must be the &amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt; where your WorldServer instance is running.
The second parameter is a security to...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/download-an-asset-from-sdl-worldserver-using-the-rest-api"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=8294&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="Translation technology" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Translation%2btechnology" /><category term="API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/API" /><category term="REST" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/REST" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /><category term="Java" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Java" /></entry><entry><title>Get a list of Tasks from a Project in SDL WorldServer using the REST API</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/get-a-list-of-tasks-from-a-project-in-sdl-worldserver-using-the-rest-api" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/get-a-list-of-tasks-from-a-project-in-sdl-worldserver-using-the-rest-api</id><published>2019-04-16T15:07:00Z</published><updated>2019-04-16T15:07:00Z</updated><content type="html">In this article, I would like to present a method for&amp;nbsp;retrieving a list of Tasks from a Project&amp;nbsp;in SDL WorldServer using the REST API.
The method takes three parameters:

wsBaseUrl
token
projectId

The wsBaseUrl must be the &amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt; where your WorldServer instance is running.
The second parameter is a security token, which can be retrieved by using the SDL Wor...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/get-a-list-of-tasks-from-a-project-in-sdl-worldserver-using-the-rest-api"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=8293&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="Translation technology" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Translation%2btechnology" /><category term="API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/API" /><category term="REST" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/REST" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /><category term="Java" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Java" /></entry><entry><title>Create Project Groups in SDL WorldServer using the REST API</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/create-project-groups-in-sdl-worldserver-using-the-rest-api" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/create-project-groups-in-sdl-worldserver-using-the-rest-api</id><published>2019-04-16T14:33:00Z</published><updated>2019-04-16T14:33:00Z</updated><content type="html">In this article, I would like to present a method for&amp;nbsp;creating a Project Group in SDL WorldServer using the REST API.
The method takes three parameters:

wsBaseUrl
token
projectGroups

The wsBaseUrl must be the &amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt; where your WorldServer instance is running.
The second parameter is a security token, which can be retrieved by using the SDL WorldServer REST API&amp;amp;...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/create-project-groups-in-sdl-worldserver-using-the-rest-api"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=8292&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="Translation technology" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Translation%2btechnology" /><category term="Software development" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Software%2bdevelopment" /><category term="API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/API" /><category term="REST" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/REST" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /><category term="Java" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Java" /></entry><entry><title>Upload files to SDL WorldServer using the REST API</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/upload-files-to-sdl-worldserver-using-the-rest-api" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/upload-files-to-sdl-worldserver-using-the-rest-api</id><published>2019-04-16T13:59:00Z</published><updated>2019-04-16T13:59:00Z</updated><content type="html">In this article, I would like to present a method for uploading a collection of files to SDL WorldServer using the REST API.
The method takes three parameters:

wsBaseUrl
token
files

The wsBaseUrl must be the &amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt; where your WorldServer instance is running.
The second parameter is a security token, which can be retrieved by using the SDL WorldServer REST API&amp;nbsp;&lt;a title="Connecting to SDL WorldServer using the /login REST API call" href="/developers-more/developers/language-developers/b/language-developers-blog/posts/connecting-to-sdl-worldserver-using-the-login-rest-api-call" rel="noopener noreferrer" target="_blank"&gt;a...&lt;/a&gt;(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/upload-files-to-sdl-worldserver-using-the-rest-api"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=8291&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="Translation technology" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Translation%2btechnology" /><category term="Software development" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Software%2bdevelopment" /><category term="API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/API" /><category term="REST" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/REST" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /><category term="Java" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Java" /></entry><entry><title>Uploading customization package to SDL WorldServer using Java</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/uploading-customization-package-to-sdl-worldserver-using-java" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/uploading-customization-package-to-sdl-worldserver-using-java</id><published>2017-11-27T17:49:00Z</published><updated>2017-11-27T17:49:00Z</updated><content type="html">&lt;p&gt;In this article, I present a solution for uploading a customization package (zip file containing a desc.xml) using a Java method.&lt;/p&gt;
&lt;p&gt;&lt;a title="Upload Customization" href="https://gist.github.com/pmedcraft/b81e2fa47219e6d11204f0e2dbd55725" target="_blank"&gt;Click here to view the upload customization method code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The method takes three parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;wsBaseUrl&lt;/li&gt;
&lt;li&gt;token&lt;/li&gt;
&lt;li&gt;customizationFile&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The wsBaseUrl must be the &amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt; where your WorldServer instance is running.&lt;/p&gt;
&lt;p&gt;The second parameter is a security token, which can be retrieved by using the SDL WorldServer REST API &lt;a title="Connecting to SDL WorldServer using the /login REST API call" href="/developers-more/developers/language-developers/b/language-developers-blog/posts/connecting-to-sdl-worldserver-using-the-login-rest-api-call" target="_blank"&gt;as explained here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The third parameter is the customization zip file containing the compiled customization classes and the&amp;nbsp;XML descriptor file.&lt;/p&gt;
&lt;p&gt;This solution relies on the same &amp;quot;management_customization&amp;quot; servlet used by the WorldServer UI for uploading customizations. Certain parameter values (i.e. &amp;quot;comp_type&amp;quot;, &amp;quot;submittedBy&amp;quot;) are hard-coded to&amp;nbsp;impersonate the UI selection process and allow the upload to proceed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.rws.com/aggbug?PostID=7453&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="Translation technology" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Translation%2btechnology" /><category term="customization" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/customization" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /><category term="Java" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Java" /></entry><entry><title>Connecting to SDL WorldServer using the /login REST API call</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/connecting-to-sdl-worldserver-using-the-login-rest-api-call" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/connecting-to-sdl-worldserver-using-the-login-rest-api-call</id><published>2017-11-27T17:34:00Z</published><updated>2017-11-27T17:34:00Z</updated><content type="html">&lt;p&gt;It is now possible to connect to SDL WorldServer and perform a number of actions by using the WorldServer REST API. The REST API documentation is available from your WorldServer instance by accessing &amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt;/ws-api/docs/ws-api-doc-v1.html.&lt;/p&gt;
&lt;p&gt;In this article I present a method for connecting to SDL WorldServer and fetching a security token to be used in all subsequent API calls.&lt;/p&gt;
&lt;p&gt;&lt;a title="WorldServerRestLogin" href="https://gist.github.com/pmedcraft/570dcc22dede7c301c9819397a301e9f" target="_blank"&gt;Click here to view the login method code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The method takes three parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;wsBaseUrl&lt;/li&gt;
&lt;li&gt;username&lt;/li&gt;
&lt;li&gt;password&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The wsBaseUrl must be the&amp;nbsp;&amp;lt;serverURL&amp;gt;:&amp;lt;portnumber&amp;gt; where your WorldServer instance is running. The login method will append the&amp;nbsp;&amp;quot;/ws-api/v1/login&amp;quot; path required for invoking the REST-based login call.&lt;/p&gt;
&lt;p&gt;As mentioned earlier, the call returns a security token to be used in all subsequent API calls.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.rws.com/aggbug?PostID=7452&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="Translation technology" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Translation%2btechnology" /><category term="API" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/API" /><category term="REST" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/REST" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /><category term="Java" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Java" /></entry><entry><title>Building a Custom Servlet for SDL WorldServer</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/building-a-custom-servlet-for-sdl-worldserver" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/building-a-custom-servlet-for-sdl-worldserver</id><published>2017-06-12T16:48:00Z</published><updated>2017-06-12T16:48:00Z</updated><content type="html">&lt;p&gt;SDL WorldServer allows customers to expand WorldServer capabilities through pluggable components. There are several exit points in WorldServer through which custom code can be invoked to perform customer-specific operations.&lt;br /&gt;&lt;br /&gt;Here are the types of pluggable components currently supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AIS Triggers&lt;/strong&gt;: AIS stands for &lt;em&gt;Asset Interface System&lt;/em&gt;&amp;nbsp;and&amp;nbsp;is the framework WorldServer uses to access content whether that content is in a content management system, a file system, a database, etc. Through a customized AIS trigger, it is possible to execute customer-specific actions in response to specific AIS-related events.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic Actions&lt;/strong&gt;: customized automatic actions to be executed within a WorldServer workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: can be used to override the default password validation strategy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filters&lt;/strong&gt;: allow the support of new types of assets within WorldServer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notification Service&lt;/strong&gt;: allow email messages to be customized.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servlets&lt;/strong&gt;: customized WorldServer-aware servlets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TM Services&lt;/strong&gt;: TM stands for &lt;em&gt;Translation Memory&lt;/em&gt;. It is possible to provide alternative services to be used in place of the exposed TM services.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Developers use the &lt;strong&gt;SDL WorldServer Software Development Kit (SDK)&lt;/strong&gt; to write these pluggable components. The implementation begins by extending an abstract class corresponding to the type of component you want to create. For example, the&amp;nbsp;&lt;strong&gt;com.idiominc.wssdk.component.servlet.WSHttpServlet&lt;/strong&gt;&amp;nbsp;abstract class needs to be extended in order to implement a customized servlet.&lt;br /&gt;&lt;br /&gt;The abstract classes provide us with a handle to the &lt;strong&gt;WSContext&lt;/strong&gt;&amp;nbsp;object, which provides us with access to the service managers.&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/WSContext_2D00_managers.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/WSContext_2D00_managers.png" alt=" " /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve implemented a very simple servlet for demonstration purposes. I&amp;#39;m using Maven in my project, so I first installed the&amp;nbsp;&lt;strong&gt;wssdk-server&lt;/strong&gt;&amp;nbsp;jar file in my local repository using the following.&lt;br /&gt;&lt;br /&gt;mvn install:install-file -Dfile=wssdk-server.jar -DgroupId=com.idiominc -DartifactId=wssdk-server -Dversion=11.1.0.3909 -Dpackaging=jar&lt;br /&gt;&lt;br /&gt;There are only two dependencies in the pom.xml file.&lt;/p&gt;
&lt;pre&gt;&amp;lt;dependencies&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;com.idiominc&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;wssdk-server&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;11.1.0.3909&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;javax.servlet&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;javax.servlet-api&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;
        &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
&amp;lt;/dependencies&amp;gt;&lt;/pre&gt;
&lt;p&gt;The &lt;strong&gt;ProjectInfo&lt;/strong&gt;&amp;nbsp;servlet outputs project information from all projects available in the system (active and inactive). It demonstrates the use of the &lt;strong&gt;user&lt;/strong&gt;&amp;nbsp;and &lt;strong&gt;workflow&lt;/strong&gt;&amp;nbsp;managers for gathering information.&lt;/p&gt;
&lt;p&gt;&lt;a title="ProjectInfo.java" href="https://gist.githubusercontent.com/pmedcraft/e945c2417027592e2e40dadd84759906/raw/e9e1546ce00d649decc14d8ee7f9944b554bd790/ProjectInfo.java" target="_blank"&gt;ProjectInfo.java&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Deploying the custom servlet&lt;/h2&gt;
&lt;div&gt;The steps for installing the custom servlet include:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Creating a WorldServer component deployment descriptor&lt;/li&gt;
&lt;li&gt;Creating a component archive (zip file) containing the component classes and, if required, including all of the non-WorldServer library dependencies.&lt;/li&gt;
&lt;li&gt;Using the WorldServer UI to deploy the component.&lt;/li&gt;
&lt;/ol&gt;
The component descriptor is an XML file that provides WorldServer with the information needed to identify and register the uploaded component. Only one descriptor file, named as&amp;nbsp;&lt;strong&gt;desc.xml&lt;/strong&gt;, is provided per deployment. If your project contains multiple implementations (i.e. servlets, filters), all references are included within a unique descriptor file.&lt;br /&gt;&lt;br /&gt;The contents of my project&amp;#39;s &lt;strong&gt;desc.xml&lt;/strong&gt; is shown below. &lt;br /&gt;
&lt;pre&gt;&amp;lt;components&amp;gt;
    &amp;lt;servlet class=&amp;quot;com.worldservertraining.ProjectInfo&amp;quot;/&amp;gt;
&amp;lt;/components&amp;gt;&lt;/pre&gt;
Create a zip file containing the XML descriptor file and your classes. Note that the desc.xml file must be at the base of the zip file. In addition, your Java classes must be placed in the zip file under the appropriate Java package structure. There cannot be any jar or zip files inside your deployment zip file. In order to use supporting libraries in your projects, you can either expand these supporting libraries in your zip package or have them added to WorldServer&amp;#39;s classpath.&lt;br /&gt;&lt;br /&gt;Once the zip package is ready, you can use WorldServer&amp;#39;s UI to deploy your customizations. Your WorldServer user will need to have the right privilege to perform the following steps.&lt;br /&gt;&lt;br /&gt;Login to WorldServer and click the &lt;strong&gt;Management&lt;/strong&gt;&amp;nbsp;option.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_1.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_1.png" alt=" " /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Click the &lt;strong&gt;Administration&lt;/strong&gt;&amp;nbsp;option.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_2.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_2.png" alt=" " /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Click the &lt;strong&gt;Customization&lt;/strong&gt;&amp;nbsp;option.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_3.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_3.png" alt=" " /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Select the appropriate component type and click the&amp;nbsp;&lt;strong&gt;Add&lt;/strong&gt;&amp;nbsp;button to upload your zip package. If your deployment includes components of different types, select any option from the drop-down. WorldServer will workout the components from the descriptor file anyway.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_4.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_4.png" alt=" " /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Once uploaded, providing no errors are displayed, you should see your customizations listed as shown below.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_5.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_5.png" alt=" " /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;The &lt;strong&gt;Name&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;Description&lt;/strong&gt;&amp;nbsp;and &lt;strong&gt;Version&lt;/strong&gt;&amp;nbsp;properties are taken from the respective properties in the bespoke component object.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;Testing the custom servlet&lt;/h2&gt;
&lt;div&gt;Of course testing depends on the type of component you have deployed. For instance, an automatic action (&lt;strong&gt;auto_action&lt;/strong&gt;) component will require an association with a workflow step for testing to work.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Invoking a servlet involves requesting the following URL.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://localhost:8080/ws-legacy/ws_ext?servlet="&gt;http://localhost:8080/ws-legacy/ws_ext?servlet=&amp;lt;servlet_name&amp;gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Therefore, our ProjectInfo servlet would be requested using:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://localhost:8080/ws-legacy/ws_ext?servlet=project_info"&gt;http://localhost:8080/ws-legacy/ws_ext?servlet=project_info&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_6.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-35/screen_2D00_6.png" alt=" " /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.rws.com/aggbug?PostID=7032&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Philip Medcraft</name><uri>https://community.rws.com/members/philipmedcraft</uri></author><category term="customization" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/customization" /><category term="Servlets" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/Servlets" /><category term="SDL Worldserver" scheme="https://community.rws.com/archive/language-developers/b/language-developers-blog/archive/tags/SDL%2bWorldserver" /></entry><entry><title>Options to extend and customize Trados Studio</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/options-to-extend-and-customize-trados-studio" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/options-to-extend-and-customize-trados-studio</id><published>2017-03-08T16:48:22Z</published><updated>2017-03-08T16:48:22Z</updated><content type="html">I&amp;#39;m absolutely sure that Trados Studio is the most customizable product on the market. To me this a no brainer; all you have to do is to go to the &lt;a href="http://appstore.sdl.com/list/language/most-downloaded/"&gt;SDL AppStore&lt;/a&gt; and have a look at the number of plugins and applications that are available. And that is not all, because there are at least the same number of customizations carried out which are not published on the store because they are built to f...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/options-to-extend-and-customize-trados-studio"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=6461&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Romulus Crisan (former member)</name><uri>https://community.rws.com/members/romuluscrisan</uri></author></entry><entry><title>SDL Studio plugin dependencies cleanup</title><link rel="alternate" type="text/html" href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/sdl-studio-plugin-dependencies-cleanup" /><id>https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/sdl-studio-plugin-dependencies-cleanup</id><published>2016-09-30T13:27:40Z</published><updated>2016-09-30T13:27:40Z</updated><content type="html">I decided to write this article after I got a question on my last blog article, &lt;a href="https://romuluscrisan.com/sdl-studio-plugin-manifest/"&gt;SDL Studio plugin manifest&lt;/a&gt;, about an issue with files that are overridden during an SDL Studio plugin build. Although this issue is quite specific I received questions with similar situations from other people and the root cause of this problem is related to how you manage SDL Studio plugin dependencies, or, in other w...(&lt;a href="https://community.rws.com/archive/language-developers/b/language-developers-blog/posts/sdl-studio-plugin-dependencies-cleanup"&gt;read more&lt;/a&gt;)&lt;img src="https://community.rws.com/aggbug?PostID=5571&amp;AppID=35&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Romulus Crisan (former member)</name><uri>https://community.rws.com/members/romuluscrisan</uri></author></entry></feed>