Search Knowledge Base by Keyword
Veeam
Overview
Veeam Backup & Replication is backup software rather than storage. It runs backup jobs against virtual machines, physical servers with agents, file shares and cloud workloads, writes restore points into backup repositories, and records the outcome of every session. The information it holds is about protection state: which workloads are covered by a job, when each one last produced a good restore point, how far back the retained restore points go, which sessions failed and how much space each repository has left.
The ReadyWorks connector is a JSON REST client for a Veeam management endpoint, running on the json_rest_api.php driver. You supply the API domain, a username and password and a server-side working path, and it authenticates with a Base64-encoded HTTP Basic header. Veeam exposes more than one REST surface depending on which components are deployed, and they do not all accept HTTP Basic for the data calls, so confirm which endpoint your deployment presents before you build jobs against it.
Backup state is one of the more valuable things to hold in the estate because it gates action rather than describing it. A device that has no recent restore point should not be migrated, rebuilt or decommissioned, and in most organisations nobody can answer that question quickly across the whole estate. Reconciling Veeam’s protected-workload list against the ReadyWorks device inventory exposes the gap in both directions: machines that exist and are not being backed up, and backup jobs still running against machines that were retired months ago. Repository capacity and job failure history feed the same readiness view.
The connector is registered as bidirectional. Inbound jobs pull Veeam records into staging. The outbound side posts a record from ReadyWorks to an endpoint you nominate and captures status, message and record key from the reply. Neither direction ships with a Veeam endpoint configured.
NOTE: Veeam data ages faster than most estate data. A restore point that was current last night is stale evidence by the end of the week, so schedule these jobs at least daily if you intend to use them as a readiness gate.
Connector Properties
| Property | Value |
|---|---|
| Identifier | VEEAM |
| Name | Veeam |
| Description | Veeam Backup & Recovery solution |
| Job Types | Both Inbound and Outbound |
| Order | 380 |
| Enabled | Yes |
| Locked | Yes |
| Block Update | No |
| Single Authentication | No |
| Windows Only | No |
| Connector Version | 2026-08-10 |
| Hooks | None |
| Additional Job Fields | None |
| Image | ![]() |
Authentication Methods
Veeam offers a single authentication method, using a username and password sent as an HTTP Basic credential.
| Method | Identifier | Base Method | Script | Order | Enabled | Config Fields |
|---|---|---|---|---|---|---|
| Basic Authorization: Username / Password | VEEAM_a8ea7747de |
VEEAM_a8ea7747de |
json_rest_api.php |
70 | Yes | 5 |
Method 1: Basic Authorization: Username / Password (VEEAM_a8ea7747de)
Connect to a GET method API with a username / password
Joins the connection’s username and password, Base64-encodes them and sends them as an Authorization: Basic header. Use a Veeam account with a read-only role so that ReadyWorks can read job, session and repository state without the ability to start, stop or delete backups.
Connection Configuration Fields (5)
| Order | Label | Type | Required | Default | Max Len | Tooltip |
|---|---|---|---|---|---|---|
| 10 | API Domain | text | Yes | 255 | Enter API domain of the Connection | |
| 10 | Server Temporary Working Path | text | Yes | storage/etl5 |
255 | Enter path where temporary files are stored during data processing (exclude starting and ending backslash) |
| 40 | Username | text | No | 1024 | Tooltip for Username | |
| 50 | Password | password | No | 64000 | Tooltip for Password | |
| 250 | Additional Job Fields | fields_list | No | Enter list of additional fields to add to staging data for all jobs |
Authentication Configuration
Headers sent on the authentication call:
| Header | Value | Base64 |
|---|---|---|
Content-Type: |
application/json |
Off |
Authorization: Basic |
%user_name%:%user_pass% |
On |
cURL options:
| Option | Authentication Call | Data Calls |
|---|---|---|
USERAGENT |
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 |
Same |
SSL_VERIFYHOST |
false |
Same |
SSL_VERIFYPEER |
false |
Same |
RETURNTRANSFER |
true |
Same |
FOLLOWLOCATION |
true |
Same |
FAILONERROR |
true |
Same |
NOTE: Username and Password are both marked optional even though the Basic credential is assembled from them, so a connection can be saved with no working credential.
NOTE: There is no Single Authentication control on this connection form, so the authentication phase repeats on every pagination and enumeration loop.
Inbound Job Fields Enabled (44)
Inbound jobs expose the full REST field set, including three levels of enumeration and all five pagination modes.
| Order | Label | Type | Required | Default | Tooltip |
|---|---|---|---|---|---|
| 10 | Job Description | text | Yes | Enter description of the Job | |
| 20 | Job Schedule | lookup | Yes | Daily | Select frequency Job should run |
| 30 | Enabled | radio | Yes | Yes | Choose if Job is enabled |
| 40 | Use Unparsed Data | radio | No | No | Choose if you wish to parse the incoming data, or leave it in its raw format |
| 50 | Log Raw API Calls | radio | Yes | No | Choose if raw API calls are logged |
| 70 | Destination Table | text | Yes | Enter name of the destination table | |
| 80 | Data Identity | text | No | Enter identity of the Job | |
| 120 | Append New Data to Existing Tables | radio | No | No | Choose if new data will append to the existing destination table, or will create a new destination table |
| 130 | Fields to Index | text | No | Enter fields to index | |
| 170 | Method Type | select | Yes | GET |
Select method type of the Job |
| 190 | API End Point | text | No | Enter API end point of the Job | |
| 200 | API Data Parameters | fields_list | No | Enter API data parameters of the Job | |
| 210 | Body Data Sending Method | select | Yes | JSON Encoded Data | Select method for sending the body data |
| 220 | Raw JSON Body Data | textarea | No | Enter the raw JSON body to send. Do not use body selections in the API Parameters if this is used. | |
| 230 | API Return Data Node | text | No | Enter API return data node of the Job | |
| 250 | Pagination Type | select | No | None | Select request paging type of the Job |
| 270 | API Pagination Node | text | No | Enter API pagination node of the Job | |
| 280 | Pagination Offset Start | text | No | Enter request paging offset start of the Job | |
| 290 | Pagination Limit | text | No | Enter request pagination limit of the Job | |
| 300 | Pagination Termination Node | text | No | Enter request paging termination node and value of the Job | |
| 310 | Maximum API Calls | text | No | Enter maximum number of API calls for the Job to make | |
| 320 | Enumeration 1 Type | select | No | None | Enter enumeration level 1 type |
| 330 | Enumeration 1 ETL Job | lookup | No | Select ETL job for the enumeration values | |
| 340 | Enumeration 1 Data Type | data_type | No | Select the data type and fields for enumeration 1 values | |
| 350 | Enumeration 1 Keys End Point | text | No | Enter enumeration 1 keys end point of the Job | |
| 360 | Enumeration 1 Node | text | No | Enter enumeration 1 node of the Job | |
| 370 | Enumeration 1 Fields | fields_list | No | Enter enumeration 1 fields of the Job | |
| 380 | Enumeration 2 Type | select | No | None | Enter enumeration level 2 type |
| 390 | Enumeration 2 ETL Job | lookup | No | Select ETL job for the enumeration 2 values | |
| 400 | Enumeration 2 Data Type | data_type | No | Select the data type and fields for enumeration 2 values | |
| 410 | Enumeration 2 Keys End Point | text | No | Enter enumeration 2 keys end point of the Job | |
| 420 | Enumeration 2 Node | text | No | Enter enumeration 2 node of the Job | |
| 430 | Enumeration 2 Fields | fields_list | No | Enter enumeration 2 fields of the Job | |
| 440 | Enumeration 3 Type | select | No | None | Enter enumeration level 3 type |
| 450 | Enumeration 3 ETL Job | lookup | No | Select ETL job for the enumeration 3 values | |
| 460 | Enumeration 3 Data Type | data_type | No | Select the data type and fields for enumeration 3 values | |
| 470 | Enumeration 3 Keys End Point | text | No | Enter enumeration 3 keys end point of the Job | |
| 480 | Enumeration 3 Node | text | No | Enter enumeration 3 node of the Job | |
| 490 | Enumeration 3 Fields | fields_list | No | Enter enumeration 3 fields of the Job | |
| 500 | Pause Enumeration | text | No | Enter values for pausing enumeration every X calls for Y seconds | |
| 510 | Kill Enumeration on Error | radio | No | No | Choose to stop the enumeration loop on an error or continue processing the loop |
| 520 | Additional Fields | fields_list | No | Enter list of additional fields to add to staging data | |
| 550 | Retry Pause | text | No | Enter values for retrying a failed API connection. Retry X times, waiting Y seconds between each try, with an API timeout of Z seconds. | |
| 560 | Order | text | Yes | Enter order of the Job |
NOTE: Several labels and tooltips in this form carry defects inherited from the shared ETL5 field templates: the Enumeration 1 Node label reads “Enumaration”, the Append New Data label reads “Exisiting”, and the help text on Enumeration 1 Keys End Point and Enumeration 3 Fields both refer to enumeration 2. The underlying fields behave as their labels say.
Outbound Job Fields Enabled (13)
Outbound jobs expose the REST posting field set, including the outbound field list, the return data mapping and an optional raw JSON body template.
| Order | Label | Type | Required | Default | Tooltip |
|---|---|---|---|---|---|
| 10 | Job Description | text | Yes | Enter description of the Job | |
| 30 | Enabled | radio | Yes | Yes | Choose if Job is enabled |
| 50 | Log Raw API Calls | radio | Yes | No | Choose if raw API calls are logged |
| 170 | Method Type | select | Yes | GET |
Select method type of the Job |
| 180 | Data Sending Method | select | Yes | JSON Encoded Data | Select method for sending the outbound data |
| 190 | API End Point | text | No | Enter API end point of the Job | |
| 200 | API Data Parameters | fields_list | No | Enter API data parameters of the Job | |
| 210 | Body Data Sending Method | select | Yes | JSON Encoded Data | Select method for sending the body data |
| 260 | Return Data Fields List | fields_list | Yes | Enter return data fields of the Job | |
| 530 | Outbound Fields List | fields_list | Yes | Enter outbound fields of the Job | |
| 540 | Ignore Empty Outbound Fields | radio | No | Yes | Ignore, and do not include, any outbound fields that are empty and have no data |
| 550 | Raw JSON Outbound Template | textarea | No | Enter the raw JSON outbound template to send. This will replace any automated structures defined in the outbound fields. | |
| 560 | Order | text | Yes | Enter order of the Job |
Inbound Job Templates (1)
Veeam ships one inbound template, and it is the generic REST skeleton rather than a backup job, session or repository pull.
| # | Job Description | Destination Table | API End Point | Enabled | What It Pulls |
|---|---|---|---|---|---|
| 1 | Rest GET API | api_data |
Not set |
No | An empty starting point for a GET request, with no API End Point, no return data node and no pagination, writing to a placeholder staging table called api_data. It is the shell from which protection-state jobs have to be built. |
Job Template Configuration
Settings
| Setting | Value |
|---|---|
| Order | 10 |
| Enabled | No |
| Job Schedule | Daily (15 1 * * *) |
| Destination Table | api_data |
| Data Identity | api_data |
| Allow Empty Table | Yes |
| Append Files to Same Destination Table | No |
| Append New Data to Existing Tables | No |
| Use Unparsed Data | No |
| Convert UUID-Keyed Objects to Rows | No |
| Ignore XML Attributes | No |
| Log Raw API Calls | No |
| Method Type | GET |
| Body Data Sending Method | JSON Encoded Data |
NOTE: Session and restore-point collections grow with every backup run, so any job cloned from this template needs both a Pagination Type and a date or session filter before it is enabled.
Outbound Job Templates (1)
One outbound template ships, and it is the matching generic REST skeleton.
| # | Job Description | Method | API End Point | Enabled | What It Does |
|---|---|---|---|---|---|
| 1 | Rest POST API | POST |
Not set |
No | An empty POST job. It sends a single required string field named record_key as a JSON body to an endpoint you supply, and reads status, message and data.record_key back out of the response. |
Job Template Configuration
Settings
| Setting | Value |
|---|---|
| Order | 10 |
| Enabled | No |
| Log Raw API Calls | No |
| Method Type | POST |
| Body Data Sending Method | JSON Encoded Data |
| Data Sending Method | JSON Encoded Data |
| Ignore Empty Outbound Fields | Yes |
Job Parameters and Enumeration
Rest POST API
Outbound fields list:
| Label | Name | Type | Required | Pattern |
|---|---|---|---|---|
Record Key |
record_key |
String | on |
Return data fields:
| Label | Name |
|---|---|
Return Status |
status |
Return Message |
message |
Record Key |
data.record_key |

