Skip to content

WebRobot ETL API (1.0.0)

API for managing projects, jobs, datasets, and ETL pipelines on WebRobot.

Authentication

The API uses API Keys for authentication. Include the X-API-Key header in all requests.

Base URL

  • Production: https://api.webrobot.eu/api
  • Development: http://localhost:8020/api

Rate Limiting

Requests are limited to 1000 requests per minute per API key.

Download OpenAPI description
Overview
WebRobot Support
License
Languages
Servers
Mock server
http://docs.webrobot.eu/_mock/openapi/
Production
https://api.webrobot.eu/api/
Local development
http://localhost:8020/api/

Cloud

Operations

Scheduler

Operations

Spark

Operations

Health

Operations

Training

Operations

EAN Plugin

Operations

Jobs

Operations

Bootstrap

Operations

Images

Operations

Info

Operations

Query

Operations

Upload

Operations

AI Providers

Operations

Models

Operations

Datasets

Operations

Agents

Operations

Categories

Operations

Test

Operations

Cloud Credentials

Operations

Tasks

Operations

Admin

Operations

ETL Library

Operations

Package

Operations

Plugins

Operations

Projects

Operations

Get metrics aggregate of a job

Request

Returns the aggregated metrics of all executions of a job, including sums, averages and counts by status.

Metrics are computed at the database level for optimal performance and include:

  • Total number of executions
  • Total and average duration
  • Total processed and output records
  • Total memory usage
  • Execution counts by status (COMPLETED, FAILED, RUNNING)

Metrics can be filtered by time range using startTime and endTime.

Security
ApiKeyAuth
Path
projectIdstringrequired

Project ID

Example: 98
jobIdstringrequired

Job ID

Example: 220
Query
startTimestring(date-time)

Start timestamp for filtering executions (ISO 8601 format). Example: "2025-12-11T00:00:00Z"

Example: startTime=2025-12-11T00:00:00Z
endTimestring(date-time)

End timestamp for filtering executions (ISO 8601 format). Example: "2025-12-11T23:59:59Z"

Example: endTime=2025-12-11T23:59:59Z
curl -i -X GET \
  'http://docs.webrobot.eu/_mock/openapi/webrobot/api/projects/id/98/jobs/220/metrics?startTime=2025-12-11T00%3A00%3A00Z&endTime=2025-12-11T23%3A59%3A59Z' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

Aggregated job metrics

Bodyapplication/json
jobIdinteger(int64)

Job ID

startTimestring(date-time)

Filter start timestamp (if specified)

endTimestring(date-time)

Filter end timestamp (if specified)

aggregatedobject
Response
application/json
{ "jobId": 0, "startTime": "2019-08-24T14:15:22Z", "endTime": "2019-08-24T14:15:22Z", "aggregated": { "totalExecutions": 0, "totalDurationSeconds": 0, "averageDurationSeconds": 0.1, "totalRecordsProcessed": 0, "totalRecordsOutput": 0, "totalOutputFileSizeBytes": 0, "totalDriverMemoryUsedBytes": 0, "totalExecutorMemoryUsedBytes": 0, "totalCpuTimeSeconds": 0, "totalErrorCount": 0, "totalWarningCount": 0, "completedCount": 0, "failedCount": 0, "runningCount": 0 } }

Get metrics aggregate of a project

Request

Returns the aggregated metrics of all executions of all jobs of a project, including sums, averages, and counts by status.

Metrics are computed at the database level for optimal performance and include:

  • Total number of executions for the project
  • Total and average duration
  • Total processed and output records
  • Total memory usage
  • Execution counts by status (COMPLETED, FAILED, RUNNING)
  • Per-job breakdown with metrics for each job

Metrics can be filtered by time range using startTime and endTime.

Security
ApiKeyAuth
Path
projectIdstringrequired

Project ID

Example: 98
Query
startTimestring(date-time)

Start timestamp for filtering executions (ISO 8601 format). Example: "2025-12-11T00:00:00Z"

Example: startTime=2025-12-11T00:00:00Z
endTimestring(date-time)

End timestamp for filtering executions (ISO 8601 format). Example: "2025-12-11T23:59:59Z"

Example: endTime=2025-12-11T23:59:59Z
curl -i -X GET \
  'http://docs.webrobot.eu/_mock/openapi/webrobot/api/projects/id/98/metrics?startTime=2025-12-11T00%3A00%3A00Z&endTime=2025-12-11T23%3A59%3A59Z' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

Aggregated project metrics

Bodyapplication/json
projectIdinteger(int64)

Project ID

startTimestring(date-time)

Filter start timestamp (if specified)

endTimestring(date-time)

Filter end timestamp (if specified)

aggregatedobject
jobsArray of objects

Aggregated metrics by job within the project

Response
application/json
{ "projectId": 0, "startTime": "2019-08-24T14:15:22Z", "endTime": "2019-08-24T14:15:22Z", "aggregated": { "totalExecutions": 0, "totalDurationSeconds": 0, "averageDurationSeconds": 0.1, "totalRecordsProcessed": 0, "totalRecordsOutput": 0, "totalOutputFileSizeBytes": 0, "totalDriverMemoryUsedBytes": 0, "totalExecutorMemoryUsedBytes": 0, "totalCpuTimeSeconds": 0, "totalErrorCount": 0, "totalWarningCount": 0, "completedCount": 0, "failedCount": 0, "runningCount": 0 }, "jobs": [ { … } ] }

Mark zombie tasks as FAILED

Request

Detects and marks as FAILED tasks that are RUNNING for longer than the specified timeout ("zombie" tasks).

A task is considered a "zombie" if:

  • It has status RUNNING
  • It has been running longer than the specified timeout (default: 24 hours)
  • The startedAt timestamp (or scheduledTime as a fallback) exceeds the timeout

When a task is marked as a zombie:

  • Status is updated to FAILED
  • executionLog is updated with FAILED status, completedAt, and an error message
  • Total execution duration is computed

Note: This endpoint requires admin privileges (scope admin).

Security
ApiKeyAuth
Query
timeoutHoursinteger(int64)

Timeout in hours to consider a task a "zombie" (default: 24). RUNNING tasks exceeding this value will be marked as FAILED.

Default 24
Example: timeoutHours=24
curl -i -X POST \
  'http://docs.webrobot.eu/_mock/openapi/webrobot/api/projects/admin/tasks/mark-zombies?timeoutHours=24' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

Zombie tasks marked successfully

Bodyapplication/json
markedCountinteger(int64)

Number of tasks marked as FAILED

markedTaskIdsArray of integers(int64)

List of task IDs marked as FAILED

timeoutHoursinteger(int64)

Timeout used (in hours)

messagestring

Confirmation message

Example: "Marked 5 zombie task(s) as FAILED"
Response
application/json
{ "markedCount": 0, "markedTaskIds": [ 0 ], "timeoutHours": 0, "message": "Marked 5 zombie task(s) as FAILED" }

ETL Execution

Operations

Execution

Operations

Webhooks

Operations

Metrics

Operations

getHtml

Request

Security
ApiKeyAuth
Path
protocolstringrequired

HTTP protocol (http or https)

urlstringrequired

URL to fetch HTML content from

curl -i -X GET \
  'http://docs.webrobot.eu/_mock/openapi/webrobot/api/html/{url}/{protocol}' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

default response

Bodytext/html

getById

Request

Security
ApiKeyAuth
Path
tablestringrequired

Table name in Strapi

idstringrequired

Record ID

curl -i -X GET \
  'http://docs.webrobot.eu/_mock/openapi/api/strapi-tables/{table}/{id}' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

default response

Bodyapplication/json
Response
application/json
null

update

Request

Security
ApiKeyAuth
Path
tablestringrequired

Table name in Strapi

idstringrequired

Record ID

Bodyapplication/json
property name*objectadditional property
curl -i -X PUT \
  'http://docs.webrobot.eu/_mock/openapi/api/strapi-tables/{table}/{id}' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "property1": {},
    "property2": {}
  }'

Responses

default response

Bodyapplication/json
Response
application/json
null

delete

Request

Security
ApiKeyAuth
Path
tablestringrequired

Table name in Strapi

idstringrequired

Record ID

curl -i -X DELETE \
  'http://docs.webrobot.eu/_mock/openapi/api/strapi-tables/{table}/{id}' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

default response

Bodyapplication/json
Response
application/json
null

findAll

Request

Security
ApiKeyAuth
Path
tablestringrequired
Query
pageinteger(int32)
Default 0
pageSizeinteger(int32)

Number of records per page

Default 50
curl -i -X GET \
  'http://docs.webrobot.eu/_mock/openapi/api/strapi-tables/{table}?page=0&pageSize=50' \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

default response

Bodyapplication/json
Response
application/json
null

insert

Request

Security
ApiKeyAuth
Path
tablestringrequired

Table name in Strapi

Bodyapplication/json
property name*objectadditional property
curl -i -X POST \
  'http://docs.webrobot.eu/_mock/openapi/api/strapi-tables/{table}' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "property1": {},
    "property2": {}
  }'

Responses

default response

Bodyapplication/json
Response
application/json
null

getHealth

Request

Security
ApiKeyAuth
curl -i -X GET \
  http://docs.webrobot.eu/_mock/openapi/health \
  -H 'X-API-Key: YOUR_API_KEY_HERE'

Responses

default response

Bodyapplication/json
Response
application/json
null

Python Extensions

Operations