Overview
This describes the resources that make up the official Dotsub REST API VideoTMSTM. If you have any problems or requests please contact Dotsub support.
Path Format Change |
We have changed the API path to not include a version (v3
). We will continue to support paths that contain v3
for the foreseeable future, but please update to the new path format as soon as possible.
Authentication
JWT is used to authenticate with Dotsub API. First of all user needs to log in with credentials. Server will respond to such request with JWT token, which can be used for authorizing all subsequent requests. JWT token will expire after one day.
In order to obtain a JWT token, you must first have client_id
and client_secret
credentials. Follow these steps to generate the credentials:
1- Open https://videotms.com, and login with an Admin user account.
2- From the left menu, navigate to Organization
> Advanced Settings
.
3- Click the "Create Api Credentials" button to generate the credentials.
You will then see the client_id
and client_secret
values as follows:
Note: You can click the eye icon to show the
client_secret
value.
Please be careful not to share your credentials with untrusted parties |
To retrieve the JWT token, use this request:
$ curl 'https://login.videotms.com/oauth/token' -i -X POST \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{
"client_id" : "OOb7go1K6036e3fMPgLo5dzPWlqHDYHR",
"client_secret" : "s7rL1R62kKtsXzhXOjaiQ6fuMjWeygpXkbMDuGiFnRR4SHR7cbakYxBMeX8dMW4-",
"audience" : "https://videotms.com/api/v3/",
"grant_type" : "client_credentials"
}'
Path | Type | Description |
---|---|---|
|
|
Client ID |
|
|
Client Secret |
|
|
Dotsub’s API URI. Trailing slash is important! |
|
|
What grant type should issuer create token for |
If credentials are correct, server will respond with such response:
HTTP/1.1 200 OK
{
"access_token" : "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik9URTVPVGc1T1RnMFFUSXhOVEJEUlRCRlJqSTVOelEwT0VZNFJrRTFSRFkzTnpNek1VSkdRdyJ9.eyJpc3MiOiJodHRwczovL2xvZ2luLnZpZGVvdG1zLmNvbS8iLCJzdWIiOiJPT2I3Z28xSzYwMzZlM2ZNUGdMbzVkelBXbHFIRFlIUkBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kb2VzLm5vdC5leGlzdC50ZXN0L2FwaS92My8iLCJpYXQiOjE2MDc2ODAyMzAsImV4cCI6MTYwNzc2NjYzMCwiYXpwIjoiT09iN2dvMUs2MDM2ZTNmTVBnTG81ZHpQV2xxSERZSFIiLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMifQ.Y1HaYEwi1bmexhvpdV4CwN4qlJedAULKjDC-IIXVM_o3rzALSEePj4beqnJNIfx0bIRbGs1EbPd8d1uFqffZPCOYlzY-yxK1woMjVYnB4t0BA0w_QkrBOfWV2D1nJ-WvoYP57NTTadbs1CkZTCX_qpF6t16C6vr8a0NTwIGchzx1IQgDF6bGSSUkyBQaD95rhiJAOzZNhydc4ExuEf_rFhiXDph6uTxhYuZE8qcGZUL7jOSyv0l8tA0KI8e6oBSkHgzHtcXBwZIV2GI254ROJMkqXFnGycXYB7Z5o871iv4gAQPA-76tx-1ge01gkUyQrnZqvhgOkPw3Qn48298GhA",
"expires_in" : 86400,
"token_type" : "Bearer"
}
Token constructed from response can be used as header in any request that needs to be authorized:
GET /api/tasks HTTP/1.1
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik9URTVPVGc1T1RnMFFUSXhOVEJEUlRCRlJqSTVOelEwT0VZNFJrRTFSRFkzTnpNek1VSkdRdyJ9.eyJpc3MiOiJodHRwczovL2xvZ2luLnZpZGVvdG1zLmNvbS8iLCJzdWIiOiJ0SkZmVEZxZmJQcmo5M2oxMjFWbmN1bXVWWmdxVDZkMUBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvdjMvIiwiaWF0IjoxNjA3NjgwMjI3LCJleHAiOjE2MDc3NjY2MjcsImF6cCI6InRKRmZURnFmYlByajkzajEyMVZuY3VtdVZaZ3FUNmQxIiwiZ3R5IjoiY2xpZW50LWNyZWRlbnRpYWxzIn0.I6vpN0fMsQVobhbH8_huPM5_UiNYk0Ook8PTdOUN_yG91g0XOeAAlzrjyiY3uIQBKDZdiLDRAazWnBpe9ai1YFUmrWcp4bu_0-72XCm2biV0hU33JiCc0ITLeIx2ckeVlEZ2yqBcwbvZPTmjW9wBUvtAeE0Z5StWU9Aw4mtScGEtrPdmmAfUOkv5PSx520ieDVSb2d4ni6JDRF-ENiLq6Ex6bBz63SRahmBYcErNPWYqbV5hkf6ADLf9yPIXT01MHWENXsdDu3zYaDqQNOFJSyrgEqTHKBFl9RtUKAsMlSfWs26FiEmEteMWJgGgoa6ED4M2eByIpDNXOekxPs2YuA
Cache your Tokens
Tokens remain valid up to 24 hours, so they can be cached in your system and re-used for multiple requests. We have a limitation on the number of Machine-2-Machine auth tokens that can be issued, therefore excessive usage may lead to your application being temporarily blocked. |
HTTP verbs
Dotsub API tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP verbs.
Verb | Usage |
---|---|
|
Used to retrieve data |
|
Used to create a new entity |
|
Used to update an existing entity |
|
Used to partially update an existing entity using JSON Merge Patch |
|
Used to delete an existing entity |
HTTP status codes
Dotsub API tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP status codes.
Status code | Usage |
---|---|
|
The request completed successfully |
|
The request was malformed. The response body will include an error providing further information |
|
The authenticated user is not permitted to perform the requested operation |
|
The requested resource did not exist |
Errors
Whenever an error response (status code 4xx) is returned, the body will contain a JSON object that describes the problem. The error object has the following structure:
Path | Type | Description |
---|---|---|
|
|
The HTTP error that occurred, e.g. |
|
|
A description of the cause of the error |
|
|
The path to which the request was made |
|
|
The HTTP status code, e.g. |
|
|
The time, in milliseconds, at which the error occurred |
For example, if a media is requested and not found, the following would be the response:
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 168
{
"timestamp" : "2023-03-27T15:45:39Z",
"status" : 404,
"error" : "Not Found",
"message" : "Media with ID foobar wasn't found",
"path" : "/api/media/foobar"
}
Whenever an Internal Server Error (status code 500) is returned, the body will contain only basic JSON information. The error object has the following structure:
Path | Type | Description |
---|---|---|
|
|
The HTTP error that occurred, e.g. |
|
|
The path to which the request was made |
|
|
The HTTP status code, e.g. |
|
|
The time, in milliseconds, at which the error occurred |
Following would be the response for Internal Server Error:
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 139
{
"timestamp" : "2023-03-27T15:45:40Z",
"status" : 500,
"error" : "Internal Server Error",
"path" : "/test/internal-server-error"
}
Media API
Assumptions
The Project and Workflow for Media must be configured in the videotms.com application before Media API usage.
Read Media List
A GET
request will list the organization’s media.
GET /api/media
Avoid polling the Media endpoint
Please avoid polling this endpoint with repetitive and continuous requests. If you need to constantly monitor the media list to identify new entries, or monitor the encoding status of existing items, please consider taking advantage of the Notifications API webhook mechanism. |
Query Parameters
Parameter | Description |
---|---|
|
Results are returned in pages of data. The pageSize value will be the maximum number of media returned in a page. |
|
Page index in paged set. |
|
Filter by project name which contains media |
|
Filter by workflow name associated with media |
|
Filter by tag associated with media |
|
Filter by title of media |
|
Filter by external ID of media. |
|
Filter by name of media’s organization |
|
Filter by media’s language name case insensitive, e.g (english) |
|
Filter by upload visibility of media |
|
Sort the paged media set. The result set may be sorted by mediaId, title, projectName, organizationName, or createdDate. Default sort direction is Ascending. To sort Descending, prepend |
Example
Request
GET /api/media?title=video+title&sort=-createdDate&pageIndex=0&pageSize=2 HTTP/1.1
X-CSRF-TOKEN: c2f84702-4310-4dbd-8434-61a1a377deae
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 5301
{
"content" : [ {
"mediaId" : "27",
"title" : "Video Title 23",
"projectId" : "12",
"projectName" : "Project 10",
"workflowName" : null,
"clientId" : "1",
"clientName" : "Client 1",
"description" : "This is the description",
"webhook" : null,
"notes" : null,
"errorMessage" : null,
"mediaState" : null,
"createdDate" : "2020-11-23T08:15:00Z",
"workflowId" : null,
"workflowTemplateOutdated" : null,
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"externalId" : null,
"fileName" : "VIDEO-FOO-23.MOV",
"language" : {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
},
"reviewLanguages" : [ ],
"translationLanguages" : [ ],
"subtitledLanguageIds" : null,
"tags" : [ ],
"uploadDetail" : {
"id" : "24",
"start" : "2020-11-23T07:15:00Z",
"finish" : null,
"origin" : "DISK",
"status" : "COMPLETE",
"percentage" : 100,
"errorMessage" : null,
"rawFileStorageUrl" : null,
"ovp" : null,
"uploadUpdateToken" : null
},
"encodedMedia" : {
"id" : "24",
"mp4Url" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/video.mp4",
"rawS3Mp4Url" : null,
"mp4HdUrl" : null,
"gifUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/video.gif",
"thumbnailUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/thumb.jpg",
"waveformUrl" : null,
"error" : null,
"originalLengthInMilliseconds" : null,
"encodedLengthInMilliseconds" : null,
"reprocessWith" : null
},
"externalReferences" : [ ],
"metadata" : {
"type" : "VIDEO",
"length" : 8000,
"width" : null,
"height" : null,
"visible" : false,
"uploaderUserId" : "21",
"signedUrl" : null
},
"chunkParentMediaId" : null,
"chunkIndex" : null,
"chunkStart" : null,
"chunkEnd" : null,
"mediaChunkIds" : null,
"estimate" : false,
"estimatedLength" : null,
"estimatedTasks" : null,
"clientCustomerName" : null,
"importUrl" : null,
"s3Upload" : false,
"hasTasks" : false
}, {
"mediaId" : "21",
"title" : "Video Title 21",
"projectId" : "12",
"projectName" : "Project 10",
"workflowName" : null,
"clientId" : "1",
"clientName" : "Client 1",
"description" : "This is the description",
"webhook" : null,
"notes" : null,
"errorMessage" : null,
"mediaState" : null,
"createdDate" : "2018-11-23T11:59:30Z",
"workflowId" : null,
"workflowTemplateOutdated" : null,
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"externalId" : null,
"fileName" : "VIDEO-FOO-21.MOV",
"language" : {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
},
"reviewLanguages" : [ ],
"translationLanguages" : [ ],
"subtitledLanguageIds" : null,
"tags" : [ ],
"uploadDetail" : {
"id" : "21",
"start" : "2018-11-23T07:15:00Z",
"finish" : null,
"origin" : "BRIGHTCOVE",
"status" : "UPLOADED",
"percentage" : 100,
"errorMessage" : null,
"rawFileStorageUrl" : null,
"ovp" : "BRIGHTCOVE_OAUTH",
"uploadUpdateToken" : null
},
"encodedMedia" : {
"id" : "21",
"mp4Url" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/video.mp4",
"rawS3Mp4Url" : "s3://dotsub-media-encoded/media/4/7/video.mp4",
"mp4HdUrl" : null,
"gifUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/video.gif",
"thumbnailUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/thumb.jpg",
"waveformUrl" : null,
"error" : null,
"originalLengthInMilliseconds" : null,
"encodedLengthInMilliseconds" : null,
"reprocessWith" : null
},
"externalReferences" : [ ],
"metadata" : {
"type" : "VIDEO",
"length" : 33000,
"width" : null,
"height" : null,
"visible" : false,
"uploaderUserId" : "21",
"signedUrl" : null
},
"chunkParentMediaId" : null,
"chunkIndex" : null,
"chunkStart" : null,
"chunkEnd" : null,
"mediaChunkIds" : null,
"estimate" : false,
"estimatedLength" : null,
"estimatedTasks" : null,
"clientCustomerName" : null,
"importUrl" : null,
"s3Upload" : false,
"hasTasks" : false
} ],
"pageable" : {
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"pageNumber" : 0,
"offset" : 0,
"pageSize" : 2,
"unpaged" : false,
"paged" : true
},
"last" : false,
"totalElements" : 16,
"totalPages" : 8,
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"first" : true,
"size" : 2,
"number" : 0,
"numberOfElements" : 2,
"empty" : false
}
Path | Type | Description |
---|---|---|
|
|
Array of found media |
|
|
ID of the media |
|
|
Title of the media |
|
|
ID of the project associated with the media |
|
|
Name of the project associated with the media |
|
|
Name of the workflow associated with the media |
|
|
ID of the client associated with the project |
|
|
Name of the client associated with the project |
|
|
Description of the media |
|
|
Notes of the media containing localization instructions. Markdown is supported. |
|
|
Created Date of the media |
|
|
ID of the workflow for the media |
|
|
URL of the organization of the media |
|
|
Name of the organization of the media |
|
|
The Primary Client/OVP External ID for the media |
|
|
The file name associated to the media |
|
|
The language of the media |
|
|
Languages that will be reviewed for media |
|
|
Languages that will be translated for media |
|
|
Tags associated to media |
|
|
Upload details about media |
|
|
Encoded details about video associated to media |
|
|
Metadata information about video and media |
|
|
media file type either 'VIDEO' or 'AUDIO' |
|
|
media file length |
|
|
media file frame width |
|
|
media file frame height |
|
|
List of external references of the media. Each is record of association to an OVP for ingest/push and/or used to store a client’s ID of the media. |
|
|
The OVP of the external reference. Will be null if external reference is client’s ID. |
|
|
The ExternalId of the external reference. |
|
|
Boolean indicating if the media was ingested from the OVP. |
|
|
The name of the client’s customer who owns the source video |
|
|
Total number of media in full result |
|
|
Total number of pages in full result |
|
|
Is this the first page |
|
|
Is this the last page |
|
|
Number of media per page |
|
|
Page number |
|
|
Number of media per page |
|
|
Details of sort being applied |
Read Media
A GET
request will return a media for the organization.
GET /api/media/:mediaId
Parameter | Description |
---|---|
|
The ID of the media to read |
Example
Request
GET /api/media/12 HTTP/1.1
X-CSRF-TOKEN: bd466716-1c53-45fd-9086-66a082e3b262
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 3097
{
"mediaId" : "12",
"title" : "Video Title 11",
"projectId" : "1",
"projectName" : "Project 1",
"workflowName" : "Project 1",
"clientId" : "1",
"clientName" : "Client 1",
"description" : "This is the description",
"webhook" : null,
"notes" : "Media contains unique terminology. \r[Test link](https://www.dotsub.com)",
"errorMessage" : null,
"mediaState" : null,
"createdDate" : "2016-08-01T12:12:00Z",
"workflowId" : "1",
"workflowTemplateOutdated" : true,
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"externalId" : null,
"fileName" : "VIDEO-FOO-11.MOV",
"language" : {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
},
"reviewLanguages" : [ {
"id" : "fr-FR",
"code" : "fra",
"countryCode" : "FR",
"alpha2BCode" : "fre",
"alpha2TCode" : "fra",
"alpha1Code" : "fr",
"name" : "French (France)",
"direction" : "LTR",
"localizedName" : "Français"
} ],
"translationLanguages" : [ {
"id" : "fr-FR",
"code" : "fra",
"countryCode" : "FR",
"alpha2BCode" : "fre",
"alpha2TCode" : "fra",
"alpha1Code" : "fr",
"name" : "French (France)",
"direction" : "LTR",
"localizedName" : "Français"
}, {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
} ],
"subtitledLanguageIds" : [ "ar-SA" ],
"tags" : [ ],
"uploadDetail" : {
"id" : "12",
"start" : "2016-01-20T07:15:00Z",
"finish" : null,
"origin" : "DISK",
"status" : "UPLOADED",
"percentage" : 100,
"errorMessage" : null,
"rawFileStorageUrl" : null,
"ovp" : null,
"uploadUpdateToken" : null
},
"encodedMedia" : {
"id" : "12",
"mp4Url" : "http://dotsub-media-encoded.s3.amazonaws.com/1/14/14.mp4",
"rawS3Mp4Url" : "s3://dotsub-media-encoded/1/14/14.mp4",
"mp4HdUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/1/14/14_hd.mp4",
"gifUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/video.gif",
"thumbnailUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/thumb.jpg",
"waveformUrl" : null,
"error" : null,
"originalLengthInMilliseconds" : null,
"encodedLengthInMilliseconds" : null,
"reprocessWith" : null
},
"externalReferences" : [ ],
"metadata" : {
"type" : "VIDEO",
"length" : 33000,
"width" : null,
"height" : null,
"visible" : false,
"uploaderUserId" : "1",
"signedUrl" : null
},
"chunkParentMediaId" : null,
"chunkIndex" : null,
"chunkStart" : null,
"chunkEnd" : null,
"mediaChunkIds" : [ ],
"estimate" : false,
"estimatedLength" : null,
"estimatedTasks" : null,
"clientCustomerName" : null,
"importUrl" : null,
"s3Upload" : false,
"hasTasks" : true
}
Path | Type | Description |
---|---|---|
|
|
ID of the media |
|
|
If s3Upload true, the response will include an Amazon S3 pre-signed URL for direct media file upload |
|
|
If s3Upload is true, the content type of the video must be set in this field |
|
|
Title of the media |
|
|
ID of the project associated with the media |
|
|
Name of the project associated with the media |
|
|
Name of the workflow associated with the media |
|
|
ID of the client associated with the project |
|
|
Name of the client associated with the project |
|
|
Description of the media |
|
|
Notes of the media containing localization instructions. Markdown is supported. |
|
|
Created Date of the media |
|
|
ID of the workflow for the media |
|
|
URL of the organization of the media |
|
|
Name of the organization of the media |
|
|
The Primary Client/OVP External ID for the media |
|
|
The file name associated to the media |
|
|
The language of the media |
|
|
Languages that will be reviewed for media |
|
|
Languages that will be translated for media |
|
|
Language IDs for subtitles that are complete |
|
|
Tags associated to media |
|
|
Upload details about media |
|
|
Encoded details about video associated to media |
|
|
Metadata information about video and media |
|
|
media file type either 'VIDEO' or 'AUDIO' |
|
|
media file length |
|
|
media file frame width |
|
|
media file frame height |
|
|
media presigned url to dotsub s3 buckets where media source can be updated, generated when requesting with s3Upload and contentType |
|
|
List of external references of the media. Each is record of association to an OVP for ingest/push and/or used to store a client’s ID of the media. |
|
|
The OVP of the external reference. Will be null if external reference is client’s ID. |
|
|
The ExternalId of the external reference. |
|
|
Boolean indicating if the media was ingested from the OVP. |
|
|
The name of the client’s customer who owns the source video |
|
|
Flag indicating if media has tasks or not. |
Read Media Subtitles
A GET
request will return a media’s completed subtitles for a specified language and format.
-
The subtitledLanguageIds property returned in the Read Media request should be used to determine which languages have completed subtitles for a media.
-
Subtitle download supports these formats:
GET /api/media/:mediaId/languages/:languageId/subtitles/:subtitleFormat
Parameter | Description |
---|---|
|
The ID of the media associated with subtitle |
|
The ID of the language associated with subtitle |
|
The Format of subtitle desired. Valid values are: [VTT, SRT, TTML, SSA] |
Example
Request
GET /api/media/1/languages/en-US/subtitles/VTT HTTP/1.1
X-CSRF-TOKEN: 8a0f9993-baef-461e-ab33-5b0970533ea7
Response
HTTP/1.1 200 OK
Content-Type: text/vtt;charset=UTF-8
Content-Disposition: attachment;filename=Video_Title_1_en_US.vtt
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 72
WEBVTT
1
00:00:01.000 --> 00:00:03.000 align:center
Hello Cruel World
Upload Media Subtitles
A POST
request to upload new subtitles for a media’s language. The Content-Type request header must be set to
multipart/form-data.
-
Subtitle upload supports these formats:
-
Import engine detects subtitle format automatically, so there is not need to explicitly specify it.
-
Languages are created for media as defined by the VideoTMS™ workflow. This means that all languages may not exist right after a media is created. For example, if a workflow is to caption a video in English (US) then translate to the captions to Spanish, the Spanish language will not be created until after the English captioning is completed. If a requested language doesn’t exist for a media, a
404 Not Found
error response is returned.
POST /api/media/:mediaId/languages/:languageId/subtitles
Parameter | Description |
---|---|
|
The ID of the media associated with subtitle |
|
The ID of the language associated with subtitle |
Request Headers
Name | Description |
---|---|
|
Set to true if the associated workflow task should be marked completed |
Example
Request
POST /api/media/14/languages/en-US/subtitles HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
completeTask: false
X-CSRF-TOKEN: de825ed2-f7da-4ff7-999f-a91efeab2482
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=subtitleFile; filename=_dmd_short_eng.srt
Content-Type: multipart/form-data
1
00:00:06,000 --> 00:00:09,000
There are billions of galaxies in the observable universe
2
00:00:09,000 --> 00:00:12,000
and each of ther contains hundreds of billion of stars
3
00:00:12,000 --> 00:00:15,000
in one of these galaxies...
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
Response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1222
{
"trackId" : "15",
"name" : "Source Proj 14",
"language" : {
"id" : "en-US",
"code" : null,
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
},
"type" : "CAPTION",
"sourceTrack" : null,
"currentVersion" : {
"trackVersionId" : "eec10018-139a-4397-8117-f2bbb1d53096",
"title" : null,
"description" : null,
"comment" : "Imported from _dmd_short_eng.srt",
"completion" : 27,
"createdBy" : {
"userId" : "6",
"firstname" : "Dotsub Manager",
"lastname" : "Manager",
"email" : "[email protected]",
"timezone" : "America/Los_Angeles",
"displayName" : "Dotsub Manager Manager",
"systemAdmin" : false,
"lastActive" : null,
"selectedAssigneeUser" : null,
"assigneeUsers" : null
},
"createdAt" : "2023-03-27T15:45:44.171092Z",
"finalized" : true,
"lockingVersion" : 0,
"overlapEnabled" : false
},
"versions" : null,
"reviews" : [ ],
"trackSource" : false,
"mediaTitle" : "Video Title 14",
"organizationId" : "dotsub-test",
"taskId" : null
}
Create Media
A POST
request will create media for the user’s organization.
POST /api/media
When creating media, the request should either have s3Upload set to true or a valid URL in importUrl:
-
If s3Upload is set to true, the S3 signed URL is returned in the response metadata.signedUrl along with a token in uploadDetail.uploadUpdateToken. The metadata.signedUrl is to be used for uploading the video associated with this media. The API does not upload the video, it is the responsibility of the client to upload the video. Once the upload is complete, an update media API call must be made to update the upload status to
UPLOADED
so that processing can complete for the media in Dotsub. The token in uploadDetail.uploadUpdateToken must be included in the update media API request. -
If the importUrl field is set to a valid URL, the API will use the URL to ingest and encode the video as part of media creation.
Input
Path | Type | Description |
---|---|---|
|
|
Boolean to indicate if video associated to media will be uploaded to the dotsub-media AWS S3 bucket. |
|
|
URL of video to be imported and associated with the media. |
|
|
If s3Upload is true, the content type of the video must be set in this field |
|
|
Required Title of media. Only ()_-,. and alphanumeric characters are allowed. |
|
|
Required ID of project of media |
|
|
Required File name to be associated with media |
|
|
Description of media. Only ()_-,. and alphanumeric characters are allowed. |
|
|
Notes of the media containing localization instructions. Markdown is supported. |
|
|
The names of tags associated with the media |
|
|
Language ID of media |
|
|
The translation language IDs of the media. In order for the media to be translated into a language, the ID of the language must be in this array. This also assumes the media is being processed by a workflow that has a Translation task in the workflow definition. |
|
|
The review language IDs with the media. The Caption and Translations for a media can be Reviewed after completion. In order for the review task to be created, the Language ID of Caption or Translation must be in this array. This also assumes the media is being processed by a workflow that has a Review task in the workflow definition. |
|
|
ID of the workflow to be associated with the media |
|
|
Client External ID of the the media |
|
|
Webhook URL that will be called as task lifecycle events occur for the media. |
|
|
The name of the client’s customer who owns the source video. |
Example
Request
POST /api/media HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: 56fedfc8-7bb1-4b4b-bd1e-203788c4d837
{
"s3Upload": true,
"mediaDto": {
"title": "Create Video Title",
"description": "This is the description-new",
"projectId": "1",
"tags": [
{
"name": "Medical"
}
],
"fileName": "_test_file.mp4",
"language": { "id": "en-US" },
"translationLanguages": [
{
"id": "it-IT"
},
{
"id": "es-ES"
}
],
"reviewLanguages": [
{
"id": "it-IT"
},
{
"id": "es-ES"
}
]
}
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 3469
{
"mediaId" : "9159a852-2c9c-4e31-b96b-85a97332fb94",
"title" : "Create Video Title",
"projectId" : "1",
"projectName" : "Project 1",
"workflowName" : null,
"clientId" : "1",
"clientName" : "Client 1",
"description" : "This is the description-new",
"webhook" : null,
"notes" : null,
"errorMessage" : null,
"mediaState" : null,
"createdDate" : "2023-03-27T15:45:41.522606Z",
"workflowId" : null,
"workflowTemplateOutdated" : null,
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"externalId" : null,
"fileName" : "_test_file.mp4",
"language" : {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
},
"reviewLanguages" : [ {
"id" : "es-ES",
"code" : "spa",
"countryCode" : "ES",
"alpha2BCode" : "spa",
"alpha2TCode" : "spa",
"alpha1Code" : "es",
"name" : "Spanish (Spain)",
"direction" : "LTR",
"localizedName" : "Español"
}, {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
} ],
"translationLanguages" : [ {
"id" : "es-ES",
"code" : "spa",
"countryCode" : "ES",
"alpha2BCode" : "spa",
"alpha2TCode" : "spa",
"alpha1Code" : "es",
"name" : "Spanish (Spain)",
"direction" : "LTR",
"localizedName" : "Español"
}, {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
} ],
"subtitledLanguageIds" : null,
"tags" : [ {
"tagId" : "1",
"name" : "Medical",
"color" : "7766927",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#76838F",
"textColorHex" : "#FFFFFF"
} ],
"uploadDetail" : {
"id" : "248f6df8-e8d2-49e7-8a55-0c5b5839c0f1",
"start" : "2023-03-27T15:45:41.359129Z",
"finish" : null,
"origin" : "DISK",
"status" : "IN_QUEUE",
"percentage" : 0,
"errorMessage" : null,
"rawFileStorageUrl" : null,
"ovp" : null,
"uploadUpdateToken" : "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI5MTU5YTg1Mi0yYzljLTRlMzEtYjk2Yi04NWE5NzMzMmZiOTQifQ.nadAZ_a5NCwt_OpCR-YpcKyBwSB13Vxal7pFi3kDP15x8EtdJA2ZI1gvO2lcDCkxzD9lp8JrZ1GwT1dR45l39w"
},
"encodedMedia" : {
"id" : "3079e0b6-820f-4df0-b39c-fc9d60f57258",
"mp4Url" : null,
"rawS3Mp4Url" : null,
"mp4HdUrl" : null,
"gifUrl" : null,
"thumbnailUrl" : null,
"waveformUrl" : null,
"error" : null,
"originalLengthInMilliseconds" : null,
"encodedLengthInMilliseconds" : null,
"reprocessWith" : null
},
"externalReferences" : [ ],
"metadata" : {
"type" : "VIDEO",
"length" : null,
"width" : null,
"height" : null,
"visible" : true,
"uploaderUserId" : "6",
"signedUrl" : "<URL_Dotsub_Media_S3>"
},
"chunkParentMediaId" : null,
"chunkIndex" : null,
"chunkStart" : null,
"chunkEnd" : null,
"mediaChunkIds" : null,
"estimate" : false,
"estimatedLength" : null,
"estimatedTasks" : null,
"clientCustomerName" : null,
"importUrl" : null,
"s3Upload" : false,
"hasTasks" : false
}
Update Media
A PATCH
request will partially update the organization’s media. This is a JSON Merge Patch.
PATCH /api/media/:mediaId
Parameter | Description |
---|---|
|
The ID of the media to update |
Input
The following fields may be updated:
Path | Type | Description |
---|---|---|
|
|
Boolean to indicate if media source is to be updated with a file uploaded to dotsub s3 buckets. |
|
|
Public URL of the video file associated with this media. Ignored if s3Upload is true (direct file upload request). |
|
|
if s3Upload is true, the file name associated to the media |
|
|
Title of media. Only ()_-,. and alphanumeric characters are allowed. |
|
|
Description of media. Only ()_-,. and alphanumeric characters are allowed. |
|
|
Notes of the media containing localization instructions. Markdown is supported. |
|
|
Webhook URL that will be called as task lifecycle events occur for the media. |
|
|
ID of the project to update, Changing the projectId is only allowed if the media has no workflow and no tasks. |
|
|
ID of the workflow to be associated with the media |
|
|
Media External ID, either the Client External Id or Ingest OVP External Id (take caution if updating OVP Ingest External Id, update won’t propagate to OVP) |
|
|
Token to be included when updating uploadDetail attributes. Only pending DISK uploads can be updated |
|
|
Upload status of media. Valid values are |
|
|
Upload completion percentage. |
|
|
if s3Upload is true, the URL of the uploaded file in the S3 bucket. |
|
|
The tag names associated with the media |
|
|
The translation language IDs of the media. In order for the media to be translated into a language, the ID of the language must be in this array. This also assumes the media is being processed by a workflow that has a Translation task in the workflow definition. |
|
|
The review language IDs with the media. The Caption and Translations for a media can be Reviewed after completion. In order for the review task to be created, the Language ID of Caption or Translation must be in this array. This also assumes the media is being processed by a workflow that has a Review task in the workflow definition. |
|
|
Re-encode the media with either the primary or secondary encoding service. Please use the primary encoding service unless it is failing for some reason. Valid values are |
Example
Request
PATCH /api/media/12 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: 1a69ed96-165a-410e-b7ea-15ab8b8d623b
{
"title": "Video Title 11-new",
"description": "This is the description-new",
"tags": [ { "name": "Medical" } ],
"translationLanguages": [
{
"id": "it-IT"
},
{
"id": "es-ES"
}
],
"reviewLanguages": [
{
"id": "it-IT"
},
{
"id": "es-ES"
}
]
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 3519
{
"mediaId" : "12",
"title" : "Video Title 11-new",
"projectId" : "1",
"projectName" : "Project 1",
"workflowName" : "Project 1",
"clientId" : "1",
"clientName" : "Client 1",
"description" : "This is the description-new",
"webhook" : null,
"notes" : "Media contains unique terminology. \r[Test link](https://www.dotsub.com)",
"errorMessage" : null,
"mediaState" : null,
"createdDate" : "2016-08-01T12:12:00Z",
"workflowId" : "1",
"workflowTemplateOutdated" : true,
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"externalId" : null,
"fileName" : "VIDEO-FOO-11.MOV",
"language" : {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
},
"reviewLanguages" : [ {
"id" : "es-ES",
"code" : "spa",
"countryCode" : "ES",
"alpha2BCode" : "spa",
"alpha2TCode" : "spa",
"alpha1Code" : "es",
"name" : "Spanish (Spain)",
"direction" : "LTR",
"localizedName" : "Español"
}, {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
} ],
"translationLanguages" : [ {
"id" : "es-ES",
"code" : "spa",
"countryCode" : "ES",
"alpha2BCode" : "spa",
"alpha2TCode" : "spa",
"alpha1Code" : "es",
"name" : "Spanish (Spain)",
"direction" : "LTR",
"localizedName" : "Español"
}, {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
} ],
"subtitledLanguageIds" : null,
"tags" : [ {
"tagId" : "1",
"name" : "Medical",
"color" : "7766927",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#76838F",
"textColorHex" : "#FFFFFF"
} ],
"uploadDetail" : {
"id" : "12",
"start" : "2016-01-20T07:15:00Z",
"finish" : null,
"origin" : "DISK",
"status" : "UPLOADED",
"percentage" : 100,
"errorMessage" : null,
"rawFileStorageUrl" : null,
"ovp" : null,
"uploadUpdateToken" : null
},
"encodedMedia" : {
"id" : "12",
"mp4Url" : "http://dotsub-media-encoded.s3.amazonaws.com/1/14/14.mp4",
"rawS3Mp4Url" : "s3://dotsub-media-encoded/1/14/14.mp4",
"mp4HdUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/1/14/14_hd.mp4",
"gifUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/video.gif",
"thumbnailUrl" : "http://dotsub-media-encoded.s3.amazonaws.com/media/4/7/thumb.jpg",
"waveformUrl" : null,
"error" : null,
"originalLengthInMilliseconds" : null,
"encodedLengthInMilliseconds" : null,
"reprocessWith" : null
},
"externalReferences" : [ ],
"metadata" : {
"type" : "VIDEO",
"length" : 33000,
"width" : null,
"height" : null,
"visible" : false,
"uploaderUserId" : "1",
"signedUrl" : null
},
"chunkParentMediaId" : null,
"chunkIndex" : null,
"chunkStart" : null,
"chunkEnd" : null,
"mediaChunkIds" : null,
"estimate" : false,
"estimatedLength" : null,
"estimatedTasks" : null,
"clientCustomerName" : null,
"importUrl" : null,
"s3Upload" : false,
"hasTasks" : false
}
Delete Media
A DELETE
request will delete media from the user’s organization.
DELETE /api/media/:mediaId
Parameter | Description |
---|---|
|
The ID of the media to delete |
Example
Request
DELETE /api/media/4 HTTP/1.1
X-CSRF-TOKEN: 80682ba8-c589-48c1-82e4-506a20d52a2b
Response
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Task API
Read Tasks List
A GET
request will list tasks.
GET /api/tasks
Avoid polling the Tasks endpoint
Please avoid polling this endpoint with repetitive and continuous requests. If you need to constantly monitor the tasks list to identify new tasks, or monitor the status of existing tasks, please consider taking advantage of the Notifications API webhook mechanism. |
Query Parameters
Parameter | Description |
---|---|
|
Results are returned in pages of data. The pageSize value will be the maximum number of tasks returned in a page. |
|
Page index in paged set. |
|
Sort the paged media set. The result set may be sorted by mediaId, title, projectName, type, dueDate, or createdDate. Default sort direction is Descending. To sort Ascending, prepend |
|
Filter by Name of the project associated with the media |
|
Filter by task organization ID |
|
Filter by clientOrganization ID of the task |
|
Filter by Type of the task can be one of following values (TASK_CAPTION, TASK_PIVOT_TRANSLATE, TASK_DIRECT_TRANSLATE, TASK_TRANSLATE, TASK_REVIEW, TASK_POST_EDITING, TASK_PROOF_READING, TASK_CUSTOM, TASK_SIGN_OFF, TASK_BURN_IN, TASK_PUSH, TASK_TEXT_TO_SPEECH) |
|
Filter by task language ID |
|
Filter by ID of the media |
|
Filter by Title of the media |
|
Filter by the OVP external ID for the media |
|
Filter by Assignee Type of the task can be one of following values (GROUP, USER, ASR, MT, TTS, BURN_IN, NONE) |
|
Filter by Assignee Name of the task. |
|
Filter by Created Date of the task should be in ISO8601 format eg:2018-09-01T12:01:00 |
|
Filter by Due Date Start of the task should be in ISO8601 format eg:2018-09-01T12:01:00 |
|
Filter by Due Date End of the task should be in ISO8601 format eg:2018-09-01T12:01:00 |
|
Filter by Completion Date Start of the task should be in ISO8601 format eg:2018-09-01T12:01:00 |
|
Filter by Completion Date End the task should be in ISO8601 format eg:2018-09-01T12:01:00 |
|
Filter by completed tasks |
|
Filter by accepted tasks |
Example
Request
GET /api/tasks?sort=-createdDate&pageIndex=0&pageSize=2 HTTP/1.1
Response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 4868
{
"content" : [ {
"id" : "12",
"assigneeId" : "8",
"assigneeType" : "USER",
"assigneeName" : "Translator, Jimmy",
"assigneeEmail" : "[email protected]",
"assigneeTags" : null,
"createdDate" : "2016-08-01T12:12:01Z",
"dueDate" : "2016-09-01T12:12:00Z",
"projectId" : "1",
"projectName" : "Project 1",
"completed" : true,
"completionDate" : "2018-08-18T12:12:00Z",
"accepted" : true,
"type" : "TASK_TRANSLATE",
"mediaTitle" : "Video Title 11",
"mediaDescription" : "This is the description",
"mediaFilename" : "VIDEO-FOO-11.MOV",
"mediaChunkIndex" : null,
"mediaId" : "12",
"mediaExternalId" : null,
"mediaState" : null,
"mediaDeletedDate" : null,
"mediaClientCustomerName" : null,
"relatedTrackType" : "TRANSLATION",
"trackId" : "12",
"trackCurrentVersionId" : "18",
"trackCompletionPercentage" : "100",
"sourceTrackLanguageId" : "en-US",
"sourceTrackLanguageName" : "English (United States)",
"sourceTrackCurrentVersionId" : "16",
"sourceTrackSourceTrackId" : null,
"languageId" : "fr-FR",
"languageName" : "French (France)",
"description" : null,
"sourceTrackId" : "11",
"trackReviewId" : null,
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"originAssigneeId" : null,
"originAssigneeType" : null,
"totalCost" : 2.5,
"totalPrice" : null,
"invoiced" : false,
"paid" : false,
"length" : "33000",
"lengthSeconds" : 33.0,
"lengthFormatted" : "00:00:33",
"deletable" : true,
"openUri" : "/tasks/12?open",
"tags" : [ {
"tagId" : "7",
"name" : "Tag One",
"color" : "10407527",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#9ECE67",
"textColorHex" : "#FFFFFF"
} ],
"mediaTags" : [ ],
"pvmRate" : null,
"errored" : false,
"errorMessage" : null,
"vendorOrganizationId" : null,
"vendorOrganizationName" : null,
"clientOrganizationId" : null,
"clientOrganizationName" : null,
"sharedHeadTaskId" : null,
"sharedIndex" : null,
"taskGroupCreatedDate" : "2016-08-01T12:12:00Z",
"state" : null,
"manuallyCreated" : null,
"estimate" : false,
"lastUpdatedTrackTime" : null
}, {
"id" : "11",
"assigneeId" : "8",
"assigneeType" : "USER",
"assigneeName" : "Translator, Jimmy",
"assigneeEmail" : "[email protected]",
"assigneeTags" : null,
"createdDate" : "2016-08-01T12:11:00Z",
"dueDate" : "2016-09-01T12:11:00Z",
"projectId" : "1",
"projectName" : "Project 1",
"completed" : true,
"completionDate" : "2018-08-18T12:11:00Z",
"accepted" : true,
"type" : "TASK_CAPTION",
"mediaTitle" : "Video Title 11",
"mediaDescription" : "This is the description",
"mediaFilename" : "VIDEO-FOO-11.MOV",
"mediaChunkIndex" : null,
"mediaId" : "12",
"mediaExternalId" : null,
"mediaState" : null,
"mediaDeletedDate" : null,
"mediaClientCustomerName" : null,
"relatedTrackType" : "CAPTION",
"trackId" : "11",
"trackCurrentVersionId" : "16",
"trackCompletionPercentage" : "100",
"sourceTrackLanguageId" : "en-US",
"sourceTrackLanguageName" : "English (United States)",
"sourceTrackCurrentVersionId" : null,
"sourceTrackSourceTrackId" : null,
"languageId" : "en-US",
"languageName" : "English (United States)",
"description" : null,
"sourceTrackId" : null,
"trackReviewId" : null,
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"originAssigneeId" : null,
"originAssigneeType" : null,
"totalCost" : 1.5,
"totalPrice" : null,
"invoiced" : false,
"paid" : false,
"length" : "33000",
"lengthSeconds" : 33.0,
"lengthFormatted" : "00:00:33",
"deletable" : true,
"openUri" : "/tasks/11?open",
"tags" : [ ],
"mediaTags" : [ ],
"pvmRate" : null,
"errored" : false,
"errorMessage" : null,
"vendorOrganizationId" : null,
"vendorOrganizationName" : null,
"clientOrganizationId" : null,
"clientOrganizationName" : null,
"sharedHeadTaskId" : null,
"sharedIndex" : null,
"taskGroupCreatedDate" : "2016-08-01T12:11:00Z",
"state" : null,
"manuallyCreated" : null,
"estimate" : false,
"lastUpdatedTrackTime" : null
} ],
"pageable" : {
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"pageNumber" : 0,
"offset" : 0,
"pageSize" : 2,
"unpaged" : false,
"paged" : true
},
"last" : false,
"totalElements" : 20,
"totalPages" : 10,
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"first" : true,
"size" : 2,
"number" : 0,
"numberOfElements" : 2,
"empty" : false
}
Path | Type | Description |
---|---|---|
|
|
Array of found tasks |
|
|
ID of the task |
|
|
Task Assignee ID |
|
|
Task Assignee Name |
|
|
Task Assignee Email |
|
|
Task Assignee Type |
|
|
Created Date of the task in ISO8601 format |
|
|
Due Date of the task in ISO8601 format |
|
|
Project Id of the task |
|
|
Project Name of the task |
|
|
Is task completed |
|
|
Completion Date of the task in ISO8601 format |
|
|
Is task accepted |
|
|
Is task errored |
|
|
Task error message |
|
|
Type of the task can be one of following values (TASK_CAPTION, TASK_PIVOT_TRANSLATE, TASK_DIRECT_TRANSLATE, TASK_TRANSLATE, TASK_REVIEW, TASK_POST_EDITING, TASK_PROOF_READING, TASK_CUSTOM, TASK_SIGN_OFF, TASK_BURN_IN, TASK_PUSH, TASK_TEXT_TO_SPEECH) |
|
|
Language Id of the task eg: en-US |
|
|
Fully qualified name of task language eg: English(United States) |
|
|
Title of the task’s media |
|
|
Description of the task’s media |
|
|
File name of the task’s media |
|
|
Media ID of the task’s media |
|
|
The OVP external ID for the task’s media |
|
|
Track Id of the task |
|
|
Track Current Version ID of the task |
|
|
Description of the task |
|
|
Source Track Id of the task |
|
|
Track Review Id of the task |
|
|
Source Track Language Id |
|
|
Source Track Language Name of the task |
|
|
Source Track Current Version of the task |
|
|
Source Track of Source Track Id of the task |
|
|
URL of the organization assigned to work of the task |
|
|
Name of the organization assigned to work of the task |
|
|
ID of the organization assigned to work on the task |
|
|
Origin Assignee ID of the task |
|
|
Origin Assignee Type of the task |
|
|
Total Cost of the task |
|
|
Total Price of the task |
|
|
Is task invoiced |
|
|
Is task paid |
|
|
Rate per video minute |
|
|
ID of client organization associated with the task |
|
|
ID of vendor organization associated with the task |
|
|
ID of head shared task from client |
|
|
Index in shared task chain |
|
|
Timestamp of shared task chain |
|
|
Media length in Milliseconds |
|
|
Is task deletable |
|
|
Relative URI for the media |
|
|
Available tags of the OVP video if any |
|
|
Total number of media in full result |
|
|
Total number of pages in full result |
|
|
Is this the first page |
|
|
Is this the last page |
|
|
Number of media per page |
|
|
Page number |
|
|
Number of media per page |
|
|
Sort details |
Update Task
A PATCH
request may be used to partially update certain properties of a task. This is a JSON Merge Patch.
PATCH /api/tasks/:vtmsTaskId
Parameter | Description |
---|---|
|
The ID of the task to update |
Input
The following fields may be updated:
Path | Type | Description |
---|---|---|
|
|
Sets completed status of task |
|
|
Sets accepted status of task. A value of true sets the task as accepted and assigns the task to the requesting user. A value of false sets the releases the task and assigns the task to the original assignee. |
|
|
Due Date of the task in ISO8601 format |
|
|
Description of the task |
|
|
Must pass ID of assignee to set. |
|
|
Sets errored status of task |
|
|
Sets error message of task |
Example
Request
PATCH /api/tasks/4?_csrf=5aa708de-68f9-4077-a1e6-202f61b6c1fa HTTP/1.1
Content-Type: application/json;charset=UTF-8
{
"completed": true
}
Response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 2338
{
"id" : "4",
"assigneeId" : "8",
"assigneeType" : "USER",
"assigneeName" : "Translator, Jimmy",
"assigneeEmail" : "[email protected]",
"assigneeTags" : null,
"createdDate" : "2016-08-01T12:04:00Z",
"dueDate" : "2016-09-01T12:04:00Z",
"projectId" : "1",
"projectName" : "Project 1",
"completed" : true,
"completionDate" : "2023-03-27T15:45:52.583634Z",
"accepted" : true,
"type" : "TASK_TRANSLATE",
"mediaTitle" : "Video Title 1",
"mediaDescription" : "This is the description",
"mediaFilename" : "VIDEO-FOO.MOV",
"mediaChunkIndex" : null,
"mediaId" : "1",
"mediaExternalId" : "3979279311001",
"mediaState" : null,
"mediaDeletedDate" : null,
"mediaClientCustomerName" : null,
"relatedTrackType" : "TRANSLATION",
"trackId" : "4",
"trackCurrentVersionId" : "5",
"trackCompletionPercentage" : "0",
"sourceTrackLanguageId" : "en-US",
"sourceTrackLanguageName" : "English (United States)",
"sourceTrackCurrentVersionId" : "2",
"sourceTrackSourceTrackId" : null,
"languageId" : "es-ES",
"languageName" : "Spanish (Spain)",
"description" : null,
"sourceTrackId" : "1",
"trackReviewId" : null,
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"originAssigneeId" : null,
"originAssigneeType" : null,
"totalCost" : 0,
"totalPrice" : null,
"invoiced" : false,
"paid" : false,
"length" : "60000",
"lengthSeconds" : 60.0,
"lengthFormatted" : "00:01:00",
"deletable" : true,
"openUri" : "/tasks/4?open",
"tags" : [ ],
"mediaTags" : [ {
"tagId" : "7",
"name" : "Tag One",
"color" : "10407527",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#9ECE67",
"textColorHex" : "#FFFFFF"
}, {
"tagId" : "8",
"name" : "Tag Two",
"color" : "4700358",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#47B8C6",
"textColorHex" : "#FFFFFF"
} ],
"pvmRate" : null,
"errored" : false,
"errorMessage" : null,
"vendorOrganizationId" : null,
"vendorOrganizationName" : null,
"clientOrganizationId" : null,
"clientOrganizationName" : null,
"sharedHeadTaskId" : null,
"sharedIndex" : null,
"taskGroupCreatedDate" : "2016-08-01T12:04:00Z",
"state" : null,
"manuallyCreated" : null,
"estimate" : false,
"lastUpdatedTrackTime" : null
}
Path | Type | Description |
---|---|---|
|
|
ID of the task |
|
|
Task Assignee ID |
|
|
Task Assignee Name |
|
|
Task Assignee Type |
|
|
Created Date of the task in ISO8601 format |
|
|
Due Date of the task in ISO8601 format |
|
|
Project Id of the task |
|
|
Project Name of the task |
|
|
Is task completed |
|
|
Completion Date of the task in ISO8601 format |
|
|
Is task accepted |
|
|
Is task errored |
|
|
Task error message |
|
|
Type of the task can be one of following values (TASK_CAPTION, TASK_PIVOT_TRANSLATE, TASK_DIRECT_TRANSLATE, TASK_TRANSLATE, TASK_REVIEW, TASK_POST_EDITING, TASK_PROOF_READING, TASK_CUSTOM, TASK_SIGN_OFF, TASK_BURN_IN, TASK_PUSH, TASK_TEXT_TO_SPEECH) |
|
|
Language Id of the task, as returned in the Organization Languages API (see https://videotms.com/api/apidocs/html5/index.html#_organization_languages_api) |
|
|
Fully qualified name of task language eg: English(United States) |
|
|
Title of the task’s media |
|
|
Description of the task’s media |
|
|
File name of the task’s media |
|
|
Media Id of the task’s media |
|
|
The OVP external ID for the task’s media |
|
|
Track Id of the task |
|
|
Track Current Version ID of the task |
|
|
Description of the task |
|
|
Source Track Id of the task |
|
|
Track Review Id of the task |
|
|
Source Track Language Name of the task |
|
|
Source Track Current Version of the task |
|
|
URL of the task’s organization of the task |
|
|
Name of the task organization of the task |
|
|
Origin Assignee ID of the task |
|
|
Origin Assignee Type of the task |
|
|
Total Cost of the task |
|
|
Total Price of the task |
|
|
Is task invoiced |
|
|
Is task paid |
|
|
Rate per video minute |
|
|
ID of client organization associated with the task |
|
|
ID of vendor organization associated with the task |
|
|
ID of head shared task from client |
|
|
Index in shared task chain |
|
|
Timestamp of shared task chain |
|
|
Media length in Milliseconds |
|
|
Is task deletable |
|
|
Relative URI for the task |
|
|
Available tags of the OVP video if any |
Notifications API
The Notifications API uses the Media webhook URL or the Organization Webhook to POST JSON notifications as task actions occur for the Media.
In order for the notification to be sent to the webhook URL, it must be valid, and the media’s organization has to be opted in for API Webhook notification types. You can opt in/out for the notification actions you wish to be notified about using the Organization/Notification Configuration page in the application.
The Organization Webhook can be set in the application on the Organization/Basic Settings screen.
Notification Actions
Action | Description | Audience |
---|---|---|
CAPTIONING_REQUEST |
Captioning task created. Request has been sent to do the work. |
Linguists, Admins and Project Managers |
CAPTIONING_ASSIGNED |
Captioning task assigned for work. |
Admins and Project Managers |
CAPTIONING_ACCEPTED |
Captioning task has been accepted by a person to do the work. |
Linguists, Admins and Project Managers |
CAPTIONING_FINISHED |
Captioning task has been finished. Captions are ready. If captioned are to be reviewed, REVIEW_* actions will be sent when complete. |
Admins and Project Managers |
CAPTIONING_REOPENED |
Captioning task has been re-opened after being completed, likely because some re-work is needed. |
Linguists, Admins and Project Managers |
TRANSLATION_REQUEST |
Translation task created. Request has been sent to do the work. |
Linguists, Admins and Project Managers |
TRANSLATION_ASSIGNED |
Translation task assigned for work. |
Admins and Project Managers |
TRANSLATION_ACCEPTED |
Translation task has been accepted by a person to do the work. |
Linguists, Admins and Project Managers |
TRANSLATION_FINISHED |
Translation task has been finished. Subtitles are ready. If subtitles are to be reviewed, REVIEW_* actions will be sent when complete. |
Admins and Project Managers |
TRANSLATION_REOPENED |
Translation task has been re-opened after being completed, likely because some re-work is needed. |
Linguists, Admins and Project Managers |
REVIEW_REQUEST |
Review task for captioning/translation created. Request has been sent to do the work. |
Linguists, Admins and Project Managers |
REVIEW_ASSIGNED |
Review task for captioning/translation assigned for work. |
Admins and Project Managers |
REVIEW_ACCEPTED |
Review task for captioning/translation has been accepted by a person to do the work. |
Linguists, Admins and Project Managers |
REVIEW_FINISHED |
Review task for captioning/translation has been finished and captions/subtitles are ready. |
Admins and Project Managers |
REVIEW_REOPENED |
Review task has been re-opened after being completed, likely because some re-work has been done and an additional review is needed. |
Linguists, Admins and Project Managers |
CUSTOM_REQUEST |
Custom task created and request has been sent to do the work. |
Linguists, Admins and Project Managers |
CUSTOM_ASSIGNED |
Custom task assigned for work. |
Admins and Project Managers |
CUSTOM_ACCEPTED |
Custom task has been accepted by a person to do the work. |
Linguists, Admins and Project Managers |
CUSTOM_FINISHED |
Custom task has been finished and captions are ready. |
Admins and Project Managers |
CUSTOM_REOPENED |
Custom task has been re-opened after being completed, likely because some re-work is needed. |
Linguists, Admins and Project Managers |
BURN_IN_FINISHED |
Burn in task has finished successfully. |
Admins and Project Managers |
BURN_IN_FAILED |
Burn in task has failed. |
Admins and Project Managers |
SHARED_NOT_FINISHED_BY_VENDOR |
A task shared to a vendor organization was completed by the client organization. |
Admins and Project Managers |
SHARED_REASSIGNED_REMOVED_VENDOR |
A task shared to a vendor organization was reassigned from the vendor by the client organization. |
Admins and Project Managers |
TASK_DUE_DATE_CHANGED_ADMINS |
A task due date has been changed. Notification sent to the task’s organization Admins. |
Admins and Project Managers |
TASK_DUE_DATE_CHANGED_ASSIGNEES |
A task due date has been changed. Notification sent to the task’s assignee (Group or Linguist). |
Linguists |
TASK_DELETED_ADMINS |
A task has been deleted. Notification sent to the task’s organization Admins. |
Admins and Project Managers |
TASK_DELETED_ASSIGNEES |
A task has been deleted. Notification sent to the task’s assignee (Group or Linguist). |
Linguists |
LINGUIST_SIGNUP |
A new linguist has completed registration in the organization. |
Admins and Project Managers |
TASK_ALMOST_DUE_MANAGERS |
A task is not complete and has been open for more than half the due date. Notification sent to the task’s organization Admins. |
Admins and Project Managers |
TASK_ALMOST_DUE_ASSIGNEE |
A task is not complete and has been open for more than half the due date. Notification sent to the task’s assignee (Group or Linguist). |
Linguists |
TASK_PAST_DUE_MANAGERS |
A task is not complete and has passed the due date. Notification sent to the task’s organization Admins. |
Admins and Project Managers |
TASK_PAST_DUE_ASSIGNEE |
A task is not complete and has passed the due date. Notification sent to the task’s assignee (Group or Linguist). |
Linguists |
TASK_ASSIGNMENT_FAILED |
* None of the configured Automated Speech Recognition/ Machine Translation engines support given skill (captioning language or translation language pair) * Human assignee group was not found for skill (captioning language or translation language pair) |
Admins and Project Managers |
TASK_PROCESSING_FAILED |
Asynchronous automated task failed. Affected task types: * ASR captioning * Machine Translation * Push * Burn-In |
Admins and Project Managers |
MEDIA_ENCODING_FAILED |
A media has failed encoding after being added to VideoTMS. |
Admins and Project Managers |
MEDIA_WORKFLOW_FAILED |
Workflow processing for media failed. |
Admins and Project Managers |
Notification Structure
Sample Notification JSON
Below is a sample of the notification JSON that will be POSTed to your webhook URL.
{
"dateTime" : "2019-05-31T10:59:22Z",
"action" : "CAPTIONING_FINISHED",
"taskId" : "1",
"projectId" : "1",
"mediaId" : "1",
"languageId" : "en-US",
"mediaExternalId": "vKdatbDc",
"mediaTags": [
"tag1",
"tag2"
],
"errorDetail": "Detailed information in case of error notifications",
"downloadUrl": "https://videotms.com/api/media/1/languages/en-US/subtitles/vtt"
}
Project API
Read Project List
A GET
request will list projects.
GET /api/projects
Query Parameters
Parameter | Description |
---|---|
|
Results are returned in pages of data. The pageSize value will be the maximum number of projects returned in a page. |
|
Page index in paged set. |
|
Filter by project name |
|
Filter by workflow Id associated with project |
|
Filter by workflow name associated with project |
|
Filter by tag associated with project |
|
Sort the paged project set. The result set may be sorted by name and client name. Default sort direction is Ascending. To sort Descending, prepend |
Example
Request
GET /api/projects?pageIndex=0&pageSize=1 HTTP/1.1
X-CSRF-TOKEN: d1ad542b-9cbf-4f0b-853c-197b60bdd3d7
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 3597
{
"content" : [ {
"projectId" : "1",
"name" : "Project 1",
"client" : {
"clientId" : "1",
"name" : "Client 1",
"organizationId" : null,
"vendorOrganization" : {
"id" : "dotsub-test",
"name" : "Dotsub Test",
"timezone" : "America/New_York",
"userRole" : null,
"taskReassignmentTimeout" : 0,
"webhook" : null,
"webhookUsername" : null,
"webhookPasswordEdit" : null,
"lineFeed" : "LF"
},
"clientOrganization" : null,
"active" : true,
"activationToken" : null
},
"tags" : [ {
"tagId" : "1",
"name" : "Medical",
"color" : "7766927",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#76838F",
"textColorHex" : "#FFFFFF"
}, {
"tagId" : "2",
"name" : "Technical",
"color" : "14043467",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#D6494B",
"textColorHex" : "#FFFFFF"
}, {
"tagId" : "3",
"name" : "Kaltura",
"color" : "3507146",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#3583CA",
"textColorHex" : "#FFFFFF"
} ],
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"defaultWorkflowId" : "1",
"defaultWorkflowName" : "Project 1",
"copyDefaultWorkflow" : false,
"priceSheetId" : "1",
"translationLanguages" : [ {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
}, {
"id" : "fr-FR",
"code" : "fra",
"countryCode" : "FR",
"alpha2BCode" : "fre",
"alpha2TCode" : "fra",
"alpha1Code" : "fr",
"name" : "French (France)",
"direction" : "LTR",
"localizedName" : "Français"
} ],
"reviewLanguages" : [ {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
}, {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
}, {
"id" : "fr-FR",
"code" : "fra",
"countryCode" : "FR",
"alpha2BCode" : "fre",
"alpha2TCode" : "fra",
"alpha1Code" : "fr",
"name" : "French (France)",
"direction" : "LTR",
"localizedName" : "Français"
} ],
"fallbackMediaLanguage" : {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
},
"mediaChunkSeconds" : null
} ],
"pageable" : {
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"pageNumber" : 0,
"offset" : 0,
"pageSize" : 1,
"unpaged" : false,
"paged" : true
},
"last" : false,
"totalElements" : 12,
"totalPages" : 12,
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"first" : true,
"size" : 1,
"number" : 0,
"numberOfElements" : 1,
"empty" : false
}
Path | Type | Description |
---|---|---|
|
|
Array of found projects |
|
|
ID of the project |
|
|
Name of the project |
|
|
The Client of the project |
|
|
List of Tags of the project |
|
|
ID of the organization of the project |
|
|
ID of the default workflow for the project |
|
|
Boolean to copy workflow on update requests. Does not apply to this API |
|
|
Pricesheet ID of the project |
|
|
List of translation languages for the project. Media added to this project will be added with these translation languages by default. |
|
|
List of review languages for the project. Media added to this project will be added with these review languages by default. |
|
|
Fallback Media Language of the project. Media added to this project will be added with this language as media language if not already set. |
|
|
Total number of projects in full result |
|
|
Total number of pages in full result |
|
|
Is this the first page |
|
|
Is this the last page |
|
|
Number of projects per page |
|
|
Page number |
|
|
Number of projects per page |
|
|
Details of sort being applied |
Create Project
A POST
request will create a project in the user’s organization.
POST /api/projects
Input
Path | Type | Description |
---|---|---|
|
|
Required Name of project |
|
|
Required ID of the Organization owning the project |
|
|
Required ID of the Language to use as fallback for media in the project |
|
|
ID of the Default Workflow for the project |
|
|
ID of the Client for the project |
|
|
ID of the PriceSheet for the project |
|
|
The tag names associated with the project |
|
|
The translation language IDs of the project |
|
|
The review language IDs with the project |
Example
Request
POST /api/projects HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: d07ca9f0-afc1-4919-b198-2fed6408b3d6
{
"name": "Project New One",
"organizationId": "dotsub-test",
"defaultWorkflowId": "5",
"tags": [ { "name": "Medical" } ],
"translationLanguages": [
{
"id": "it-IT"
}
],
"reviewLanguages": [
{
"id": "it-IT"
},
{
"id": "en-US"
}
],
"fallbackMediaLanguage": {
"id": "en-US"
}
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1592
{
"projectId" : "9492cf7e-78ab-4914-af33-8d6a2398aa36",
"name" : "Project New One",
"client" : null,
"tags" : [ {
"tagId" : "1",
"name" : "Medical",
"color" : "7766927",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#76838F",
"textColorHex" : "#FFFFFF"
} ],
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"defaultWorkflowId" : "5",
"defaultWorkflowName" : "Workflow 5",
"copyDefaultWorkflow" : false,
"priceSheetId" : null,
"translationLanguages" : [ {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
} ],
"reviewLanguages" : [ {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
}, {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
} ],
"fallbackMediaLanguage" : {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
},
"mediaChunkSeconds" : null
}
Update Project
A PATCH
request will partially update the organization’s project. This is a JSON Merge Patch.
PATCH /api/projects/:projectId
Parameter | Description |
---|---|
|
The ID of the project to update |
Input
The following fields may be updated:
Path | Type | Description |
---|---|---|
|
|
Required Name of project |
|
|
Required ID of the Language to use as fallback for media in the project |
|
|
ID of the Default Workflow for the project |
|
|
ID of the Client for the project |
|
|
ID of the PriceSheet for the project |
|
|
The tag names associated with the project |
|
|
The translation language IDs of the project. Array of Objects with language id attribute. |
|
|
The review language IDs with the projectArray of Objects with language id attribute. |
Example
Request
PATCH /api/projects/12 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: 256268d8-457e-4dbc-9d92-074d969913be
{
"name": "Project 10-new",
"tags": [ { "name": "Medical" } ],
"fallbackMediaLanguage": {
"id": "it-IT"
}
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1288
{
"projectId" : "12",
"name" : "Project 10-new",
"client" : {
"clientId" : "1",
"name" : "Client 1",
"organizationId" : null,
"vendorOrganization" : {
"id" : "dotsub-test",
"name" : "Dotsub Test",
"timezone" : "America/New_York",
"userRole" : null,
"taskReassignmentTimeout" : 0,
"webhook" : null,
"webhookUsername" : null,
"webhookPasswordEdit" : null,
"lineFeed" : "LF"
},
"clientOrganization" : null,
"active" : true,
"activationToken" : null
},
"tags" : [ {
"tagId" : "1",
"name" : "Medical",
"color" : "7766927",
"textColor" : "16777215",
"workflow" : false,
"colorHex" : "#76838F",
"textColorHex" : "#FFFFFF"
} ],
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"defaultWorkflowId" : null,
"defaultWorkflowName" : null,
"copyDefaultWorkflow" : false,
"priceSheetId" : null,
"translationLanguages" : [ ],
"reviewLanguages" : [ ],
"fallbackMediaLanguage" : {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
},
"mediaChunkSeconds" : 4
}
Subtitle Specification API
Read Subtitle Specifications List
A GET
request will list the organization’s subtitle specifications.
GET /api/subtitleSpecifications
Query Parameters
Parameter | Description |
---|---|
|
Results are returned in pages of data. The pageSize value will be the maximum number of subtitle specifications returned in a page. |
|
Page index in paged set. |
|
Filter by project id of Subtitle Specs |
|
Filter by language id of Subtitle Specs |
|
Filter by language name of Subtitle Specs |
|
Returns the Subtitle Specs for a Task ID |
|
Sort the paged subtitle spec set. The result set may be sorted by subtitleSpecificationId and languageName. Default sort direction is Ascending. To sort Descending, prepend |
Example
Request
GET /api/subtitleSpecifications?pageIndex=0&pageSize=5&projectId=1&languageName=french HTTP/1.1
X-CSRF-TOKEN: 2913dbe7-d71f-47ca-b5f5-22da692129b2
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1070
{
"content" : [ {
"subtitleSpecificationId" : "4",
"projectId" : "1",
"projectDefault" : false,
"languageId" : "fr-FR",
"languageName" : "French (France)",
"enabled" : true,
"spokenAudio" : true,
"audioDescription" : true,
"onScreenText" : true,
"speakerIdentification" : "NONE",
"dialogueStyle" : "LINE_BREAKS",
"maxLinesPerCaption" : 3,
"maxCharactersPerLine" : 54,
"minCaptionDurationInMillis" : 3000,
"maxCaptionDurationInMillis" : 9000,
"maxCharactersPerSecondPerCaption" : null,
"comments" : "French comment",
"mediaNotes" : null
} ],
"pageable" : {
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"pageNumber" : 0,
"offset" : 0,
"pageSize" : 5,
"unpaged" : false,
"paged" : true
},
"last" : true,
"totalElements" : 1,
"totalPages" : 1,
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"first" : true,
"size" : 5,
"number" : 0,
"numberOfElements" : 1,
"empty" : false
}
Path | Type | Description |
---|---|---|
|
|
Array of found sub specs |
|
|
ID of the Subtitle Specification |
|
|
ID of the project associated with the Subtitle Specification |
|
|
If true, the subtitle spec will be enforced when captioning/subtitling |
|
|
ID of the Language associated with the Subtitle Specification |
|
|
The Language Name associated with the Subtitle Specification |
|
|
Boolean indicating if the Subtitle Specification is the project default |
|
|
If true, include Spoken Audio |
|
|
If true, include Audio Descriptions |
|
|
If true, include On-Screen text in video in captioning/subtitling |
|
|
Speaker identification method to use for captioning/subtitling. Valid values are FIRST_NAME, FULLNAME, NUMBERED, GENDER, GENRE, SEE_COMMENTS, NONE. |
|
|
Dialogue style to use for captioning/subtitling. Valid values are LINE_BREAKS, DOUBLE_CHEVRON, NO_DASHES, SEE_COMMENTS. |
|
|
The maximum line count allowed in a caption/subtitle |
|
|
The maximum character count allowed in a caption/subtitle line |
|
|
The minimum duration a caption/subtitle is allowed to be (in milliseconds) |
|
|
The maximum duration a caption/subtitle is allowed to be (in milliseconds) |
|
|
General comments for spec (Markdown is supported) |
|
|
Will be returned if taskId is set in filter. Media Notes of the task’s media. |
|
|
Total number of sub specs in full result |
|
|
Total number of pages in full result |
|
|
Is this the first page |
|
|
Is this the last page |
|
|
Number of sub specs per page |
|
|
Page number |
|
|
Number of sub specs per page |
|
|
Details of sort being applied |
Read Subtitle Specifications
A GET
request will return a subtitle specification.
GET /api/subtitleSpecifications/:subtitleSpecId
Parameter | Description |
---|---|
|
The ID of the Subtitle Specification |
Example
Request
GET /api/subtitleSpecifications/1 HTTP/1.1
X-CSRF-TOKEN: 5b8900f6-b5d7-4fd2-8494-7e49134bb68a
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 539
{
"subtitleSpecificationId" : "1",
"projectId" : "1",
"projectDefault" : true,
"languageId" : null,
"languageName" : null,
"enabled" : true,
"spokenAudio" : true,
"audioDescription" : true,
"onScreenText" : true,
"speakerIdentification" : "FULLNAME",
"dialogueStyle" : "DOUBLE_CHEVRON",
"maxLinesPerCaption" : 2,
"maxCharactersPerLine" : 35,
"minCaptionDurationInMillis" : 2000,
"maxCaptionDurationInMillis" : 10000,
"maxCharactersPerSecondPerCaption" : 60,
"comments" : "comment",
"mediaNotes" : null
}
Path | Type | Description |
---|---|---|
|
|
ID of the Subtitle Specification |
|
|
ID of the project associated with the Subtitle Specification |
|
|
If true, the subtitle spec will be enforced when captioning/subtitling |
|
|
ID of the Language associated with the Subtitle Specification |
|
|
The Language Name associated with the Subtitle Specification |
|
|
Boolean indicating if the Subtitle Specification is the project default |
|
|
If true, include Spoken Audio |
|
|
If true, include Audio Descriptions |
|
|
If true, include On-Screen text in video in captioning/subtitling |
|
|
Speaker identification method to use for captioning/subtitling. Valid values are FIRST_NAME, FULLNAME, NUMBERED, GENDER, GENRE, SEE_COMMENTS, NONE. |
|
|
Dialogue style to use for captioning/subtitling. Valid values are LINE_BREAKS, DOUBLE_CHEVRON, NO_DASHES, SEE_COMMENTS. |
|
|
The maximum line count allowed in a caption/subtitle |
|
|
The maximum character count allowed in a caption/subtitle line |
|
|
The minimum duration a caption/subtitle is allowed to be (in milliseconds) |
|
|
The maximum duration a caption/subtitle is allowed to be (in milliseconds) |
|
|
General comments for spec (Markdown is supported) |
Create Subtitle Specification
A POST
request will create a Subtitle Specification.
POST /api/subtitleSpecification
Input
Path | Type | Description |
---|---|---|
|
|
ID of the Project for the Subtitle Specification |
|
|
If true, the subtitle spec will be enforced when captioning/subtitling |
|
|
ID of the Language associated with the Subtitle Specification |
|
|
Boolean indicating if the Subtitle Specification is the project default |
|
|
If true, include Spoken Audio |
|
|
If true, include Audio Descriptions |
|
|
If true, include On-Screen text in video in captioning/subtitling |
|
|
Speaker identification method to use for captioning/subtitling. Valid values are FIRST_NAME, FULLNAME, NUMBERED, GENDER, GENRE, SEE_COMMENTS, NONE. |
|
|
Dialogue style to use for captioning/subtitling. Valid values are LINE_BREAKS, DOUBLE_CHEVRON, NO_DASHES, SEE_COMMENTS. |
|
|
The maximum line count allowed in a caption/subtitle. Valid range is 1-4. |
|
|
The maximum character count allowed in a caption/subtitle line. Valid range is 30-80. |
|
|
The minimum duration a caption/subtitle is allowed to be (in milliseconds). Value needs to be less than maxCaptionDurationInMillis. Valid range is 1000-4000. |
|
|
The maximum duration a caption/subtitle is allowed to be (in milliseconds). Valid range is 2000-10000. |
|
|
General comments for spec (Markdown is supported) |
Example
Request
POST /api/subtitleSpecifications HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: 2bedce09-410a-4b27-b137-55a80b36cfbf
{
"projectId": "11",
"enabled": true,
"onScreenText": true,
"spokenAudio": false,
"audioDescription": false,
"speakerIdentification": "FULLNAME",
"dialogueStyle": "DOUBLE_CHEVRON",
"comments": "**test comments**",
"maxLinesPerCaption":2,
"maxCharactersPerLine":35,
"minCaptionDurationInMillis":2000,
"maxCaptionDurationInMillis":10000,
"maxCharactersPerSecondPerCaption":60
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 587
{
"subtitleSpecificationId" : "99902bba-e830-447a-8bb3-d670d62208b3",
"projectId" : "11",
"projectDefault" : true,
"languageId" : null,
"languageName" : null,
"enabled" : true,
"spokenAudio" : false,
"audioDescription" : false,
"onScreenText" : true,
"speakerIdentification" : "FULLNAME",
"dialogueStyle" : "DOUBLE_CHEVRON",
"maxLinesPerCaption" : 2,
"maxCharactersPerLine" : 35,
"minCaptionDurationInMillis" : 2000,
"maxCaptionDurationInMillis" : 10000,
"maxCharactersPerSecondPerCaption" : 60,
"comments" : "**test comments**",
"mediaNotes" : null
}
Update Subtitle Specification
A PATCH
request will update a Subtitle Specification. This is a JSON Merge Patch.
PATCH /api/subtitleSpecification/:subtitleSpecId
Parameter | Description |
---|---|
|
The ID of the Subtitle Specification |
Input
Path | Type | Description |
---|---|---|
|
|
If true, the subtitle spec will be enforced when captioning/subtitling |
|
|
ID of the Language associated with the Subtitle Specification |
|
|
Boolean indicating if the Subtitle Specification is the project default |
|
|
If true, include Spoken Audio |
|
|
If true, include Audio Descriptions |
|
|
If true, include On-Screen text in video in captioning/subtitling |
|
|
Speaker identification method to use for captioning/subtitling. Valid values are FIRST_NAME, FULLNAME, NUMBERED, GENDER, GENRE, SEE_COMMENTS, NONE. |
|
|
Dialogue style to use for captioning/subtitling. Valid values are LINE_BREAKS, DOUBLE_CHEVRON, NO_DASHES, SEE_COMMENTS. |
|
|
The maximum line count allowed in a caption/subtitle. Valid range is 1-4. |
|
|
The maximum character count allowed in a caption/subtitle line. Valid range is 30-80. |
|
|
The minimum duration a caption/subtitle is allowed to be (in milliseconds). Value needs to be less than maxCaptionDurationInMillis. Valid range is 1000-4000. |
|
|
The maximum duration a caption/subtitle is allowed to be (in milliseconds). Valid range is 2000-10000. |
|
|
General comments for spec (Markdown is supported) |
Example
Request
PATCH /api/subtitleSpecifications/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: e3a2beb6-e35b-42a4-9c1a-c62418f95e55
{
"comments": "updated comments test"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 553
{
"subtitleSpecificationId" : "1",
"projectId" : "1",
"projectDefault" : true,
"languageId" : null,
"languageName" : null,
"enabled" : true,
"spokenAudio" : true,
"audioDescription" : true,
"onScreenText" : true,
"speakerIdentification" : "FULLNAME",
"dialogueStyle" : "DOUBLE_CHEVRON",
"maxLinesPerCaption" : 2,
"maxCharactersPerLine" : 35,
"minCaptionDurationInMillis" : 2000,
"maxCaptionDurationInMillis" : 10000,
"maxCharactersPerSecondPerCaption" : 60,
"comments" : "updated comments test",
"mediaNotes" : null
}
Delete Subtitle Specification
A DELETE
request will delete a Subtitle Specification.
DELETE /api/subtitleSpecification/:subtitleSpecId
Parameter | Description |
---|---|
|
The ID of the Subtitle Specification to delete |
Example
Request
DELETE /api/subtitleSpecifications/4 HTTP/1.1
X-CSRF-TOKEN: 28d3b275-102c-4ddc-887c-7592be701e17
Response
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Read Default Subtitle Specification For Project
A GET
request will return the default subtitle specification for a project.
DEPRECATED endpoint
Please use Subtitle Specification List API instead. |
GET /api/projects/:projectId/subtitleSpecification
Parameter | Description |
---|---|
|
The ID of the project associated with the Subtitle Specification |
Example
Request
GET /api/projects/1/subtitleSpecification HTTP/1.1
X-CSRF-TOKEN: f481413f-d2b2-412a-9df3-455b30e0691b
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 539
{
"subtitleSpecificationId" : "1",
"projectId" : "1",
"projectDefault" : true,
"languageId" : null,
"languageName" : null,
"enabled" : true,
"spokenAudio" : true,
"audioDescription" : true,
"onScreenText" : true,
"speakerIdentification" : "FULLNAME",
"dialogueStyle" : "DOUBLE_CHEVRON",
"maxLinesPerCaption" : 2,
"maxCharactersPerLine" : 35,
"minCaptionDurationInMillis" : 2000,
"maxCaptionDurationInMillis" : 10000,
"maxCharactersPerSecondPerCaption" : 60,
"comments" : "comment",
"mediaNotes" : null
}
Path | Type | Description |
---|---|---|
|
|
ID of the Subtitle Specification |
|
|
ID of the project associated with the Subtitle Specification |
|
|
If true, the subtitle spec will be enforced when captioning/subtitling |
|
|
ID of the Language associated with the Subtitle Specification |
|
|
The Language Name associated with the Subtitle Specification |
|
|
Boolean indicating if the Subtitle Specification is the project default |
|
|
If true, include Spoken Audio |
|
|
If true, include Audio Descriptions |
|
|
If true, include On-Screen text in video in captioning/subtitling |
|
|
Speaker identification method to use for captioning/subtitling. Valid values are FIRST_NAME, FULLNAME, NUMBERED, GENDER, GENRE, SEE_COMMENTS, NONE. |
|
|
Dialogue style to use for captioning/subtitling. Valid values are LINE_BREAKS, DOUBLE_CHEVRON, NO_DASHES, SEE_COMMENTS. |
|
|
The maximum line count allowed in a caption/subtitle |
|
|
The maximum character count allowed in a caption/subtitle line |
|
|
The minimum duration a caption/subtitle is allowed to be (in milliseconds) |
|
|
The maximum duration a caption/subtitle is allowed to be (in milliseconds) |
|
|
General comments for spec (Markdown is supported) |
|
|
Media notes, not applicable for this API |
Read Default Subtitle Specification For Project’s Media
A GET
request will return the Default subtitle specification for a media in a project.
DEPRECATED endpoint
Subtitle specifications are now per language, and should be read by Task ID. Please use Subtitle Specification List API instead. |
GET /api/projects/:projectId/subtitleSpecification/media/:mediaId
Parameter | Description |
---|---|
|
The ID of the project associated with the Subtitle Specification |
|
The ID of the media associated with the Subtitle Specification |
Example
Request
GET /api/projects/1/subtitleSpecification/media/12 HTTP/1.1
X-CSRF-TOKEN: 9a23e96c-6e49-45cf-9ccc-4f46d3570ff0
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 610
{
"subtitleSpecificationId" : "1",
"projectId" : "1",
"projectDefault" : true,
"languageId" : null,
"languageName" : null,
"enabled" : true,
"spokenAudio" : true,
"audioDescription" : true,
"onScreenText" : true,
"speakerIdentification" : "FULLNAME",
"dialogueStyle" : "DOUBLE_CHEVRON",
"maxLinesPerCaption" : 2,
"maxCharactersPerLine" : 35,
"minCaptionDurationInMillis" : 2000,
"maxCaptionDurationInMillis" : 10000,
"maxCharactersPerSecondPerCaption" : 60,
"comments" : "comment",
"mediaNotes" : "Media contains unique terminology. \r[Test link](https://www.dotsub.com)"
}
Path | Type | Description |
---|---|---|
|
|
ID of the Subtitle Specification |
|
|
ID of the project associated with the Subtitle Specification |
|
|
If true, the subtitle spec will be enforced when captioning/subtitling |
|
|
ID of the Language associated with the Subtitle Specification |
|
|
The Language Name associated with the Subtitle Specification |
|
|
Boolean indicating if the Subtitle Specification is the project default |
|
|
If true, include Spoken Audio |
|
|
If true, include Audio Descriptions |
|
|
If true, include On-Screen text in video in captioning/subtitling |
|
|
Speaker identification method to use for captioning/subtitling. Valid values are FIRST_NAME, FULLNAME, NUMBERED, GENDER, GENRE, SEE_COMMENTS, NONE. |
|
|
Dialogue style to use for captioning/subtitling. Valid values are LINE_BREAKS, DOUBLE_CHEVRON, NO_DASHES, SEE_COMMENTS. |
|
|
The maximum line count allowed in a caption/subtitle |
|
|
The maximum character count allowed in a caption/subtitle line |
|
|
The minimum duration a caption/subtitle is allowed to be (in milliseconds) |
|
|
The maximum duration a caption/subtitle is allowed to be (in milliseconds) |
|
|
General comments for spec (Markdown is supported) |
|
|
Media notes (Markdown supported) |
Create Default Subtitle Specification
A POST
request will create a Default Subtitle Specification for a Project.
DEPRECATED endpoint
Please use Create Subtitle Specification API instead. |
POST /api/projects/:projectId:/subtitleSpecification
Parameter | Description |
---|---|
|
The ID of the project associated with the Subtitle Specification |
Input
Path | Type | Description |
---|---|---|
|
|
If true, the subtitle spec will be enforced when captioning/subtitling |
|
|
If true, include Spoken Audio |
|
|
If true, include Audio Descriptions |
|
|
If true, include On-Screen text in video in captioning/subtitling |
|
|
Speaker identification method to use for captioning/subtitling. Valid values are FIRST_NAME, FULLNAME, NUMBERED, GENDER, GENRE, SEE_COMMENTS, NONE. |
|
|
Dialogue style to use for captioning/subtitling. Valid values are LINE_BREAKS, DOUBLE_CHEVRON, NO_DASHES, SEE_COMMENTS. |
|
|
The maximum line count allowed in a caption/subtitle. Valid range is 1-4. |
|
|
The maximum character count allowed in a caption/subtitle line. Valid range is 30-80. |
|
|
The minimum duration a caption/subtitle is allowed to be (in milliseconds). Value needs to be less than maxCaptionDurationInMillis. Valid range is 1000-4000. |
|
|
The maximum duration a caption/subtitle is allowed to be (in milliseconds). Valid range is 2000-10000. |
|
|
General comments for spec (Markdown is supported) |
Example
Request
POST /api/projects/13/subtitleSpecification HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: 81ca1912-e4d2-4ba5-82ce-54e277d26bea
{
"projectId": "11",
"enabled": true,
"onScreenText": true,
"spokenAudio": false,
"audioDescription": false,
"speakerIdentification": "FULLNAME",
"dialogueStyle": "DOUBLE_CHEVRON",
"comments": "**test comments**",
"maxLinesPerCaption":2,
"maxCharactersPerLine":35,
"minCaptionDurationInMillis":2000,
"maxCaptionDurationInMillis":10000,
"maxCharactersPerSecondPerCaption":60
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 587
{
"subtitleSpecificationId" : "333a66cb-b6e3-40f3-8e27-7d6352e490b2",
"projectId" : "13",
"projectDefault" : true,
"languageId" : null,
"languageName" : null,
"enabled" : true,
"spokenAudio" : false,
"audioDescription" : false,
"onScreenText" : true,
"speakerIdentification" : "FULLNAME",
"dialogueStyle" : "DOUBLE_CHEVRON",
"maxLinesPerCaption" : 2,
"maxCharactersPerLine" : 35,
"minCaptionDurationInMillis" : 2000,
"maxCaptionDurationInMillis" : 10000,
"maxCharactersPerSecondPerCaption" : 60,
"comments" : "**test comments**",
"mediaNotes" : null
}
Update Default Subtitle Specification
A PATCH
request will update the Default Subtitle Specification for a Project. This is a JSON Merge Patch.
DEPRECATED endpoint
Please use Update Subtitle Specification API instead. |
PATCH /api/projects/:projectId:/subtitleSpecification
Parameter | Description |
---|---|
|
The ID of the project associated with the Subtitle Specification |
Input
Path | Type | Description |
---|---|---|
|
|
If true, the subtitle spec will be enforced when captioning/subtitling |
|
|
If true, include Spoken Audio |
|
|
If true, include Audio Descriptions |
|
|
If true, include On-Screen text in video in captioning/subtitling |
|
|
Speaker identification method to use for captioning/subtitling. Valid values are FIRST_NAME, FULLNAME, NUMBERED, GENDER, GENRE, SEE_COMMENTS, NONE. |
|
|
Dialogue style to use for captioning/subtitling. Valid values are LINE_BREAKS, DOUBLE_CHEVRON, NO_DASHES, SEE_COMMENTS. |
|
|
The maximum line count allowed in a caption/subtitle. Valid range is 1-4. |
|
|
The maximum character count allowed in a caption/subtitle line. Valid range is 30-80. |
|
|
The minimum duration a caption/subtitle is allowed to be (in milliseconds). Value needs to be less than maxCaptionDurationInMillis. Valid range is 1000-4000. |
|
|
The maximum duration a caption/subtitle is allowed to be (in milliseconds). Valid range is 2000-10000. |
|
|
General comments for spec (Markdown is supported) |
Example
Request
PATCH /api/projects/1/subtitleSpecification HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: c84b3267-210f-49f6-ae87-cdf8110b8a1d
{
"comments": "updated comments test"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 553
{
"subtitleSpecificationId" : "1",
"projectId" : "1",
"projectDefault" : true,
"languageId" : null,
"languageName" : null,
"enabled" : true,
"spokenAudio" : true,
"audioDescription" : true,
"onScreenText" : true,
"speakerIdentification" : "FULLNAME",
"dialogueStyle" : "DOUBLE_CHEVRON",
"maxLinesPerCaption" : 2,
"maxCharactersPerLine" : 35,
"minCaptionDurationInMillis" : 2000,
"maxCaptionDurationInMillis" : 10000,
"maxCharactersPerSecondPerCaption" : 60,
"comments" : "updated comments test",
"mediaNotes" : null
}
Workflow API
Read Workflow List
A GET
request will list workflows.
GET /api/organizations/:organizationId/workflows
Parameter | Description |
---|---|
|
The ID of the organization owning workflows |
Query Parameters
Parameter | Description |
---|---|
|
Results are returned in pages of data. The pageSize value will be the maximum number of workflows returned in a page. |
|
Page index in paged set. |
|
Filter workflows by name |
|
Filter workflows by Project ID |
Example
Request
GET /api/organizations/dotsub-test/workflows?pageIndex=0&pageSize=1 HTTP/1.1
X-CSRF-TOKEN: 062ec99b-f55c-4b0a-8ef4-94c5fe6a0870
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 795
{
"content" : [ {
"id" : "1",
"createdDate" : "2017-03-22T12:00:00Z",
"modifiedDate" : "2017-03-22T16:00:00Z",
"organizationId" : "dotsub-test",
"organizationName" : "Dotsub Test",
"latestVersion" : "0",
"useDefaultTaskAssignments" : true,
"workflowName" : "Project 1",
"projectToAddInto" : null
} ],
"pageable" : {
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"pageNumber" : 0,
"offset" : 0,
"pageSize" : 1,
"unpaged" : false,
"paged" : true
},
"last" : false,
"totalElements" : 4,
"totalPages" : 4,
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"first" : true,
"size" : 1,
"number" : 0,
"numberOfElements" : 1,
"empty" : false
}
Path | Type | Description |
---|---|---|
|
|
Array of found workflows |
|
|
ID of the workflow |
|
|
Name of the workflow |
|
|
The timestamp the workflow was created |
|
|
The timestamp the workflow was last modified |
|
|
ID of the organization for the workflow |
|
|
Name of the organization for the workflow |
|
|
Latest version of the workflow |
|
|
ID of project to add workflow. Does not apply to this API |
|
|
Total number of workflows in full result |
|
|
Total number of pages in full result |
|
|
Is this the first page |
|
|
Is this the last page |
|
|
Number of workflows per page |
|
|
Page number |
|
|
Number of workflows per page |
|
|
Details of sort being applied |
Project Glossaries API
Read Project Glossaries List
A GET
request will list project glossaries.
GET /api/projects/{projectId}/glossaries
Query Parameters
Parameter | Description |
---|---|
|
Results are returned in pages of data. The pageSize value will be the maximum number of glossaries returned in a page. |
|
Page index in paged set. |
|
Sort the paged glossary set. The result set may be sorted by createdDate, name. Default sort direction is Descending. To sort Ascending, prepend |
|
Filter by glossary name case insensitive |
Example
Request
GET /api/projects/1/glossaries?pageIndex=0&pageSize=1 HTTP/1.1
X-CSRF-TOKEN: 8a2308e0-f42d-4447-a699-af3b3dcc4b67
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 811
{
"content" : [ {
"id" : "8",
"name" : "Sample Glossary 5 for Project 1",
"createdDate" : "2020-12-08T11:59:00Z",
"createdBy" : {
"id" : "5",
"name" : "Dotsub Admin Admin",
"email" : "[email protected]",
"timezone" : "America/Los_Angeles"
},
"csvUpdatedDate" : null,
"projectDefault" : false
} ],
"pageable" : {
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"pageNumber" : 0,
"offset" : 0,
"pageSize" : 1,
"unpaged" : false,
"paged" : true
},
"last" : false,
"totalElements" : 6,
"totalPages" : 6,
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"first" : true,
"size" : 1,
"number" : 0,
"numberOfElements" : 1,
"empty" : false
}
Path | Type | Description |
---|---|---|
|
|
Array of found project glossaries |
|
|
ID of the glossary |
|
|
Name of the glossary |
|
|
Created Date of the glossary in ISO8601 format |
|
|
Date of the last glossary csv update in ISO8601 format |
|
|
Boolean indicates whether the glossary is a project default or not |
|
|
Glossary creator user info |
|
|
Glossary creator user ID |
|
|
Glossary creator user full name |
|
|
Glossary creator email |
|
|
Glossary creator timezone |
|
|
Total number of project glossaries in full result |
|
|
Total number of pages in full result |
|
|
Is this the first page |
|
|
Is this the last page |
|
|
Number of project glossaries per page |
|
|
Page number |
|
|
Number of project glossaries per page |
|
|
Details of sort being applied |
Read Project Glossary
A GET
request will return a specific glossary.
GET /api/projects/{projectId}/glossaries/{glossaryId}
Parameter | Description |
---|---|
|
The ID of the project associated with glossary |
|
The ID of the glossary |
Example
Request
GET /api/projects/13/glossaries/1 HTTP/1.1
X-CSRF-TOKEN: c09a92af-f9a2-4b89-9211-c2acda333980
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 327
{
"id" : "1",
"name" : "Sample Glossary for Project 11",
"createdDate" : "2020-12-01T11:59:00Z",
"createdBy" : {
"id" : "5",
"name" : "Dotsub Admin Admin",
"email" : "[email protected]",
"timezone" : "America/Los_Angeles"
},
"csvUpdatedDate" : "2020-12-01T14:00:00Z",
"projectDefault" : true
}
Path | Type | Description |
---|---|---|
|
|
ID of the glossary |
|
|
Name of the glossary |
|
|
Date of the glossary creation in ISO8601 format |
|
|
Date of the last glossary csv update in ISO8601 format |
|
|
Boolean indicates whether the glossary is a project default or not |
|
|
Glossary creator user info |
|
|
Glossary creator user ID |
|
|
Glossary creator user full name |
|
|
Glossary creator email |
|
|
Glossary creator timezone |
Create Project Glossary
A POST
request will create project glossary.
POST /api/project/{projectId}/glossaries
Input
Part | Description |
---|---|
|
Required A multipart CSV file represents the glossary content, File must be matching the following rules Glossary file must be a CSV file, here is an example http://videotms.com/misc/sample-glossary.csv to get you started. Please make sure your CSV file is using comma or semi-colon as delimiter. The first row of the CSV should list all the language codes included in the glossary. Language codes are composed by the ISO 693-1 code (2 letters), dash, and the ISO 3166 country code (2 letters, uppercase). For example: en-US, ja-JP or pt-BR. The glossary must contain at least two languages (columns). Only languages enabled on your organization’s settings are allowed. Blank glossary entries are allowed, if there are no translations available for the given language. |
|
Required A multipart json represents the metadata required to create the glossary |
Path | Type | Description |
---|---|---|
|
|
Glossary payload that contains information about glossary |
|
|
Required String to set the glossary name |
|
|
Boolean to set whether the glossary is a project default or not Default=true |
Example
Request
POST /api/projects/1/glossaries HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
X-CSRF-TOKEN: b736f84b-a96e-4c6f-acfa-99761f5e1d06
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=glossaryFile; filename=sample-glossary.csv
Content-Type: multipart/form-data
en-US,fr-FR,it-IT,es-ES
Adapter,Adaptateur,adattatore,adaptador
adapter,adaptateur,adattatore,adaptador
caution,attention,attenzione,precaución
Caution,see O4,attenzione,precaución
Gun,Pistolet,pistola,pistola
gun,pistolet,pistola,pistola
Label,Étiquette,etichetta,etiqueta
label,étiquette,etichettare,etiqueta
Manifold,Collecteur,collettore,"colector, múltiple"
manifold,embase,collettore,"colector, múltiple"
pin,"fiche, goupille, broche, cheville, tenon, tige",pin,"clavija (eléctrica), pasador, vástago, perno (no roscado), patilla, pin (electrónica)"
Pin,Goupille,perno,"clavija (eléctrica), pasador, vástago, perno (no roscado), patilla, pin (electrónica)"
Plug,Bougie,tappo,"enchufe, tapón"
Plug,"fiche, goupille, broche, cheville, tenon, tige",connettore,"enchufe, tapón"
plug,"not ""prise"", but fiche, goupille, broche, cheville, tenon, tige",spina,"enchufe, tapón"
spring,ressort,molla,"muelle, resorte"
Spring,Ressort,Molla,elástico(a)
Swivel,Pivot,girevole,giratoria(o)
swivel,"raccord tournant, articulation",raccordo girevole,giratoria(o)
Tag,Étiquette,tag,"etiqueta, marca"
tag,"balise, marque",etichetta,"etiqueta, marca"
technical data,données techniques,dati tecnici,característica/información/datos técnicos(as)
Technical Data,Données techniques,Dati tecnici,características/información/datos técnicos(as)
Troubleshooting,Dépannage,Ricerca e riparazione dei guasti,Resolución de problemas
troubleshooting,dépannage,risoluzione dei problemi,Resolución de problemas
buna-N,buna-N,buna-N,buna-N
buna-S,buna-S,buna-S,buna-S
bar,bar,bar,bar
Mpa,MPa,Mpa,Mpa
waterbased,"aqueux, aqueuse",a base d'acqua,"en base acuosa, a base de agua, medio acuoso"
waterborne,à l'eau,a base acquosa,"en base acuosa, a base de agua, medio acuoso"
"1,1,1-trichloro-ethane","1,1,1-trichloroéthane","1,1,1-tricloro-etano","tricloroetano 1,1,1"
4-ball piston design,piston à 4 billes,design a pistone a 4 sfere,pistón de 4 bolas
700 Series Hose Reels,Dévidoirs de la série 700,avvolgitubo Serie 700,Carretes para mangueras serie 700
7900 HD,7900 HD,7900 HD,7900 HD
AAF tip line,gamme de buses AAF,linea di ugelli AAF,línea de boquillas AAF
abrasion resistance,résistance à l'abrasion,resistenza all'abrasione,resistencia a la abrasión
abrasive applications,applications abrasives,applicazioni abrasive,aplicaciones abrasivas
abrasive fillers,produits de remplissage abrasifs,"cariche riempitive abrasive, cariche abrasive",rellenos abrasivos
abrasive materials,matériaux abrasifs,materiali abrasivi,materiales abrasivos
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=glossaryPayload; filename=request
Content-Type: application/json
{
"name": "Sample Glossary One",
"projectDefault": false
}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
Response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 342
{
"id" : "814371e7-495e-4f0d-8cb1-be440b28ec09",
"name" : "Sample Glossary One",
"createdDate" : "2023-03-27T15:45:47.688045Z",
"createdBy" : {
"id" : "6",
"name" : "Dotsub Manager Manager",
"email" : "[email protected]",
"timezone" : "America/Los_Angeles"
},
"csvUpdatedDate" : null,
"projectDefault" : false
}
Update Project Glossary
A PUT
request will update project glossary.
POST /api/project/{projectId}/glossaries/{glossaryId}
Input
Part | Description |
---|---|
|
A multipart CSV file represents the glossary content, File must be matching the following rules Glossary file must be a CSV file, here is an example http://videotms.com/misc/sample-glossary.csv to get you started. Please make sure your CSV file is using comma or semi-colon as delimiter. The first row of the CSV should list all the language codes included in the glossary. Language codes are composed by the ISO 693-1 code (2 letters), dash, and the ISO 3166 country code (2 letters, uppercase). For example: en-US, ja-JP or pt-BR. The glossary must contain at least two languages (columns). Only languages enabled on your organization’s settings are allowed. Blank glossary entries are allowed, if there are no translations available for the given language. |
|
Required A multipart json represents the metadata required to create the glossary |
Path | Type | Description |
---|---|---|
|
|
Glossary payload that contains information about glossary |
|
|
Required String to set the glossary name |
|
|
Boolean to set whether the glossary is a project default or not Default=true |
Example
Request
PUT /api/projects/13/glossaries/1 HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
X-CSRF-TOKEN: 7bda345e-d561-4811-8289-ab9e8a666054
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=glossaryFile; filename=sample-glossary.csv
Content-Type: multipart/form-data
en-US,fr-FR,it-IT,es-ES
Adapter,Adaptateur,adattatore,adaptador
adapter,adaptateur,adattatore,adaptador
caution,attention,attenzione,precaución
Caution,see O4,attenzione,precaución
Gun,Pistolet,pistola,pistola
gun,pistolet,pistola,pistola
Label,Étiquette,etichetta,etiqueta
label,étiquette,etichettare,etiqueta
Manifold,Collecteur,collettore,"colector, múltiple"
manifold,embase,collettore,"colector, múltiple"
pin,"fiche, goupille, broche, cheville, tenon, tige",pin,"clavija (eléctrica), pasador, vástago, perno (no roscado), patilla, pin (electrónica)"
Pin,Goupille,perno,"clavija (eléctrica), pasador, vástago, perno (no roscado), patilla, pin (electrónica)"
Plug,Bougie,tappo,"enchufe, tapón"
Plug,"fiche, goupille, broche, cheville, tenon, tige",connettore,"enchufe, tapón"
plug,"not ""prise"", but fiche, goupille, broche, cheville, tenon, tige",spina,"enchufe, tapón"
spring,ressort,molla,"muelle, resorte"
Spring,Ressort,Molla,elástico(a)
Swivel,Pivot,girevole,giratoria(o)
swivel,"raccord tournant, articulation",raccordo girevole,giratoria(o)
Tag,Étiquette,tag,"etiqueta, marca"
tag,"balise, marque",etichetta,"etiqueta, marca"
technical data,données techniques,dati tecnici,característica/información/datos técnicos(as)
Technical Data,Données techniques,Dati tecnici,características/información/datos técnicos(as)
Troubleshooting,Dépannage,Ricerca e riparazione dei guasti,Resolución de problemas
troubleshooting,dépannage,risoluzione dei problemi,Resolución de problemas
buna-N,buna-N,buna-N,buna-N
buna-S,buna-S,buna-S,buna-S
bar,bar,bar,bar
Mpa,MPa,Mpa,Mpa
waterbased,"aqueux, aqueuse",a base d'acqua,"en base acuosa, a base de agua, medio acuoso"
waterborne,à l'eau,a base acquosa,"en base acuosa, a base de agua, medio acuoso"
"1,1,1-trichloro-ethane","1,1,1-trichloroéthane","1,1,1-tricloro-etano","tricloroetano 1,1,1"
4-ball piston design,piston à 4 billes,design a pistone a 4 sfere,pistón de 4 bolas
700 Series Hose Reels,Dévidoirs de la série 700,avvolgitubo Serie 700,Carretes para mangueras serie 700
7900 HD,7900 HD,7900 HD,7900 HD
AAF tip line,gamme de buses AAF,linea di ugelli AAF,línea de boquillas AAF
abrasion resistance,résistance à l'abrasion,resistenza all'abrasione,resistencia a la abrasión
abrasive applications,applications abrasives,applicazioni abrasive,aplicaciones abrasivas
abrasive fillers,produits de remplissage abrasifs,"cariche riempitive abrasive, cariche abrasive",rellenos abrasivos
abrasive materials,matériaux abrasifs,materiali abrasivi,materiales abrasivos
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=glossaryPayload; filename=request
Content-Type: application/json
{
"name": "Sample Glossary One",
"projectDefault": false
}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
Response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 324
{
"id" : "1",
"name" : "Sample Glossary One",
"createdDate" : "2020-12-01T11:59:00Z",
"createdBy" : {
"id" : "5",
"name" : "Dotsub Admin Admin",
"email" : "[email protected]",
"timezone" : "America/Los_Angeles"
},
"csvUpdatedDate" : "2023-03-27T15:45:48.425407Z",
"projectDefault" : false
}
Delete Glossary
A DELETE
request will delete glossary.
DELETE /api/projects/{projectId}/glossaries/{glossaryId}
Parameter | Description |
---|---|
|
The ID of the project associated with glossary |
|
The ID of the glossary |
Example
Request
DELETE /api/projects/13/glossaries/1 HTTP/1.1
X-CSRF-TOKEN: 9a8f9721-d596-4ad9-9c62-6ce7f4dc1d14
Response
HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Organization Languages API
An API used for reading languages in a given organization
A GET
request will list the organization’s languages.
GET /api/organizations/:organizationId/languages
Parameter | Description |
---|---|
|
Required Id of the organization contains language list. |
Example
Request
GET /api/organizations/dotsub-test/languages HTTP/1.1
X-CSRF-TOKEN: a0ee459c-8c07-4942-8296-1c753a65ae8b
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1106
[ {
"id" : "en-US",
"code" : "eng",
"countryCode" : "US",
"alpha2BCode" : "eng",
"alpha2TCode" : "eng",
"alpha1Code" : "en",
"name" : "English (United States)",
"direction" : "LTR",
"localizedName" : "English"
}, {
"id" : "fr-FR",
"code" : "fra",
"countryCode" : "FR",
"alpha2BCode" : "fre",
"alpha2TCode" : "fra",
"alpha1Code" : "fr",
"name" : "French (France)",
"direction" : "LTR",
"localizedName" : "Français"
}, {
"id" : "it-IT",
"code" : "ita",
"countryCode" : "IT",
"alpha2BCode" : "ita",
"alpha2TCode" : "ita",
"alpha1Code" : "it",
"name" : "Italian",
"direction" : "LTR",
"localizedName" : "Italiano"
}, {
"id" : "sk-SK",
"code" : "slk",
"countryCode" : null,
"alpha2BCode" : "slk",
"alpha2TCode" : "slk",
"alpha1Code" : "sk",
"name" : "Slovak",
"direction" : "LTR",
"localizedName" : "Slovenčina"
}, {
"id" : "es-ES",
"code" : "spa",
"countryCode" : "ES",
"alpha2BCode" : "spa",
"alpha2TCode" : "spa",
"alpha1Code" : "es",
"name" : "Spanish (Spain)",
"direction" : "LTR",
"localizedName" : "Español"
} ]
Path | Type | Description |
---|---|---|
|
|
Array of found languages in organization. |
|
|
Language ID is mostly in BCP47 format ( |
|
|
Language name with country name appended e.g 'English (United States)' |
|
|
ISO 639-3 Code (3 letters e.g 'eng') |
|
|
ISO-3166-1 alpha-2 |
|
|
ISO 639-2 Bibliographic Synonym |
|
|
ISO 639-2 Bibliographic Synonym |
|
|
ISO 639-1 (2 letters e.g 'en') |
|
|
Language direction can be 'RTL' or 'LTR' |
User API
Read Users
An API used for reading users in a given organization
A GET
request will list the organization’s users.
GET /api/users
Query Parameters
Parameter | Description |
---|---|
|
Results are returned in pages of data. The pageSize value will be the maximum number of users returned in a page. |
|
Page index in paged set. |
|
Required ID of user’s organization, required to include assignee data in response for user |
|
Sort the paged users set. The result set may be sorted by email and lastActive. Default direction is Descending. To sort Ascending, prepend |
|
Filter by email address |
|
Filter by user last name, first name |
|
Filter by project ID, applicable to Project Managers only |
|
Filter by tags of users |
|
Filter by Last Active Date of the user should be in ISO8601 format eg:2018-09-01T12:01:00 |
|
Filter by user skill type, It can be one of these values (CAPTION, TRANSLATION, REVIEW, POST_EDITING, PROOF_READING, SIGN_OFF) |
|
Filter by skill source language id |
|
Filter by skill target language id |
Example
Request
GET /api/users?organizationId=dotsub-test&email=translator2%40dotsub-test.com&pageIndex=0&pageSize=2 HTTP/1.1
X-CSRF-TOKEN: 62cd2872-260a-452f-81dd-57ea3ce44354
Response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1578
{
"content" : [ {
"userId" : "14",
"firstname" : "Sally",
"lastname" : "Translator",
"email" : "[email protected]",
"timezone" : "America/Los_Angeles",
"displayName" : "Sally Translator",
"systemAdmin" : false,
"lastActive" : null,
"selectedAssigneeUser" : {
"id" : "b15101fb-7d2f-4aed-8b1f-c6abf611df8f",
"name" : "Translator, Sally",
"type" : "USER",
"shared" : false,
"organizationId" : "dotsub-test",
"createdDate" : "2022-04-11T12:29:22.010094Z",
"email" : "[email protected]",
"userId" : "14",
"users" : [ {
"userId" : "14",
"firstname" : "Sally",
"lastname" : "Translator",
"email" : "[email protected]",
"timezone" : "America/Los_Angeles",
"displayName" : "Sally Translator",
"systemAdmin" : false,
"lastActive" : null,
"selectedAssigneeUser" : null,
"assigneeUsers" : null
} ],
"active" : true,
"tags" : [ ],
"roles" : null,
"acceptLimit" : 0
},
"assigneeUsers" : null
} ],
"pageable" : {
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"pageNumber" : 0,
"offset" : 0,
"pageSize" : 2,
"unpaged" : false,
"paged" : true
},
"last" : true,
"totalElements" : 1,
"totalPages" : 1,
"sort" : {
"empty" : false,
"unsorted" : false,
"sorted" : true
},
"first" : true,
"size" : 2,
"number" : 0,
"numberOfElements" : 1,
"empty" : false
}
Path | Type | Description |
---|---|---|
|
|
Array of found users |
|
|
ID of the user |
|
|
User First Name |
|
|
User Last Name |
|
|
User Email |
|
|
Is User System Admin |
|
|
User first and last names as displayed in app |
|
|
The user’s registered timezone |
|
|
The Last Active Date of when the user was in VideoTMS |
|
|
The assignee user ID used for task assignment |
|
|
Total number of users in full result |
|
|
Total number of pages in full result |
|
|
Is this the first page |
|
|
Is this the last page |
|
|
Number of media per page |
|
|
Page number |
|
|
Number of users per page |
|
|
Sort details |
Create Users
A POST
request will create users in the associated organization.
POST /api/users
Input
Path | Type | Description |
---|---|---|
|
|
Required ID of organization |
|
|
Required The organizationRole property shall be the role of the added users. Valid values are LINGUIST and ADMIN |
|
|
Array of UserDtos to add to organization |
|
|
Required The email property shall be the email of the added user |
Example
Request
POST /api/users HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: b9cbb4c0-88f7-4e62-9bc5-1ce6be654e73
{
"organizationId": "dotsub-test",
"organizationRole": "LINGUIST",
"userDtos": [
{
"email": "[email protected]"
}
]
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1064
[ {
"userId" : "d33f9b74-75b1-492a-97fe-f77094d2fda4",
"firstname" : null,
"lastname" : null,
"email" : "[email protected]",
"timezone" : null,
"displayName" : "[email protected] (Pending Registration)",
"systemAdmin" : false,
"lastActive" : null,
"selectedAssigneeUser" : {
"id" : "57fd672a-af28-4461-ad9d-e39fc127c410",
"name" : null,
"type" : "USER",
"shared" : false,
"organizationId" : "dotsub-test",
"createdDate" : "2023-03-27T15:45:51.703394Z",
"email" : "[email protected]",
"userId" : "d33f9b74-75b1-492a-97fe-f77094d2fda4",
"users" : [ {
"userId" : "d33f9b74-75b1-492a-97fe-f77094d2fda4",
"firstname" : null,
"lastname" : null,
"email" : "[email protected]",
"timezone" : null,
"displayName" : "t[email protected] (Pending Registration)",
"systemAdmin" : false,
"lastActive" : null,
"selectedAssigneeUser" : null,
"assigneeUsers" : null
} ],
"active" : true,
"tags" : [ ],
"roles" : null,
"acceptLimit" : 0
},
"assigneeUsers" : null
} ]
Delete Users
A DELETE
request will use delete users from the associated organization.
DELETE /api/users
Input
Path | Type | Description |
---|---|---|
|
|
Required ID of organization |
|
|
Array of UserDtos to delete from organization |
|
|
Required The email property shall be the email of the deleted user |
Example
Request
DELETE /api/users HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-CSRF-TOKEN: 14dbd11d-2bd8-4769-84f7-0dd7dffebfa4
{
"organizationId": "dotsub-test",
"userDtos": [
{
"email": "[email protected]"
}
]
}
Response
HTTP/1.1 200 OK
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN