Carte is Pentaho Data Integration's (PDI) remote server component that provides a web-based API for executing and monitoring transformations and jobs. This document describes the REST API endpoints available in Carte.
http://{hostname}:{port}/kettle
Default port: 8080
Carte supports basic HTTP authentication. You can configure username and password in the carte configuration.
Most endpoints support both XML and HTML output formats controlled by the xml parameter:
xml=Y- Returns XML responsexml=Nor omitted - Returns HTML response
GET /kettle/status
Retrieves comprehensive server status including system information, running transformations, and jobs.
Parameters:
xml(optional, boolean) - Output format.Yfor XML, HTML otherwise.
Response: Server status including:
- Memory usage
- CPU information
- Running transformations and jobs
- System information
Example:
curl "http://localhost:8080/kettle/status?xml=Y"GET /kettle/stopCarte
Gracefully shuts down the Carte server.
Parameters:
xml(optional, boolean) - Output format
Response: Confirmation of shutdown request
POST /kettle/addTrans
Uploads and registers a transformation for execution.
Parameters:
- Transformation XML content in request body
Response: Transformation ID and status
GET /kettle/registerTrans
Registers a transformation from repository or file system.
Parameters:
name(required) - Transformation namexml(optional) - Output format
GET /kettle/transStatus
Retrieves status of a specific transformation.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output formatfrom(optional) - Starting log line numbersendResult(optional) - Include execution results
Response: Transformation status including:
- Execution status
- Step statuses
- Log information
- Performance metrics
Example:
curl "http://localhost:8080/kettle/transStatus?name=my-transformation&xml=Y"GET /kettle/startTrans
Starts execution of a registered transformation.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/stopTrans
Stops execution of a running transformation.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/pauseTrans
Pauses execution of a running transformation.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/removeTrans
Removes a transformation from the server.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/executeTrans
Executes a transformation synchronously and returns results.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/runTrans
Runs a transformation asynchronously.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/prepareExec
Prepares a transformation for execution without starting it.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/startExec
Starts execution of a prepared transformation.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/cleanupTrans
Cleans up resources used by a transformation.
Parameters:
name(required) - Transformation nameid(optional) - Transformation IDxml(optional) - Output format
GET /kettle/transImage
Retrieves a visual representation (image) of the transformation.
Parameters:
name(required) - Transformation nameid(optional) - Transformation ID
Response: PNG image of the transformation flow
POST /kettle/addJob
Uploads and registers a job for execution.
Parameters:
- Job XML content in request body
Response: Job ID and status
GET /kettle/registerJob
Registers a job from repository or file system.
Parameters:
name(required) - Job namexml(optional) - Output format
GET /kettle/jobStatus
Retrieves status of a specific job.
Parameters:
name(required) - Job nameid(optional) - Job IDxml(optional) - Output formatfrom(optional) - Starting log line number
Response: Job status including:
- Execution status
- Job entry statuses
- Log information
- Performance metrics
Example:
curl "http://localhost:8080/kettle/jobStatus?name=my-job&xml=Y"GET /kettle/startJob
Starts execution of a registered job.
Parameters:
name(required) - Job nameid(optional) - Job IDxml(optional) - Output format
GET /kettle/stopJob
Stops execution of a running job.
Parameters:
name(required) - Job nameid(optional) - Job IDxml(optional) - Output format
GET /kettle/removeJob
Removes a job from the server.
Parameters:
name(required) - Job nameid(optional) - Job IDxml(optional) - Output format
GET /kettle/executeJob
Executes a job synchronously and returns results.
Parameters:
name(required) - Job nameid(optional) - Job IDxml(optional) - Output format
GET /kettle/runJob
Runs a job asynchronously.
Parameters:
name(required) - Job nameid(optional) - Job IDxml(optional) - Output format
GET /kettle/jobImage
Retrieves a visual representation (image) of the job.
Parameters:
name(required) - Job nameid(optional) - Job ID
Response: PNG image of the job flow
GET /kettle/properties
Retrieves server configuration properties.
Parameters:
xml(optional) - Output format
Response: Server properties and configuration
GET /kettle/nextSequence
Gets the next value from a named sequence.
Parameters:
name(required) - Sequence nameincrement(optional) - Increment amountxml(optional) - Output format
GET /kettle/sniffStep
Sniffs data output from a transformation step for analysis.
Parameters:
trans(required) - Transformation namestep(required) - Step namecopynr(optional) - Copy numbertype(optional) - Data typexml(optional) - Output format
POST /kettle/addExport
Exports transformation or job resources.
Parameters:
- Export configuration in request body
GET /kettle/registerSlave
Registers a slave server in the cluster.
Parameters:
- Slave server configuration
xml(optional) - Output format
GET /kettle/getSlaves
Retrieves list of registered slave servers.
Parameters:
xml(optional) - Output format
POST /kettle/registerPackage
Registers a deployment package.
Parameters:
- Package content in request body
GET /kettle/allocateSocket
Allocates a server socket for communication.
Parameters:
rangeStart(required) - Starting port rangehostname(required) - Hostnameid(required) - Socket IDxml(optional) - Output format
GET /kettle/listSocket
Lists allocated server sockets.
Parameters:
xml(optional) - Output format
GET /carte/systemInfo
Retrieves system information in JSON format.
Response: JSON object with server status
GET /carte/configDetails
Retrieves configuration details in JSON format.
Response: JSON array with configuration parameters
GET /carte/transformations
Retrieves list of transformations in JSON format.
Response: JSON array of transformation entries
GET /carte/transformations/detailed
Retrieves detailed list of transformations in JSON format.
Response: JSON array with detailed transformation information
All endpoints return appropriate HTTP status codes:
200 OK- Request successful404 Not Found- Transformation/Job not found500 Internal Server Error- Server error occurred
Error responses include error messages in the specified format (XML or HTML).
Configure authentication in the carte configuration XML:
<slaveserver>
<name>slave-server-name</name>
<hostname>localhost</hostname>
<port>8080</port>
<username>admin</username>
<password>password</password>
</slaveserver>Use HTTP Basic Authentication:
curl -u username:password "http://localhost:8080/kettle/status?xml=Y"# Get status in XML format
curl "http://localhost:8080/kettle/status?xml=Y"
# Get status in HTML format
curl "http://localhost:8080/kettle/status"# Start a transformation
curl "http://localhost:8080/kettle/startTrans?name=my-transformation&xml=Y"
# Check transformation status
curl "http://localhost:8080/kettle/transStatus?name=my-transformation&xml=Y"
# Stop the transformation
curl "http://localhost:8080/kettle/stopTrans?name=my-transformation&xml=Y"# Start a job
curl "http://localhost:8080/kettle/startJob?name=my-job&xml=Y"
# Check job status
curl "http://localhost:8080/kettle/jobStatus?name=my-job&xml=Y"
# Stop the job
curl "http://localhost:8080/kettle/stopJob?name=my-job&xml=Y"- Enable Authentication: Always configure username/password authentication
- Use HTTPS: Configure SSL/TLS for production environments
- Network Security: Restrict access to Carte ports using firewalls
- Input Validation: Carte validates input parameters to prevent injection attacks
Sample carte configuration (carte-config.xml):
<?xml version="1.0" encoding="UTF-8"?>
<slave_config>
<slaveserver>
<name>Carte-Server</name>
<hostname>localhost</hostname>
<port>8080</port>
<username>admin</username>
<password>password</password>
<master>N</master>
</slaveserver>
<max_log_lines>10000</max_log_lines>
<max_log_timeout_minutes>1440</max_log_timeout_minutes>
<object_timeout_minutes>1440</object_timeout_minutes>
</slave_config>Start Carte with configuration:
./carte.sh carte-config.xml- Connection Refused: Check if Carte is running and port is accessible
- Authentication Failed: Verify username/password configuration
- Transformation Not Found: Ensure transformation is registered with correct name
- Memory Issues: Monitor server resources and adjust JVM settings
Enable debug logging to troubleshoot issues:
./carte.sh carte-config.xml -l DEBUGSimple health check endpoint:
curl "http://localhost:8080/kettle/status"If this returns a 200 status code, Carte is running properly.