Skip to main content

Capella Cambria FTC and Cluster

REST API Documentation

Document History

FTC VersionDescription
2.1More information regarding Cluster usage
2.2Added API JobCleanUp
2.4 PreviewAdded more options for method “SetSettings” and updated information for method “GetSettings”
2.4Added more options for API “SetJobInfo” and “GetListOfJobs”
3.0Added more options for API “GetListOfJobs”, to search by source filename or output filename
3.2Added API “SetClusterTags” and “GetClusterTags”
3.2Added 'HasCluster' to GetSystemInfo, some information about new job types, ProcessArchitecture info.
3.2Added 'JobTag' to JobDescr (JobData description)
3.2Added Source File Analysis job type information, and Machine maintenance mode disconnect
4.0Added API “AddMachine”
4.5Added more options for API “SetJobInfo”; Updated API responses for “GetListOfJobs”
4.5Added more attributes to JobDescr for GetJobInfo
4.8Fixed errors in API “SetSettings” and added more attributes
5.0.1Fixed errors in formatting of this document; Added new Job Type “Management_FlowParent”
5.1Removed non-HTTPS ports (8648, 8650)
5.5Added API "CambriaManagerOptions"

1. Introduction

This document describes the Cambria FTC Application Programming Interface (API). This API allows programmatic control over FTC and Cluster. The API can be used to add, manage and delete FTC jobs, configure FTC settings, get information about a machine running FTC and more.

The API is implemented using REST architecture. The FTC software runs a web server which exposes the REST API described in this document. HTTP is used as the transport layer, and server responses are returned in XML format. A client using the API can run on the machine where FTC is installed or on another machine on the same network.

REST APIs use standard HTTP methods (GET, POST, PUT and DELETE). They can therefore be used from any programming or scripting language which is able to make HTTP calls.

1.1 Before using the API

Before starting to use the API, it is recommended to become familiar with FTC using its User Interface. This will help understand the concept of a job and the job management system, which in turn will make using the API a simpler task.

A sample application using the API is also available. Not only is the C# source code for this application available, but the application itself implements a User Interface which demonstrates the use of the API. It displays the URIs called, the server XML responses and status codes returned from the server. Please note that this sample application only runs on Windows and requires .NET 4.7.2 or newer.

Sample function called, XML responses and POSTed data to add and monitor a transcoding job are available in the FTC_APISamples folder included with this package.

A web browser can also be used to call the API functions which use the HTTP GET method.

1.2 Requirements/Prerequisites

FTC must be installed on a machine located on the same network as the application using the API. FTC runs the API web server as a Windows Service, and it is available as soon as the FTC machine has started up.

Writing an application using the API requires familiarity with a programming or scripting language which can use standard HTTP methods, such as:

  • C
  • C++
  • C#
  • Java
  • Python
  • Perl
  • Ruby
  • VisualBasic
  • Delphi
  • PHP

Applications using the API can run on various operating systems, such as:

  • Microsoft Windows
  • Apple macOS
  • Apple iOS
  • Linux
  • Google Android

1.3 Notes about methods usage

Success or failure of the methods is described using standard HTTP status codes. Status codes in the 200-299 range indicate success. Status codes in the 400-599 range indicate errors. More information about HTTP status codes can be found at: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

The methods of the API can only be executed using the HTTPS protocol.

Default ports:

  • FTC: HTTP 8647, HTTPS 8648
  • Cluster: HTTP 8649, HTTPS 8650

1.4 FTC (single machine) vs Cluster (multi-machine) usage

Machines with Cambria Cluster are running two web servers. The first one uses ports 8647 and 8648, and it is the local FTC web server. This is used by Cluster to assign jobs to the machine it is running on, and query the status of these jobs. The other web server uses ports 8649 and 8650 and it is the Cluster web server.

The Cluster web server includes additional functionality, providing information and control over the machines that it is controlling.

To assign jobs to the Cluster and have them distributed to the machines of the cluster, these jobs must be added to the Cluster web server. Similarly to delete a job which was assigned to the Cluster, or to list the Cluster jobs, the Cluster web server must also be used.

To interact with Cambria Cluster, it is only necessary to communicate with the machine running Cambria Cluster, and ports 8649 or 8650 must be used.

To detect if Cluster is installed, call GetSystemInfo on the FTC web server (with port 8647 or 8648) and check if HasCluster attribute is set to 1.


2. API Methods

This chapter describes the different methods of the API, as well as their parameters and the expected response.

Each method of the API is described in this chapter. For each method, the following elements are described:

  • Method name: used to refer to a particular method in our documentation.
  • Description: a brief overview of the method's use
  • Note: any notes of interest regarding the method
  • Arguments: list of arguments which can be passed to the method
  • HTTP method: the HTTP verb used for this method (GET, POST, PUT or DELETE)
  • HTTP POST XML Content: XML to pass to the server when using POST (UTF-8 encoded)
  • HTTP XML response: XML returned by the method

The examples assume that Cambria FTC is installed on a machine with name “MachineName” and the REST API server is configured to use port 8648.

Methods which require a job ID use the following notation in the document: https://machineName:8648/CambriaFC/v1/Jobs/[JobID]

To use them, replace [JobID] with the actual job ID. For example: https://machineName:8648/CambriaFC/v1/Jobs/dce7d7f1-d10d-4c3d-95ed-58db5b8a7a05

For methods that are designed to work with Cluster, the port to be used is port 8650.

Methods for Cluster which require a machine ID use the following notation in the document: https://machineName:8650/CambriaFC/v1/Machines/[MachineID]

To use them, replace [MachineID] with the actual machine ID. For example: https://machineName:8650/CambriaFC/v1/Machines/14fc5617-ee6a-4a2d-8f63-b610fd3dc427

Note: The XML Elements mentioned in this section are described in Chapter 3 — XML Elements.

GetSystemInfo

FTC: http://machineName:8647/CambriaFC/v1/SystemInfo
Cluster: http://machineName:8649/CambriaFC/v1/SystemInfo

Description: Retrieve information about the computer system.

Note: Low impact method, can be used to verify that the REST API server is running.

Arguments: none

HTTP Method: GET

HTTP XML Response Elements:

ElementParentDescription
ContentNoneContainer of the response.
StatusContentLogs of the API call.
ServerRequestStatusInformation about the request.
ErrorStatusInformation about errors; only exists when there is any.
SystemContentSystem information.
HasClusterSystemSet to '1' indicates that Cambria Cluster is installed on the system.

GetSystemStatus

FTC: http://machineName:8647/CambriaFC/v1/SystemStatus
Cluster: http://machineName:8649/CambriaFC/v1/SystemStatus

Description: Retrieve information about current resource usage (CPU/RAM).

Arguments: none

HTTP Method: GET

HTTP XML Response Elements:

ElementParentDescription
ContentNoneContainer of the response.
StatusContentLogs of the API call.
ServerRequestStatusInformation about the request.
ErrorStatusInformation about errors; only exists when there is any.
SystemContentSystem information.

AddJob

FTC: http://machineName:8647/CambriaFC/v1/Jobs
Cluster: http://machineName:8649/CambriaFC/v1/Jobs

Description: Adds jobs to the system.

Note: The HTTP XML response includes a jobID (unique job identifier) in ServerRequest which can be used by other methods (DeleteJob, GetJobInfo, etc.).

Arguments: none

HTTP Method: POST

HTTP POST JobData:

  • Element JobDescr: specification of the job (see Chapter 4 — Job Specification)

HTTP XML Response Elements:

  • Content, Status, ServerRequest, Error

DeleteJob

FTC: http://machineName:8647/CambriaFC/v1/Jobs/[JobID]
Cluster: http://machineName:8649/CambriaFC/v1/Jobs/[JobID]

Description: Deletes job with ID [JobID] from the system.

Note: Deletion is permanent. To stop a running job but keep it in the system for later restart, use SetJobInfo to change job status to cancel or pause.

Arguments: none

HTTP Method: DELETE

HTTP XML Response Elements:

  • Content, Status, ServerRequest, Error, System

GetJobInfo

FTC: http://machineName:8647/CambriaFC/v1/Jobs/[JobID]
Cluster: http://machineName:8649/CambriaFC/v1/Jobs/[JobID]

Alternatives using arguments:

  • ...?Content=Full
  • ...?Content=Status
  • ...?Content=Description
  • ...?Content=JobData

Description: Retrieves information about a job.

Arguments:

  • Content = Description (default), Status, JobData, or Full.

HTTP Method: GET

HTTP XML Response Elements:

  • Content, Status, ServerRequest, Error
  • Job: the posted job data (see Chapter 4)
  • JobDesc: metadata (submission time, retries, status, errors, etc. — see Chapter 3 — JobDesc)
  • Task: child of JobDesc; tasks progress (a job can have multiple tasks)

GetListOfJobs

FTC: http://machineName:8647/CambriaFC/v1/Jobs
Cluster: http://machineName:8649/CambriaFC/v1/Jobs

Examples:

  • ...?Status=Running
  • ...?Status=All&Count=50&Offset=0
  • ...?OutputFilename=capella*
  • ...?Status=All&Count=50&Offset=50&SortBy=SubmitTime&OrderBy=Asc

Description: Retrieves a list of JobIDs.

Arguments:

NameTypeDescription
StatusAll (default), Queued, Running, Paused, Cancelled, Done, ErrorFilter by job status
SourceFilenameTextFilter by source filename (glob-like)
OutputFilenameTextFilter by output filename (glob-like)
CountInt (default: 100, max: 1000)Max number of JobIDs to return
OffsetInt (default: 0)Offset index (e.g., Count=20 & Offset=60 → returns items 60–79)
SortBySubmitTime (default), StartTime, EndTime, Priority, StatusSort column (required when using OrderBy)
OrderByAsc (default), DescSort order

HTTP Method: GET

HTTP XML Response Elements:

  • Content, Status, ServerRequest, Error
  • JobList
    • Job element(s), each contains JobID

GetJobPreviewImage

FTC: http://machineName:8647/CambriaFC/v1/Jobs/[JobID]/PreviewFrame
Cluster: http://machineName:8649/CambriaFC/v1/Jobs/[JobID]/PreviewFrame

Description: Retrieves a JPEG image of the current frame being transcoded.

Note: On success, returns JPEG content. On error, returns XML similar to other API responses. Caller can check HTTP Content-Type or status code.

Arguments: none

HTTP Method: GET

HTTP XML Response (on error): Content, Status, ServerRequest, Error

SetJobInfo

FTC: http://machineName:8647/CambriaFC/v1/Jobs/[JobID]/
Cluster: http://machineName:8649/CambriaFC/v1/Jobs/[JobID]/

Examples:

  • ...?Priority=1
  • ...?Priority=Urgent
  • ...?Status=Queue
  • ...?Status=Queue&Diagnostics=true
  • ...?ProcessPriority=Low
  • ...?Retries=0

Description: Modifies the job settings for the job with ID [JobID].

Note: No default call; each call must include one or more arguments. Prefer changing one property per call to avoid partial effects.

Arguments:

NameTypeDescription
PriorityInt/String1 (highest) to 10 (lowest) or urgent
StatusQueue, Resume, Pause, CancelAttempt to change job status
RetriesIntRetry count (>= 0)
ProcessPriorityRealtime, High, Abovenormal, Normal, Belownormal, LowProcess priority

HTTP Method: PUT

HTTP XML Response Elements: Content, Status, ServerRequest, Error

GetSettings

FTC: http://machineName:8647/CambriaFC/v1/Settings
Cluster: http://machineName:8649/CambriaFC/v1/Settings

Description: Retrieves information on settings, such as number of transcoding slots (maximum simultaneous transcoding jobs), and job stalling timeout.

Arguments: none

HTTP Method: GET

HTTP XML Response Elements:

  • Content, Status, ServerRequest, Error
  • Settings (contains TranscodingSlots, JobStallTimeout)

SetSettings

FTC: http://machineName:8647/CambriaFC/v1/Settings/
Cluster: http://machineName:8649/CambriaFC/v1/Settings/

Examples:

  • ...?TranscodingSlots=4
  • ...?JobStallTimeout=600
  • ...?PrioritizeUrgentJob=1

Description: Set the number of transcoding slots and job stalling timeout.

Note: No default call. Each call must specify one argument only.

Arguments:

NameTypeDescription
TranscodingSlotsInt1–16
JobStallTimeoutInt600, 1200, 1800, 3600 (seconds)
PrioritizeUrgentJobInt1 = urgent jobs will pause other jobs; 0 otherwise
BroadcastToClusterInt1 = this machine will be controlled by Cluster (then settings above cannot be changed)

HTTP Method: PUT

HTTP XML Response Elements: Content, Status, ServerRequest, Error

JobCleanUp

FTC: http://machineName:8647/CambriaFC/v1/JobCleanUp/
Cluster: http://machineName:8649/CambriaFC/v1/JobCleanUp/

Example:

...?Status=Done&CompletionTime=3600&CompletionTimeMode=OlderThan

Description: Remove jobs with specified status and time constraint. Example above removes jobs which have status “Done” and were completed before 1 hour ago.

Note: No default call. Each call must include status, time and mode. Depending on status, time and mode arguments differ (see types below).

Types:

  • Type 1: Status = Cancelled, Done, Failed; Time constraint = CompletionTime; Mode = Within, OlderThan
  • Type 2: Status = Queued, Paused; Time constraint = SubmissionTime; Mode = Within, OlderThan

Arguments:

NameTypeDescription
StatusQueued, Paused, Cancelled, Done, FailedJob status
CompletionTimeIntUsed with Status Done, Cancelled, Failed (seconds)
SubmissionTimeIntUsed with Status Queued, Paused (seconds)
CompletionTimeModeWithin, OlderThanUsed with Status Done, Cancelled, Failed
SubmissionTimeModeWithin, OlderThanUsed with Status Queued, Paused

HTTP Method: PUT

HTTP XML Response Elements: Content, Status, ServerRequest, Error

GetClientMachines (Cluster only)

http://machineName:8649/CambriaFC/v1/Machines

Description: Retrieves all client machines’ names, IP addresses and MachineIDs that are detected by Cluster.

Arguments: none

HTTP Method: GET

HTTP XML Response Elements:

  • Content, Status, ServerRequest, Error
  • Machines (with Machine children): IP, name and unique identifier

GetMachineInfo (Cluster only)

http://machineName:8649/CambriaFC/v1/Machines/[MachineID]

Description: Retrieves important information for specified machine: FTC version, succeeded/failed counts, CPU cores, transcoding slots, priority, machine status.

Arguments: none

HTTP Method: GET

HTTP XML Response Elements: Content, Status, ServerRequest, Error, MachineInfo

SetMachineSettings (Cluster only)

http://machineName:8649/CambriaFC/v1/Machines/[MachineID]/

Examples:

  • ...?Priority=5
  • ...?TranscodingSlots=2
  • ...?status=connect
  • ...?status=disconnect
  • ...?status=disconnectmaintenance
  • ...?resetslots=true

Description: Modifies the priority, transcoding slots, status for the machine with ID [MachineID].

Note: No default call. Each call must include one argument only. Obtain MachineIDs via GetClientMachines.

Arguments:

NameTypeDescription
PriorityInt1 (highest) to 10 (lowest)
TranscodingSlotsInt0–16
Statusstringconnect, disconnect, or disconnectmaintenance (the latter stops running jobs)
ResetslotsBoolReset succeeded/total count

HTTP Method: PUT

HTTP XML Response Elements: Content, Status, ServerRequest, Error

GetMachineTags (Cluster only)

http://machineName:8649/CambriaFC/v1/Machines/[MachineID]/MachineTags

Description: Retrieves machine tags for the specified machine. Combined with job tags, they can be used to control on which machines certain jobs can be executed.

Arguments: none

HTTP Method: GET

HTTP XML Response Elements: Content, Status, ServerRequest, Error, MachineInfo (including MachineTags)

SetMachineTags (Cluster only)

http://machineName:8649/CambriaFC/v1/Machines/[MachineID]/MachineTags

Example:

  • ...?MachineTags=WithHEVC,Fast,4k

Description: Overwrites job tags for the machine with ID [MachineID].

Arguments:

NameTypeDescription
MachineTagsstringComma-separated machine tags

HTTP Method: PUT

HTTP XML Response Elements: Content, Status, ServerRequest, Error

AddMachine (Cluster only)

http://machineName:8649/CambriaFC/v1/Machines/

Description: Add new machine to Cluster by specifying its IP address. Machines on the same subnet as Cluster are added automatically; use this API to add others.

Arguments: none

HTTP Method: POST

HTTP POST JobData:

  • Element Machine with attributes IP and autoConnect

HTTP XML Response Elements: Content, Status, ServerRequest, Error, MachineInfo


3. XML Elements (Contained in Content Element)

Status → ServerRequest

AttributeDescription
VerbHTTP method (get, delete, put, post)
UriThe URL received by server (starts with /CambriaFC/v1/)
JobIDUnique job identifier (exists for some APIs)

Status → Error

AttributeDescription
TypeString identifying error type
ReadableErrorEngHuman-readable error text (English)
HttpCodeHTTP code (200–299 success) — see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

System

AttributeDescription
CPUsNumber of CPU cores
RamTotal RAM (MB)
ProductVersionVersion number of Cambria FTC
CPUUsageCurrent CPU usage (%)
FreeRamFree RAM (MB)
WinverWindows version

JobList

AttributeDescription
ItemsInListNumber of Job items in this response
TotalItemsTotal number of jobs with the specified status (or all when not specified)

JobList → Job

AttributeDescription
IDUnique job identifier (GUID)

Job

The content varies per job type (see Chapter 4).

Settings

AttributeDescription
TranscodingSlotsMax simultaneous transcoding jobs
JobStallTimeoutJob stalling timeout (seconds)

JobDesc (Attributes)

AttributeDescription
CurrentTaskThe current task that the job is doing
DescriptionConcise remark of the job
DurationAtLastErrorTime since last error (YYYY-MM-DD HH:MM:SS)
DurationSinceLastUpdateTime since last update (YYYY-MM-DD HH:MM:SS)
EndTimeWhen job finished (YYYY-MM-DD HH:MM:SS)
JobIDUnique identifier of the job
JobTypemedia or management
LastErrorLast error message
NumberOfFailuresCount of failures
NumberOfRetriesCount of retries
OutputFilenameOutput file name
Priority1–10 (1 = highest)
ProcessIDOS process ID executing the job
ProgressAtLastError% progress at last error
SourceFilenameSource file name
StartTimeWhen job started (YYYY-MM-DD HH:MM:SS)
StatusCurrent status (see table below)
StatusEnumInternal use only (may change in future versions)
SubmissionTimeWhen job submitted (YYYY-MM-DD HH:MM:SS)
SubmitterSubmitter’s IP
TaskChild nodes containing per-task progress

JobDesc — Status Values

ValueMeaning
queuedJob is in the queue
startingJob is being started
runningJob is in process
pausingJob is pausing
pausedJob is temporarily stopped
resumingJob is resuming after pause
doneJob is complete
cancellingJob is being stopped
cancelledJob has been stopped
erroredJob has stopped due to an error
deletingJob is being removed

JobDesc → Task

AttributeDescription
IDTask ID (starting at 0)
TypeType of task
ProgressProgress (%)

MachineInfo

AttributeDescription
FCVersionFTC version of client machine
FailedCountFailed job count (Cluster-assigned only)
SucceededCountSucceeded job count (Cluster-assigned only)
NbOfCPUsNumber of CPU cores
NbOfSlotsInUseTranscoding slots currently in use
NbOfTransSlotsTotal transcoding slots
PriorityClient machine priority
StatusStatus of client machine

Machines → Machine

AttributeDescription
IdentifierUnique identifier of the machine
NameMachine computer name
IPIP address of the machine

4. JobData Description

4.1 Basic JobData description

JobData consists of a JobDescr element and a child Job element:

<JobDescr Priority="5" NumberOfRetries="1" Description="Test" Submitter="10.12.0.15" ProcessArchitecture="x64" JobTag="">
<Job />
</JobDescr>

4.2 JobData elements

JobDescr attributes:

AttributeDescription
Priority1 (highest) to 10 (lowest)
NumberOfRetriesNumber of times the job manager will retry the job
ProcessArchitecture"x64" for 64-bit, "32" for 32-bit
JobTagCluster-only: job tag used to distribute to matching machines
DescriptionInformative description
SubmitterInformative submitter description
JobProgressOverall job progress (0–100 %)
RealTimeSpeedAverage speed (e.g., 1.75 means 1.75×)

Job attributes:

AttributeDescription
TypeJob type: Fake, MediaGeneric, Management_MediaParent, or SourceAnalysis

4.3 'Fake' Job Type

For Type="Fake":

AttributeDescription
TypeFake
DurationSeconds to complete after start
Stall1 to stall at halfway point
Error1 to error at halfway point

Sample XML:

<JobDescr Priority="5" NumberOfRetries="1" Description="Test Job" Submitter="Norman">
<Job Type="Fake" Duration="50" Stall="0" Error="0"/>
</JobDescr>

4.4 Basic 'MediaGeneric' Job Type

A typical MediaGeneric job (attributes vary by encoder/muxer/filters):

<Job Type="MediaGeneric">
<Filters />
<Settings>
<MuxerSettings FileConflictResolveOption="Overwrite" MuxerName="Muxer - MP4" Name="Mux1"
OutputFilename="C:\Out\test.mp4" OutputFilenameExtension="mp4" Type="MP4" />
<EncoderSettings BFrames="0" BitrateKbps="1000" EncoderName="Video Encoder – H264" FrameHeight="480"
FrameRate="Same as Source" FrameWidth="640" Interlacing="Progressive"
MaxCPBSizeKbits="4000" MaxGOP="90" Name="VideoEnc1" Type="Video" VideoAspectRatio="Same as Source" />
<EncoderSettings BitrateKbps="128" BitrateMode="0" BitsPerSample="16" EncoderName="Audio Encoder - AAC" />
</Settings>
<Upload DestinationUrl="ftp://" Password="" Retries="1" Type="Upload" Use="0" Username="" />
<PostTask CommandLine="" TaskTimeOut="600" Type="PostConversion" />
<Output Mux="Mux1">
<OutStream Enc="VideoEnc1" InStreamIndex="0" InStreamType="Video" OutStreamID="" StreamSrc="Src1" />
<OutStream Enc="AudioEnc1" InStreamIndex="0" InStreamType="Audio" Language="eng" OutStreamID="" StreamSrc="Src1" />
</Output>
<Source Location="C:\sourceFiles\source01.mov" Name="Src1" />
</Job>

Elements overview:

ElementParentDescription
JobContainer for job data
FiltersJobVideo filter configuration list
SettingsJobContainer for encoder and muxer settings
EncoderSettingsSettingsVideo or audio encoder settings
MuxerSettingsSettingsMuxer settings (combines encoded streams)
UploadJobOutput upload settings
PostTaskJobPost-conversion task settings
OutputJobOutput stream routing
OutStreamOutputMaps encoder outputs into muxer inputs
SourceJobSource file(s)

4.5 Multi-target 'MediaGeneric' and 'Management_MediaParent'

MediaGeneric jobs can write to multiple targets from a single read. Management_MediaParent jobs are used for adaptive streaming. Both use structures similar to simple MediaGeneric jobs, with multiple outputs or nested JobDescr entries.

4.6 'SourceAnalysis' Job Type

Attributes:

ElementValueDescription
TypeSourceAnalysisIdentifies a source analysis job
SourceFilenameUNC pathPath of source file
OutputFilenameUNC pathPath of output XML to create
AnalysisDurationSecnumberDuration to analyze (for GOP structure, etc.)
MaxNbTimecodesnumberMax timecodes to extract into output XML
MaxNbMetadatanumberMax metadata units to extract into output XML

4.7 Workflow Job Type Management_FlowParent

Workflow jobs describe combinations of other job types, executed serially or in parallel. Sub-jobs can be distributed to other FTC clients when originating from Cluster.

Limitations:

  • MediaGeneric sub-jobs tested (others not)
  • No UI to facilitate creation
  • No nesting Parallel inside Parallel

Elements:

ElementParentDescription
JobContainer for workflow
SequenceJobSequence of sub-jobs (Parallel or Job)
ParallelSequenceSet of job XMLs to run in parallel
JobDescrSequence/ParallelA complete sub-job XML (serial or in parallel set)

Serial example:

<Job Type="Management_FlowParent">
<Sequence>
<JobDescr Priority="5" Submitter="Cambria" NumberOfRetries="2">
...
</JobDescr>
<JobDescr Priority="5" Submitter="Cambria" NumberOfRetries="2">
...
</JobDescr>
</Sequence>
</Job>

Parallel example:

<Job Type="Management_FlowParent">
<Sequence>
<Parallel>
<JobDescr Priority="5" Submitter="Cambria" NumberOfRetries="2">
...
</JobDescr>
<JobDescr Priority="5" Submitter="Cambria" NumberOfRetries="2">
...
</JobDescr>
</Parallel>
</Sequence>
</Job>

Combined example:

<Job Type="Management_FlowParent">
<Sequence>
<Parallel>
<JobDescr Priority="5" Submitter="Cambria" NumberOfRetries="2">
...
</JobDescr>
<JobDescr Priority="5" Submitter="Cambria" NumberOfRetries="2">
...
</JobDescr>
</Parallel>
<JobDescr Priority="5" Submitter="Cambria" NumberOfRetries="2">
...
</JobDescr>
</Sequence>
</Job>

5. Error Type

API calls return XML back as string. In the element Status, there is a sub-element Error whenever the API cannot complete a request. The Type attribute indicates the technical error concisely:

TypeDescription
SuccessNo error
Database Connection ErrorCannot connect to Database
Database Access ErrorCannot access Database
Invalid Job IDInvalid Job ID specified in URL (or missing where required)
Null PointerJob ID passed in was empty
Invalid XMLXML POSTed was invalid
Invalid PriorityPriority value specified is invalid
Invalid StatusStatus specified is invalid
Invalid ProgressProgress was set inappropriately
Invalid Task TypeType of the job to add is not valid
Invalid OperationRequested query/option is not valid
String Not Large EnoughBuffer is not large enough to store the string
Image Buffer Not StoredUnable to copy retrieved image to buffer or retrieve image
Invalid Diagnostics ModeDiagnostics Mode specified is not supported
Status Not ChangeableJob status cannot be changed to specified value
Missing JobData XMLAttempted to add new jobs without Job XML
Missing ParameterMissing parameters for APIs that require them
Bad ParameterInvalid parameters specified for the API
Unexpected ErrorAll other errors not fitting above

End of Document