Memsource Legacy API

Project API v4

Important:

Memsource Legacy API will be deprecated in 2020. It is disabled for all new organization accounts created after May 7th 2019.
Please use Memsource REST API instead.

Memsource Legacy API is being deprecated.
If you are developing a new integration, you'll need to use Memsource REST API instead.

Assign a Vendor

action: api/v4/project/assignVendor
    token                       string
    project                     domain(Project)
    vendor                      domain(Vendor)
    dateDue                     datetime                           O

response: empty

Create a New Project

action: api/v4/project/create
    token                       string
    name                        string                             
    sourceLang                  locale
    targetLang                  list(locale)
    client                      domain(Client)                     O
    businessUnit                domain(BusinessUnit)               O
    domain                      domain(Domain)                     O
    subDomain                   domain(SubDomain)                  O
    dateDue                     datetime                           O
    note                        string                             O
    machineTranslateSettings    domain(MachineTranslateSettings)   O
    workflowStep                list(domain(WorkflowStep))         O
    useDefaultProjectSettings   boolean                            O(false)

response: JSON
    {
      "id": 238                 // id of the new project
    }

Create a New Project From Template

action: api/v4/project/createFromTemplate
    token                       string
    template                    domain(ProjectTemplate)
    name                        string                             
    dateDue                     datetime                           O
    note                        string                             O
    sourceLang                  string                             O   // overrides template data
    targetLang                  list(string)                       O   // overrides template data
    workflowStep                list(domain(WorkflowStep))         O   // overrides template data

response: JSON
    {
      "id": 238                 // id of the new project
    }

Clone a Project

action: api/v4/project/clone
    token                       string
    project                     domain(Project)
    name                        string                             

response: JSON
    {
      "id": 238                 // id of the new project
    }

Edit a Project

action: api/v4/project/edit
    token                       string
    project                     domain(Project)
    name                        string                                          O
    status                      enum(ProjectStatus)                             O
    targetLang                  list(locale)                                    O    // adds target languages (existing cannot be removed)
    client                      domain(Client)                                  O N
    businessUnit                domain(BusinessUnit)                            O N
    domain                      domain(Domain)                                  O N
    subDomain                   domain(SubDomain)                               O N
    dateDue                     datetime                                        O N
    note                        string                                          O N
    machineTranslateSettings    domain(MachineTranslateSettings)                O N
    workflowStep                list(domain(WorkflowStep))                      O   // adds workflow steps (existing cannot be removed)
    owner                       domain(User)                                    O
    mtSettingsPerLanguage       map(locale, domain(MachineTranslateSettings))   O

response: empty

Delete a Project

action: api/v4/project/delete
    token                       string
    project                     domain(Project)
    purge                       boolean             O(false)

response: empty

Get Project Info

action: api/v4/project/get
    token                       string
    project                     domain(Project)

response: JSON
    {
      "id":129,
      "internalId":5,
      "name":"set completed (1)",
      "status":"NEW",
      "sourceLang":"en",
      "targetLangs":[
        "cs",
        "de"
      ],
      "dateDue":null,
      "dateCreated":"2016-03-10T14:22:10+0000",
      "createdBy": {
         "id": 501,
         "userName": "admin",
         "email": "support@memsource.com"
      }
      "note":null,
      "machineTranslateSettings":null,
      "workflowSteps":[
        {
          "abbr":"T",
          "id":1,
          "level":1,
          "name":"Translation"
        },
        {
          "abbr":"R",
          "id":2,
          "level":2,
          "name":"Revision"
        }
      ],
      "client":null,
      "businessUnit": {
         "id":5,
         "name":"BU Name"
      }
      "domain":null,
      "subDomain":null,
      "langSettings":[
        {
          "targetLang":"cs",
          "machineTranslateSettings":{
            "id":2,
            "name":"Microsoft with Feedback",
            "type":"MicrosoftTranslatorWithFeedback",
            "default":false
          }
        },
        {
          "targetLang":"de",
          "machineTranslateSettings":{
            "id":8,
            "name":"apert",
            "type":"Apertium",
            "default":true
          }
        }
      ],
      "qualityAssuranceSettings": {
        "emptyTranslation":true,
        "inconsistentTranslation":true,
        "joinTags":true,
        "missingNumbers":true,
        "segmentNotConfirmed":true,
        "terminology":true,
        "multipleSpaces":true,
        "trailingSpace":true,
        "trailingPunctuation":false,
        "targetLength": {
          "enabled": true,
          "max": 1000
        },
        "formatting":true,
        "unresolvedComment":true,
        "emptyPairTags":true,
        "strictJobStatus":false,
        "forbiddenStrings": {
          "enabled": false,
          "list": []
        },
        "excludeLockedSegments":false,
        "ignoreNotApprovedTerms":false,
        "spellCheck":true,
        "repeatedWords":true,
        "inconsistentTagContent":true,
        "emptyTagContent":true,
        "xliffTags":true,
        "forbiddenTerms":false,
        "targetLengthPercent" {
          "enabled": false,
          "max": 120.0
        },
        "targetLengthPerSegment":true,
        "newerAtPrecedingWorkflowStep":true,
        "leadingAndTrailingSpaces":true
      },
      "accessSettings: {
        "downloadEnabled":true,
        "webEditorEnabledForLinguists":true,
        "showUserDataToLinguists":true,
        "emailNotifications":true,
        "strictWorkflowFinish":false,
        "useVendors":false
      }      
    }

Set Status

action: api/v4/project/setStatus
    token                       string
    project                     domain(Project)
    status                      enum(ProjectStatus)

response: empty

Set Translation Memories

action: api/v4/project/setTransMemories
    token                       string
    project                     domain(Project)
    readTransMemory             list(domain(TransMemory))  O
    writeTransMemory            list(domain(TransMemory))  O    // write translation memory must be included in the read translation memories, too; max 2 write TMs allowed
    penalty                     list(double)               O    // a list of penalties for each read translation memory
    targetLang                  locale                     O    // set translation memories only for the specific project target language
    workflowStep                domain(WorkflowStep)       O    // set translation memories only for the specific workflow step

response: empty

Get Translation Memories

action: api/v4/project/getTransMemories
    token                       string
    project                     domain(Project)

response: JSON
   [
     {
       "writeMode":true,
       "transMemory":{
         "id":1,
         "targetLangs":[
           "de"
         ],
         "sourceLang":"en",
         "name":"transMem"
       },
       "targetLang":"de",
       "penalty":0,
       "readMode":true,
       "workflowStep":null
     }
   ]

Set Term Bases

action: api/v4/project/setTermBases
    token                       string
    project                     domain(Project)
    readTermBase                list(domain(TermBase))     O
    writeTermBase               domain(TermBase)           O    // write term base must be included in the read term bases
    qualityAssuranceTermBase    list(domain(TermBase))     O    // QA term bases must be included in the read term bases
    targetLang                  locale                     O    // set term bases only for the specific project target language

response: empty

Get Term Bases

action: api/v4/project/getTermBases
    token                       string
    project                     domain(Project)

response: JSON
   [
     {
       "writeMode":true,
       "termBase":{
         "id":1,
         "langs":[
           "de", "en"
         ],
         "name":"termBase"
       },
       "targetLang":"de",
       "readMode":true,
       "workflowStep":null
     }
   ]

List Projects

This method requires a JSON request:

action: api/v4/project/list
    token                       string                          // as GET parameter
    page                        integer                    O(0)
    name                        string                     O
    clientId                    domain(Client)             O
    client                      string                     O
    businessUnit                string                     O
    statuses                    list(enum(ProjectStatus))  O
    targetLangs                 list(locale)               O
    domain                      string                     O
    subDomain                   string                     O
    costCenter                  string                     O
    dueInHours                  integer                    O
    createdInLastHours          integer                    O
    sourceLangs                 list(locale)               O
    ownerId                     domain(User)               O
    jobStatuses                 list(enum(JobStatus))      O
    jobStatusGroup              string                     O    //valid values are "NEW", "ASSIGNED", "COMPLETED_BY_LINGUIST"; this parameter can only be used for filtering projects when this API is called by a linguist user.

JSON request example
    {
        "name":"Project 1",
        "clientId":2,
        "targetLangs":["de","en","cs"]
    } 

response: JSON
    {
    "page": 0,
    "totalCount": 1,
    "projects": [
       {
         // PM + ADMIN + LINGUIST
          "uid": "ZoOzDtS3slUq8BHJsjFdB2",
          "id" : 1,
          "innerId": 1,
          "name": "Project 1",
          "dateCreated": "2017-02-28T16:30:35+0000",
          "domain": {
            "id": 1,
            "name": "Domain1 Org1"
          },
          "subDomain": {
            "id": 1,
            "name": "Subdomain1 Org1"
          },
          "owner": {
            "id": 3,
            "firstName": "John",
            "lastName": "Doe",
            "userName": "admin",
            "email": "john.doe@email.com",
            "role": "ADMIN",
            "timezone": "Europe/London",
            "active": true,
            "deleted": false,
            "terminologist": false,
            "dateCreated": "2017-02-23T16:07:29+0000"
          },
          "sourceLang": "cs",
          "targetLangs": [
            "de",
            "en",
            "es"
          ],
      
          // PM + ADMIN
          "shared": true,
          "progress": {
            "totalCount": 3,
            "finishedCount": 2,
            "overdueCount": 0
          },
          "client": {
            "id": 1,
            "name": "Client org1",
            "externalId": ""
          },
          "costCenter": {
            "id": 1,
            "name": "Cost center org1"
          },
          "businessUnit": {
            "id": 1,
            "name": "BU org 1"
          },
          "dateDue": null,
          "status": "ACCEPTED_BY_VENDOR",
          "purchaseOrder": null,
          "jobBoard": false,
          "note": null
       }
     ]
    }

Edit Access & Security Settings

action: api/v4/project/editAccessSettings
    token                                 string
    project                               domain(Project)
    translationMemoryDownloadEnabled      boolean          O
    webEditorEnabledForLinguists          boolean          O
    showUserDataToLinguists               boolean          O
    emailNotifications                    boolean          O
    linguistsMayEditLockedSegments        boolean          O
    linguistsMayEditSource                boolean          O
 response: empty

Edit Quality Assurance Settings

action: api/v4/project/editQualityAssuranceSettings
    token                                 string
    project                               domain(Project)
    emptyTranslation                      boolean          O
    inconsistentTranslation               boolean          O
    joinTags                              boolean          O
    missingNumbers                        boolean          O
    segmentNotConfirmed                   boolean          O
    terminology                           boolean          O
    multipleSpaces                        boolean          O
    trailingSpace                         boolean          O
    trailingPunctuation                   boolean          O
    targetLengthMax                       integer          O
    formatting                            boolean          O
    unresolvedComment                     boolean          O
    emptyPairTags                         boolean          O
    strictJobStatus                       boolean          O    // linguists may not set jobs with unresolved QA warnings to Completed
    forbiddenString                       list(string)     O
    excludeLockedSegments                 boolean          O
    ignoreNotApprovedTerms                boolean          O
    spellCheck                            boolean          O
    repeatedWords                         boolean          O
    inconsistentTagContent                boolean          O
    emptyTagContent                       boolean          O
    xliffTags                             boolean          O
    forbiddenTerms                        boolean          O
    targetLengthPercent                   double           O
    targetLengthPerSegment                boolean          O
    newerAtPrecedingWorkflowStep          boolean          O
    leadingAndTrailingSpaces              boolean          O
    moravia.enabled                       boolean          O
    moravia.profile                       string           O
    regexp.rules[0].description           string           O // indexes [1], [2], etc. can be used to add more rules
    regexp.rules[0].sourceRegexp          string           O
    regexp.rules[0].targetRegexp          string           O
    targetSourceIdentical                 boolean          O
ignoreInAllWorkflowSteps boolean O
extraNumbers boolean O
nestedTags boolean O

response: empty