Download OpenAPI specification:
?job_ids=1&job_ids=2).export pandaurl=https://pandaserver.cern.ch:25443
curl --capath "${X509_CERT_DIR}" --cert "${X509_USER_PROXY}" --key "${X509_USER_PROXY}" "${pandaurl}/api/v1/task/get_status?task_id=12345"
import os
import requests
pandaurl = "https://pandaserver.cern.ch:25443"
proxy = os.environ["X509_USER_PROXY"]
response = requests.get(
f"{pandaurl}/api/v1/task/get_status",
params={"task_id": 12345},
cert=(proxy, proxy),
verify=os.environ["X509_CERT_DIR"],
)
export pandaurl=https://pandaserver.cern.ch:25443
curl --capath "${X509_CERT_DIR}" --cert "${X509_USER_PROXY}" --key "${X509_USER_PROXY}" --json '{"task_id": 12345}' "${pandaurl}/api/v1/file_server/upload_file_recovery_request"
import os
import requests
pandaurl = "https://pandaserver.cern.ch:25443"
proxy = os.environ["X509_USER_PROXY"]
response = requests.post(
f"{pandaurl}/api/v1/file_server/upload_file_recovery_request",
json={"task_id": 12345},
cert=(proxy, proxy),
verify=os.environ["X509_CERT_DIR"],
)
The return codes are usually specified with each API function, but in general:
Content-type: application/json. This does not necessarily mean that the operation was successful, but that the function was called correctly. Reasons why the operation could fail are:The usual response dictionary has the following format:
{ "success": True/False, "message": "Usually an error when there was a failure. The message can generally be ignored if the operation was successful.", "data": "The data returned if the operation was successful." }
Content-type: text/plain.Content-type: text/plain.httpd.Submit a grep request to be processed asynchronously on the target service or machine.
| pattern required | string grep pattern to search for |
| log_filename required | string filename (not full path) of the log file under panda_config.logdir |
| service_name required | string target service (e.g. "server", "jedi"); mutually exclusive with machine_name |
| machine_name required | string target specific machine hostname; mutually exclusive with service_name |
| max_matches required | integer stop after this many matching lines (1..200000). Defaults to a bound that leaves the stored result unchanged; results that hit the cap come back with truncated set, so an incomplete answer is never read as an absent one |
| tail_bytes required | integer search only the last this many bytes of the file (1..1073741824), which is how to ask about recent activity in a multi-gigabyte log. Ignored for .gz files, where an arbitrary offset is not a valid stream |
{- "pattern": "string",
- "log_filename": "string",
- "service_name": "string",
- "machine_name": "string",
- "max_matches": 0,
- "tail_bytes": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Submit a sleep+echo request, run on any one machine in the target service. Results are readable by the requester or any production-role caller (access="production").
| service_name required | string target service; the job runs on exactly one of its alive machines |
| message required | string text echoed back as the result |
| seconds required | integer seconds to sleep before echoing (0..60) |
{- "service_name": "string",
- "message": "string",
- "seconds": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Poll for the results of an async request, of any type and from any submitting module.
The response has two shapes, depending on what the request's handler stores.
Handlers writing raw output (grep, sleep_echo) report one entry per machine:
{
"success": bool, # whether this poll succeeded
"message": str,
"data": {
"overall_status": "complete" | "pending",
"expected_machines": [str, ...],
"results": [{"machine_name": str, "status": str, "result": str,
"truncated": int, "error_msg": str, "attempts": int,
"started_at": str, "finished_at": str,
"stderr": str, "return_code": int}, ...]
}
}
overall_status is "complete" when all expected machines have a terminal result (done/failed).
Handlers writing a structured payload (e.g. the Data Carousel operations submitted by pandaserver.api.v1.data_carousel_api) report that payload at the top level instead:
{
"success": bool, # whether the OPERATION succeeded
"message": str, # the operation's message
"data": <the operation's data>,
"async_meta": {"status": "pending" | "running" | "done" | "failed",
"attempts": int, "started_at": str, "finished_at": str,
"error_msg": str}
}
Poll on async_meta.status, not on success: success is False while the request is still pending or running, and False again when the handler crashed (status "failed", reason in async_meta.error_msg), so it only tells the operation's outcome once status is "done". async_meta is present whenever the poll itself succeeded, so a response without it is a failure of this call (not found, not authorized) rather than a report about the request.
| request_id required | string UUID returned by a submit_* endpoint |
{- "request_id": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Set a key-value pair to store in PanDA. Requires a secure connection.
| key required | string Key to reference the secret |
| value required | string Value of the secret |
{- "key": "string",
- "value": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Get the secrets for a user identified by a list of keys. Requires a secure connection.
| keys | Array of strings List of keys to reference the secrets to retrieve |
{- "keys": [
- "string"
]
}{- "success": true,
- "message": "string",
- "data": { }
}This function retrieves the distinguished name (DN) from the request and uses it to get a key pair. Requires a secure connection.
| public_key_name required | string The name of the public key. |
| private_key_name required | string The name of the private key. |
{- "success": true,
- "message": "string",
- "data": { }
}Get the x509 proxy certificate for a user with a role. Requires a secure connection.
| role | string The role of the user. Defaults to None. |
| dn | string The distinguished name of the user. Defaults to None. |
{- "success": true,
- "message": "string",
- "data": { }
}Get the OAuth access token for the specified client. Requires a secure connection.
| client_name required | string client_name for the token as defined in token_cache_config |
| token_key | string key to get the token from the token cache. Defaults to None. |
{- "success": true,
- "message": "string",
- "data": { }
}This function retrieves the distinguished name (DN) from the request and uses it to get a token key for the specified client. Requires a secure connection.
| client_name required | string The name of the client requesting the token key |
{- "success": true,
- "message": "string",
- "data": { }
}Each operation comes in two flavours sharing one implementation (pandaserver.taskbuffer.data_carousel_ops):
change_staging_destination, ...) run the operation inline and
return its outcome, at the risk of hitting the HTTP timeout on slow DDM/iDDS calls;submit_change_staging_destination, ...) register a request in
the async_requests table and return immediately with an async_id; the async request watchdog
on JEDI runs the very same operation and the outcome is polled with the shared reader
/v1/async_process/get_result.Both flavours are kept so callers can switch between them without a server-side change.
{ }{- "success": true,
- "message": "string",
- "data": { }
}The current active staging request will be cancelled, and a new request will be created with the newly selected destination RSE, excluding the original destination.
The requests can be specified by request_id or dataset (if both exist, request_id is taken).
Requires a secure connection production role.
Runs synchronously; see submit_change_staging_destination for the asynchronous flavour.
| request_id required | integer request_id of the staging request, e.g. |
| dataset required | string dataset name of the staging request in the format of Rucio DID, e.g. |
{- "request_id": 0,
- "dataset": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}If the request is queued, its source_rse will be rechosen, excluding the original source.
If the request is staging, the source_replica_expression of its DDM rule is unset so new source can be tried.
Only effective on queued or staging requests.
The requests can be specified by request_id or dataset (if both exist, request_id is taken).
Requires a secure connection production role.
Runs synchronously; see submit_change_staging_source for the asynchronous flavour.
| request_id required | integer request_id of the staging request, e.g. |
| dataset required | string dataset name of the staging request in the format of Rucio DID, e.g. |
| cancel_fts required | boolean whether to cancel current FTS requests on DDM, False by default |
| change_src_expr required | boolean whether to change source_replica_expression of the DDM rule by replacing old source with new one, instead of just dropping old source |
| source_rse required | string if set, use this source RSE instead of choosing one randomly, also force change_src_expr to be True; default is None |
{- "request_id": 0,
- "dataset": "string",
- "cancel_fts": true,
- "change_src_expr": true,
- "source_rse": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}The request will skip the queue and go to staging immediately (will submit DDM rules).
Only effective on queued requests.
The requests can be specified by request_id or dataset (if both exist, request_id is taken).
Requires a secure connection production role.
Runs synchronously; see submit_force_to_staging for the asynchronous flavour.
| request_id required | integer request_id of the staging request, e.g. |
| dataset required | string dataset name of the staging request in the format of Rucio DID, e.g. |
{- "request_id": 0,
- "dataset": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}If the request is done and has no related tasks, it can be retired to clean up the DDM rules and replicas.
The requests can be specified by request_id or dataset (if both exist, request_id is taken).
Requires a secure connection production role.
Runs synchronously; see submit_retire_unused for the asynchronous flavour.
| request_id required | integer request_id of the staging request, e.g. |
| dataset required | string dataset name of the staging request in the format of Rucio DID, e.g. |
{- "request_id": 0,
- "dataset": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Asynchronous flavour of change_staging_destination: the request is registered in DB and
processed by the async request daemon, so the call returns without waiting for DDM or iDDS.
Poll /v1/async_process/get_result with the returned async_id as its request_id to get the
outcome; it reports the operation's own success, message and data at the top level.
Requires a secure connection production role.
| request_id required | integer request_id of the staging request, e.g. |
| dataset required | string dataset name of the staging request in the format of Rucio DID, e.g. |
{- "request_id": 0,
- "dataset": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Asynchronous flavour of change_staging_source: the request is registered in DB and
processed by the async request daemon, so the call returns without waiting for DDM or iDDS.
Poll /v1/async_process/get_result with the returned async_id as its request_id to get the
outcome; it reports the operation's own success, message and data at the top level.
Requires a secure connection production role.
| request_id required | integer request_id of the staging request, e.g. |
| dataset required | string dataset name of the staging request in the format of Rucio DID, e.g. |
| cancel_fts required | boolean whether to cancel current FTS requests on DDM, False by default |
| change_src_expr required | boolean whether to change source_replica_expression of the DDM rule by replacing old source with new one, instead of just dropping old source |
| source_rse required | string if set, use this source RSE instead of choosing one randomly, also force change_src_expr to be True; default is None |
{- "request_id": 0,
- "dataset": "string",
- "cancel_fts": true,
- "change_src_expr": true,
- "source_rse": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Asynchronous flavour of force_to_staging: the request is registered in DB and processed
by the async request daemon, so the call returns without waiting for DDM or iDDS.
Poll /v1/async_process/get_result with the returned async_id as its request_id to get the
outcome; it reports the operation's own success, message and data at the top level.
Requires a secure connection production role.
| request_id required | integer request_id of the staging request, e.g. |
| dataset required | string dataset name of the staging request in the format of Rucio DID, e.g. |
{- "request_id": 0,
- "dataset": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Asynchronous flavour of retire_unused: the request is registered in DB and processed by
the async request daemon, so the call returns without waiting for DDM or iDDS.
Poll /v1/async_process/get_result with the returned async_id as its request_id to get the
outcome; it reports the operation's own success, message and data at the top level.
Requires a secure connection production role.
| request_id required | integer request_id of the staging request, e.g. |
| dataset required | string dataset name of the staging request in the format of Rucio DID, e.g. |
{- "request_id": 0,
- "dataset": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}This function returns the count of available event ranges for a given job_id, jobset_id, and task_id. Requires a secure connection and production role.
| job_id required | integer PanDA job ID |
| jobset_id required | integer Jobset ID |
| task_id required | integer JEDI task ID |
| timeout | integer The timeout value. Defaults to 60. |
{- "success": true,
- "message": "string",
- "data": { }
}Gets a dictionary with the status of the event ranges for the given pairs of PanDA job IDs and JEDI task IDs. Requires a secure connection.
| job_task_ids required | integer json encoded string with JEDI task ID + PanDA job ID pairs, in the format |
{- "success": true,
- "message": "string",
- "data": { }
}Acquires a list of event ranges with a given PandaID for execution. Requires a secure connection and production role.
| job_id required | string PanDa job ID. |
| jobset_id required | string Jobset ID. |
| task_id | integer JEDI task ID. Defaults to None. |
| n_ranges | integer The number of event ranges to retrieve. Defaults to 10. |
| timeout | integer The timeout value. Defaults to 60. |
| scattered | boolean Whether the event ranges are scattered. Defaults to None. |
| segment_id | integer The segment ID. Defaults to None. |
{- "job_id": "string",
- "jobset_id": "string",
- "task_id": 0,
- "n_ranges": 0,
- "timeout": 0,
- "scattered": true,
- "segment_id": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Updates the status of a specific event range. Requires a secure connection and production role.
| event_range_id required | string The ID of the event range to update. |
| event_range_status required | string The new status of the event range. |
| core_count | integer The number of cores used. Defaults to None. |
| cpu_consumption_time | number The CPU consumption time. Defaults to None. |
| object_store_id | integer The object store ID. Defaults to None. |
| timeout | integer The timeout value. Defaults to 60. |
{- "event_range_id": "string",
- "event_range_status": "string",
- "core_count": 0,
- "cpu_consumption_time": 0,
- "object_store_id": 0,
- "timeout": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Updates the event ranges in bulk. Requires a secure connection and production role.
| event_ranges required | string JSON-encoded string containing the list of event ranges to update. |
| timeout | integer The timeout value. Defaults to 120. |
| version | integer The version of the event ranges. Defaults to 0. Version 0: normal event service Version 1: jumbo jobs with zip file support Version 2: fine-grained processing where events can be updated before being dispatched |
{- "event_ranges": "string",
- "timeout": 0,
- "version": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Uploads a JEDI log file and returns the URL to the file. If there is already a log file for the task, it will be overwritten. Requires a secure connection and production role.
| file required | string werkzeug.FileStorage object to be uploaded. |
{- "file": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Updates a JEDI log file, appending more content at the end of the file. Requires a secure connection and production role.
| file required | string werkzeug.FileStorage object to be updated. |
{- "file": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Downloads the JEDI log file, if required at a particular offset.
| log_name required | string log file name |
| offset required | integer offset in the file |
{- "log_name": "string",
- "offset": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Uploads a file to the cache. When not touched, cache files are expired after some time. User caches will get registered in the PanDA database and will account towards user limits. PanDA log files will be stored in gzip format. Requires a secure connection.
| file required | string werkzeug.FileStorage object to be uploaded. |
{- "file": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Touches a file in the cache directory. It avoids the file to expire and being deleted by server clean up processes. Requires a secure connection.
| file_name required | string file name to be deleted |
{- "file_name": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Deletes a file from the cache directory. Currently a dummy method. Requires a secure connection.
| file_name required | string file name to be deleted |
{- "file_name": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Registers a file from the cache directory into the PanDA database, so that PanDA knows the server it's on. Requires a secure connection and production role.
| user_name required | string user that uploaded the file |
| file_name required | string file name |
| file_size required | integer file size |
| checksum required | string checksum |
{- "user_name": "string",
- "file_name": "string",
- "file_size": 0,
- "checksum": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Validates a cache file owned by the caller by checking the file metadata that was registered in the database. Requires a secure connection.
| file_size required | integer file size |
| checksum required | integer checksum |
{- "file_size": 0,
- "checksum": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Uploads a HPO checkpoint file to the server. Requires a secure connection.
| file required | string werkzeug.FileStorage object to be uploaded. |
{- "file": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Deletes a HPO checkpoint file from the server. Requires a secure connection.
| task_id required | string JEDI task ID |
| sub_id required | string sub ID. |
{- "task_id": "string",
- "sub_id": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Upload request to recover lost files. Either task_id or dataset needs to be specified. Requires a secure connection.
| task_id | integer JEDI task ID. Either task_id or dataset must be provided. |
| dry_run | boolean dry run flag. |
| dataset | string the dataset name in which to recover files. Either task_id or dataset must be provided. |
| files | Array of strings list of file names to recover. |
| no_child_retry | boolean flag to avoid retrying child tasks. Default is True. |
| resurrect_datasets | boolean Specifies whether to resurrect datasets when they were already deleted. Default is False. |
| force | boolean To force recovery even if there is no lost file. Default is False. |
| reproduce_parent | boolean Specifies whether to reproduce the parent task if the input files that originally generated the lost files have been deleted. Default: False. |
| reproduce_upto_nth_gen | integer Defines how many generations of parent tasks should be reproduced. Default 0, meaning no parent tasks are reproduced. When this is set to N>0, reproduce_parent is set to True automatically. |
{- "task_id": 0,
- "dry_run": true,
- "dataset": "string",
- "files": [
- "string"
], - "no_child_retry": true,
- "resurrect_datasets": true,
- "force": true,
- "reproduce_parent": true,
- "reproduce_upto_nth_gen": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Uploads a workflow request to the server. The request can be processed synchronously or asynchronously. Requires a secure connection.
| data required | string workflow request data |
| dry_run required | boolean requests the workflow to be executed synchronously in dry_run mode |
| sync required | boolean requests the workflow to be processed synchronously |
{- "data": "string",
- "dry_run": true,
- "sync": true
}{- "success": true,
- "message": "string",
- "data": { }
}Uploads an event picking request to the server. Requires a secure connection.
| run_event_list required | string run and event list. |
| data_type required | string data type. |
| stream_name required | string stream name. |
| dataset_name required | string dataset name. |
| ami_tag required | string AMI tag. |
| user_dataset_name required | string user dataset name. |
| locked_by required | string locking agent. |
| parameters required | string parameters. |
| input_file_list required | string input file list. |
| n_sites required | string number of sites. |
| user_task_name required | string user task name. |
| ei_api required | string event index API. |
| include_guids required | boolean flag to indicate if GUIDs are included with the run-event list |
{- "run_event_list": "string",
- "data_type": "string",
- "stream_name": "string",
- "dataset_name": "string",
- "ami_tag": "string",
- "user_dataset_name": "string",
- "locked_by": "string",
- "parameters": "string",
- "input_file_list": "string",
- "n_sites": "string",
- "user_task_name": "string",
- "ei_api": "string",
- "include_guids": true
}{- "success": true,
- "message": "string",
- "data": { }
}Update the details for a list of workers. Requires a secure connection.
| harvester_id required | string harvester id, e.g. |
| workers required | Array of objects list of worker dictionaries that describe the fields of a pandaserver/taskbuffer/WorkerSpec object.
|
{- "harvester_id": "string",
- "workers": [
- { }
]
}{- "success": true,
- "message": "string",
- "data": { }
}Update the service metrics for a harvester instance. Requires a secure connection.
| harvester_id required | string harvester id, e.g. |
| metrics required | Array of objects list of triplets
|
{- "harvester_id": "string",
- "metrics": [
- { }
]
}{- "success": true,
- "message": "string",
- "data": { }
}Add messages for a harvester instance. Requires a secure connection.
| harvester_id required | string harvester id, e.g. |
| dialogs required | Array of objects list of dialog dictionaries, e.g.
|
{- "harvester_id": "string",
- "dialogs": [
- { }
]
}{- "success": true,
- "message": "string",
- "data": { }
}Send a heartbeat for harvester and optionally update the instance data. User and host are retrieved from the request object and updated in the database. Requires a secure connection.
| harvester_id required | string harvester id, e.g. |
| data required | string metadata dictionary to be updated in the PanDA database, e.g. |
{- "harvester_id": "string",
- "data": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Report statistics for the workers managed by a harvester instance at a PanDA queue. Requires a secure connection.
| harvester_id required | string harvester id, e.g. |
| panda_queue required | string Name of the PanDA queue, e.g. |
| statistics required | string JSON string containing a dictionary with the statistics to be reported. It will be stored as a json in the database. E.g.
|
{- "harvester_id": "string",
- "panda_queue": "string",
- "statistics": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Retrieves the commands for a specified harvester instance. Requires a secure connection and production role.
| harvester_id required | string harvester id, e.g. |
| n_commands required | integer The number of commands to retrieve, e.g. |
| timeout | integer The timeout value. Defaults to |
{- "harvester_id": "string",
- "n_commands": 0,
- "timeout": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Acknowledges the list of command IDs in the PanDA database. Requires a secure connection and production role.
| command_ids required | Array of objects A list of command IDs to acknowledge, e.g. |
| timeout | integer The timeout value. Defaults to |
{- "command_ids": [
- { }
], - "timeout": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Send a command to harvester to kill the workers in a PanDA queue, with the possibility of specifying filters by status, CE or submission host. Requires a secure connection and production role.
| panda_queue required | string Name of the PanDA queue, e.g. |
| status_list required | Array of objects list of worker statuses to be considered, e.g. |
| ce_list required | Array of objects list of the Computing Elements to be considered, e.g. |
| submission_host_list required | Array of objects list of the harvester submission hosts to be considered, e.g. |
{- "panda_queue": "string",
- "status_list": [
- { }
], - "ce_list": [
- { }
], - "submission_host_list": [
- { }
]
}{- "success": true,
- "message": "string",
- "data": { }
}Set the target number of slots for a PanDA queue, when you want to build up job pressure. Requires secure connection and production role.
| panda_queue required | string Name of the PanDA queue, e.g. |
| slots required | integer Number of slots to set, e.g. |
| global_share | string Global share the slots apply to. Optional - by default it applies to the whole queue. E.g. |
| resource_type | string Resource type the slots apply to. Optional - by default it applies to the whole queue. E.g. |
| expiration_date | string The expiration date of the slots. Optional - by default it applies indefinitely. |
{- "panda_queue": "string",
- "slots": 0,
- "global_share": "string",
- "resource_type": "string",
- "expiration_date": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Gets the status for a job and command to the pilot if any. Requires a secure connection.
| job_ids required | Array of integers list of PanDA job IDs. |
| timeout | integer The timeout value. Defaults to 60. |
{- "success": true,
- "message": "string",
- "data": { }
}Gets the description of a job from the main/active schema. The description includes job attributes, job parameters and related file attributes. Requires a secure connection.
| job_ids required | Array of integers List of PanDA job IDs. |
| timeout | integer The timeout value. Defaults to 60. |
{- "success": true,
- "message": "string",
- "data": { }
}Gets the description of a job, also looking into the secondary/archive schema. The description includes job attributes, job parameters and related file attributes. Requires a secure connection.
| job_ids required | Array of integers List of PanDA job IDs. |
| timeout | integer The timeout value. Defaults to 60. |
{- "success": true,
- "message": "string",
- "data": { }
}Gets the execution script for a job, including Rucio download of input, ALRB setup, downloading transformation script and running the script.
The generated script takes options to use only a subset of the input files (--nfiles=<N>) and to read them directly from storage
through a generated PoolFileCatalog.xml instead of downloading them (--direct, --rse_expression=<RSE_EXP>, --schemes=<SCHEMES>).
| job_id required | integer PanDA job ID |
| days | integer Number of days to look back in the archive tables. Defaults to 30. |
{- "success": true,
- "message": "string",
- "data": { }
}Kills the jobs with the given PanDA IDs. Requires a secure connection.
| job_ids required | Array of objects List of PanDA job IDs |
| code | integer The kill code. Defaults to None.
|
| use_email_as_id | boolean Use the email as ID. Defaults to False. |
| kill_options | string Defaults to []. Possible options are: |
{- "job_ids": [
- { }
], - "code": 0,
- "use_email_as_id": true,
- "kill_options": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Reassigns a list of jobs. Requires a secure connection.
| job_ids required | Array of objects List of PanDA job IDs |
{- "job_ids": [
- { }
]
}{- "success": true,
- "message": "string",
- "data": { }
}Sets a command to the pilot for a job. Requires a secure connection and production role.
| job_id required | integer PanDA job ID |
| command required | string The command for the pilot, e.g. |
{- "job_id": 0,
- "command": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Sets the debug mode for a job. Requires a secure connection and production role.
| job_id required | integer PanDA job ID |
| mode required | boolean True to set debug mode, False to unset debug mode |
{- "job_id": 0,
- "mode": true
}{- "success": true,
- "message": "string",
- "data": { }
}Sets the debug mode for a job. Requires a secure connection.
| jobs required | string JSON string with a list of job specs |
{- "jobs": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Gets a dictionary of site specs. By default analysis sites are returned. Requires a secure connection.
| type | string type of site as defined in CRIC (currently |
{- "success": true,
- "message": "string",
- "data": { }
}Acquire jobs for the pilot. The jobs are reserved, the job status is updated and the jobs are returned. Requires a secure connection.
| site_name required | string The PanDA queue name |
| timeout | integer Request timeout in seconds. Optional and defaults to 60. |
| memory | integer Memory limit for the job. Optional and defaults to |
| disk_space | integer Disk space limit for the job. Optional and defaults to |
| prod_source_label | string Prodsourcelabel, e.g. |
| node | string Identifier of the worker node/slot. Optional and defaults to |
| computing_element | string Computing element. Optional and defaults to |
| prod_user_id | string User ID of the job. Optional and defaults to |
| get_proxy_key | boolean Flag to request a proxy key.Optional and defaults to |
| task_id | integer JEDI task ID of the job. Optional and defaults to |
| n_jobs | integer Number of jobs for bulk requests. Optional and defaults to |
| background | boolean Background flag. Optional and defaults to |
| resource_type | string Resource type of the job, e.g. |
| harvester_id | string Harvester ID, used to update the worker entry in the DB. Optional and defaults to |
| worker_id | integer Worker ID, used to update the worker entry in the DB. Optional and defaults to |
| scheduler_id | string Scheduler, e.g. harvester ID. Optional and defaults to |
| job_type | string Job type, e.g. |
| via_topic | boolean Topic for message broker. Optional and defaults to |
| remaining_time | integer Remaining walltime. Optional and defaults to |
| target_architecture | string Hardware of the worker node, either as a dictionary or as a JSON-encoded string.
Only jobs of tasks whose hardware requirements are satisfied by the worker node are returned.
The |
{- "site_name": "string",
- "timeout": 0,
- "memory": 0,
- "disk_space": 0,
- "prod_source_label": "string",
- "node": "string",
- "computing_element": "string",
- "prod_user_id": "string",
- "get_proxy_key": true,
- "task_id": 0,
- "n_jobs": 0,
- "background": true,
- "resource_type": "string",
- "harvester_id": "string",
- "worker_id": 0,
- "scheduler_id": "string",
- "job_type": "string",
- "via_topic": true,
- "remaining_time": 0,
- "target_architecture": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Gets the status for a list of jobs. Requires a secure connection.
| job_ids required | Array of objects list of job IDs. |
| timeout | integer The timeout value. Defaults to 60. |
{- "success": true,
- "message": "string",
- "data": { }
}Updates the details for a job, stores the metadata and excerpts from the pilot log. Requires a secure connection and production role.
| job_id required | integer PanDA job ID |
| job_status | string Job status |
| job_sub_status | string Job sub status. Optional, defaults to |
| start_time | string Job start time in format |
| end_time | string Job end time in format |
| pilot_timing | string String with pilot timings. Optional, defaults to |
| site_name | string PanDA queue name. Optional, defaults to |
| node | string Identifier for worker node/slot. Optional, defaults to |
| scheduler_id | string Scheduler ID, such as harvester instance. Optional, defaults to |
| pilot_id | string Pilot ID. Optional, defaults to |
| batch_id | string Batch ID. Optional, defaults to |
| trans_exit_code | integer Transformation exit code. Optional, defaults to |
| pilot_error_code | integer Pilot error code. Optional, defaults to |
| pilot_error_diag | string Pilot error message. Optional, defaults to |
| exe_error_code | integer Execution error code. Optional, defaults to |
| exe_error_diag | string Execution error message. Optional, defaults to |
| n_events | integer Number of events. Optional, defaults to |
| n_input_files | integer Number of input files. Optional, defaults to |
| attempt_nr | integer Job attempt number. Optional, defaults to |
| cpu_consumption_time | integer CPU consumption time. Optional, defaults to |
| cpu_consumption_unit | string CPU consumption unit, being used for updating some CPU details. Optional, defaults to |
| cpu_conversion_factor | number CPU conversion factor. Optional defaults to |
| core_count | integer Number of cores of the job. Optional, defaults to |
| mean_core_count | integer Mean core count. Optional, defaults to |
| max_rss | integer Measured max RSS memory. Optional, defaults to |
| max_vmem | integer Measured max Virtual memory. Optional, defaults to |
| max_swap | integer Measured max swap memory. Optional, defaults to |
| max_pss | integer Measured max PSS memory. Optional, defaults to |
| avg_rss | integer Measured average RSS. Optional, defaults to |
| avg_vmem | integer Measured average Virtual memory.Optional, defaults to |
| avg_swap | integer Measured average swap memory. Optional, defaults to |
| avg_pss | integer Measured average PSS. Optional, defaults to |
| tot_rchar | integer Measured total read characters. Optional, defaults to |
| tot_wchar | integer Measured total written characters. Optional, defaults to |
| tot_rbytes | integer Measured total read bytes. Optional, defaults to |
| tot_wbytes | integer Measured total written bytes. Optional, defaults to |
| rate_rchar | integer Measured rate for read characters. Optional, defaults to |
| rate_wchar | integer Measured rate for written characters. Optional, defaults to |
| rate_rbytes | integer Measured rate for read bytes. Optional, defaults to |
| rate_wbytes | integer Measured rate for written bytes. Optional, defaults to |
| corrupted_files | string List of corrupted files in comma separated format. Optional, defaults to |
| cpu_architecture_level | string CPU architecture level (e.g. |
| grid | string Grid type. Optional, defaults to |
| source_site | string Source site name. Optional, defaults to |
| destination_site | string Destination site name. Optional, defaults to |
| job_metrics | string Job metrics. Optional, defaults to |
| job_output_report | string Job output report. Optional, defaults to |
| pilot_log | string Pilot log excerpt. Optional, defaults to |
| meta_data | string Job metadata. Optional, defaults to |
| stdout | string Standard output. Optional, defaults to |
| timeout | integer Timeout for the operation in seconds. Optional, defaults to 60 |
{- "job_id": 0,
- "job_status": "string",
- "job_sub_status": "string",
- "start_time": "string",
- "end_time": "string",
- "pilot_timing": "string",
- "site_name": "string",
- "node": "string",
- "scheduler_id": "string",
- "pilot_id": "string",
- "batch_id": "string",
- "trans_exit_code": 0,
- "pilot_error_code": 0,
- "pilot_error_diag": "string",
- "exe_error_code": 0,
- "exe_error_diag": "string",
- "n_events": 0,
- "n_input_files": 0,
- "attempt_nr": 0,
- "cpu_consumption_time": 0,
- "cpu_consumption_unit": "string",
- "cpu_conversion_factor": 0,
- "core_count": 0,
- "mean_core_count": 0,
- "max_rss": 0,
- "max_vmem": 0,
- "max_swap": 0,
- "max_pss": 0,
- "avg_rss": 0,
- "avg_vmem": 0,
- "avg_swap": 0,
- "avg_pss": 0,
- "tot_rchar": 0,
- "tot_wchar": 0,
- "tot_rbytes": 0,
- "tot_wbytes": 0,
- "rate_rchar": 0,
- "rate_wchar": 0,
- "rate_rbytes": 0,
- "rate_wbytes": 0,
- "corrupted_files": "string",
- "cpu_architecture_level": "string",
- "grid": "string",
- "source_site": "string",
- "destination_site": "string",
- "job_metrics": "string",
- "job_output_report": "string",
- "pilot_log": "string",
- "meta_data": "string",
- "stdout": "string",
- "timeout": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Bulk method to update the details for jobs, store the metadata and excerpt from the pilot log. Internally, this method loops over
the jobs and calls update_job for each job. Requires a secure connection and production role.
| job_list required | Array of objects list of job dictionaries to update. The mandatory and optional keys for each job dictionary are the same as the arguments for |
| harvester_id | string Harvester ID. Optional, defaults to |
{- "job_list": [
- { }
], - "harvester_id": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Updates the status of a worker with the information seen by the pilot. Requires a secure connection and production role.
| worker_id required | string The worker ID. |
| harvester_id required | string The harvester ID. |
| status required | string The status of the worker. Must be either 'started' or 'finished'. |
| timeout | integer The timeout value. Defaults to 60. |
| node_id | string The node ID. Defaults to None. |
{- "worker_id": "string",
- "harvester_id": "string",
- "status": "string",
- "timeout": 0,
- "node_id": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Updates a worker node in the worker node map. When already found, it updates the last_seen time. When not found, it adds the worker node. Requires a secure connection and production role.
| site required | string Site name (e.g. ATLAS site name, not PanDA queue). |
| host_name required | string Host name. In the case of reporting in format |
| cpu_model required | string CPU model, e.g. |
| panda_queue | string PanDA queue the worker node is associated to. Optional, defaults to |
| n_logical_cpus | integer Number of logical CPUs: n_sockets * cores_per_socket * threads_per_core.
When SMT is enabled, this is the number of threads. Otherwise it is the number of cores. Optional, defaults to |
| n_sockets | integer Number of sockets. Optional, defaults to |
| cores_per_socket | integer Number of cores per socket. Optional, defaults to |
| threads_per_core | integer Number of threads per core. When SMT is disabled, this is 1. Otherwise a number > 1. Optional, defaults to |
| cpu_architecture | string CPU architecture, e.g. |
| cpu_architecture_level | string CPU architecture level, e.g. |
| clock_speed | number Clock speed in MHz. Optional, defaults to |
| total_memory | integer Total memory in MB. Optional, defaults to |
| total_local_disk | integer Total disk space in GB. Optional, defaults to |
| timeout | integer The timeout value. Defaults to 60. |
{- "site": "string",
- "host_name": "string",
- "cpu_model": "string",
- "panda_queue": "string",
- "n_logical_cpus": 0,
- "n_sockets": 0,
- "cores_per_socket": 0,
- "threads_per_core": 0,
- "cpu_architecture": "string",
- "cpu_architecture_level": "string",
- "clock_speed": 0,
- "total_memory": 0,
- "total_local_disk": 0,
- "timeout": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Updates the GPUs associated to a worker node in the worker node map. When already found, it updates the last_seen time. Requires a secure connection and production role.
| site required | string Site name (e.g. ATLAS site name, not PanDA queue). |
| host_name required | string Host name. In the case of reporting in format |
| vendor required | string GPU vendor, e.g. |
| model required | string GPU model, e.g. |
| count required | integer Number of GPUs of this type in the worker node. |
| vram | integer VRAM memory in MB. Defaults to |
| architecture | string GPU architecture, e.g. |
| framework | string Driver framework available, e.g. |
| framework_version | string Version of the driver framework, e.g. |
| driver_version | string Version of the driver, e.g. |
| timeout | integer The timeout value. Defaults to |
{- "site": "string",
- "host_name": "string",
- "vendor": "string",
- "model": "string",
- "count": 0,
- "vram": 0,
- "architecture": "string",
- "framework": "string",
- "framework_version": "string",
- "driver_version": "string",
- "timeout": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Get the job statistics by cloud, which includes the active jobs and jobs in final states modified in the last 12 hours. You have to filter the statistics by type, which can be either "production" or "analysis". Used by panglia monitoring. Requires a secure connection.
| type | string can be "analysis" or "production". Defaults to "production" when not provided. |
{- "success": true,
- "message": "string",
- "data": { }
}Get the production job statistics by cloud and processing type, which includes the active jobs and jobs in final states modified in the last 12 hours. Used by panglia monitoring. Requires a secure connection.
{- "success": true,
- "message": "string",
- "data": { }
}Get the job statistics by computing site (PanDA queue) and resource type (SCORE, MCORE, ...). This includes the active jobs and jobs in final states modified in the specified time window (default of 12 hours). Requires a secure connection.
| time_window | integer time window in minutes for the statistics (affects only archived jobs) |
{- "success": true,
- "message": "string",
- "data": { }
}Get the worker node statistics for a site and a certain amount of days. There will be a separate entry for each day.
| site required | string ATLAS site for which the statistics should be returned |
| host | string Host for which the statistics should be returned. Leave empty for all hosts in the site. |
| key | string Key ('jobs' or 'workers') for which the statistics should be returned. Leave empty for all. |
| days | integer Number of days for which the statistics should be returned. Limits are 1 to 7. |
{- "success": true,
- "message": "string",
- "data": { }
}Get the worker node statistics for a PanDA queue and a certain amount of days. There will be a separate entry for each day.
| panda_queue required | string PanDA queue for which the statistics should be returned |
| host | string Host for which the statistics should be returned. Leave empty for all hosts in the queue. |
| key | string Key ('jobs' or 'workers') for which the statistics should be returned. Leave empty for all. |
| days | integer Number of days for which the statistics should be returned. Limits are 1 to 7. |
{- "success": true,
- "message": "string",
- "data": { }
}Retry a given task e.g. in exhausted state. Requires a secure connection without a production role to retry own tasks and with a production role to retry others' tasks.
| task_id required | integer JEDI Task ID |
| new_parameters | string a dictionary with the new parameters for rerunning the task. The new parameters are merged with the existing ones. The parameters are the attributes in the JediTaskSpec object (https://github.com/PanDAWMS/panda-jedi/blob/master/pandajedi/jedicore/JediTaskSpec.py). |
| no_child_retry | boolean if True, the child tasks are not retried. Defaults to False |
| discard_events | boolean if True, events will be discarded. Defaults to False |
| disable_staging_mode | boolean if True, the task skips staging state and directly goes to subsequent state. Defaults to False |
| keep_gshare_priority | boolean if True, the task keeps current gshare and priority. Defaults to False |
| ignore_hard_exhausted | boolean if True, the task ignores the limits for hard exhausted state and can be retried even if it is very faulty. Defaults to False |
{- "task_id": 0,
- "new_parameters": "string",
- "no_child_retry": true,
- "discard_events": true,
- "disable_staging_mode": true,
- "keep_gshare_priority": true,
- "ignore_hard_exhausted": true
}{- "success": true,
- "message": "string",
- "data": { }
}Resume a given task. This transitions a paused or throttled task back to its previous active state. Resume can also be used to kick a task in staging state to the next state. Requires a secure connection and production role.
| task_id required | integer JEDI Task ID |
{- "task_id": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Release a given task by skipping iDDS for staging. Requires a secure connection and production role.
| task_id required | integer JEDI Task ID |
{- "task_id": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Reassign a given task to a site, nucleus or cloud - depending on the parameters. Requires a secure connection.
| task_id required | integer JEDI Task ID |
| site | string site name |
| cloud | string cloud name |
| nucleus | string nucleus name |
| mode | string
|
{- "task_id": 0,
- "site": "string",
- "cloud": "string",
- "nucleus": "string",
- "mode": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Pause a given task. Requires a secure connection and production role.
| task_id required | integer JEDI Task ID |
{- "task_id": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Kill a given task. Requires a secure connection.
| task_id required | integer JEDI Task ID |
| broadcast | boolean broadcast kill command to pilots to kill the jobs |
{- "task_id": 0,
- "broadcast": true
}{- "success": true,
- "message": "string",
- "data": { }
}Kills all unfinished jobs in a task. Requires a secure connection.
| task_id required | integer JEDI task ID |
| code | integer The kill code. Defaults to None.
|
| use_email_as_id | boolean Use the email as ID. Defaults to False. |
{- "task_id": 0,
- "code": 0,
- "use_email_as_id": true
}{- "success": true,
- "message": "string",
- "data": { }
}Finish a given task. Requires a secure connection.
| task_id required | integer JEDI Task ID |
| soft | boolean soft finish |
| broadcast | boolean broadcast finish command to pilots |
{- "task_id": 0,
- "soft": true,
- "broadcast": true
}{- "success": true,
- "message": "string",
- "data": { }
}Reactivate a given task, i.e. recycle a finished/done task. A reactivated task will generate new jobs and then go to done/finished. Requires a secure connection and production role.
| task_id required | integer JEDI Task ID |
| keep_attempt_nr | boolean keep the original attempt number |
| trigger_job_generation | boolean trigger the job generation |
{- "task_id": 0,
- "keep_attempt_nr": true,
- "trigger_job_generation": true
}{- "success": true,
- "message": "string",
- "data": { }
}Avalanche a given task. This triggers the avalanche for tasks in scouting state or dynamically reconfigures the task to skip over the scouting state. Requires a secure connection and production role.
| task_id required | integer JEDI Task ID |
{- "task_id": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Request to reload the input for a given task. Requires a secure connection and production role.
| task_id required | integer JEDI Task ID |
| ignore_hard_exhausted | boolean ignore the limits for hard exhausted |
{- "task_id": 0,
- "ignore_hard_exhausted": true
}{- "success": true,
- "message": "string",
- "data": { }
}Enables the Jumbo jobs for a given task ID. Requires a secure connection and production role.
| task_id required | integer JEDI task ID |
| jumbo_jobs_total required | integer Total number of jumbo jobs |
| jumbo_jobs_per_site required | integer Number of jumbo jobs per site. Defaults to |
{- "task_id": 0,
- "jumbo_jobs_total": 0,
- "jumbo_jobs_per_site": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Gets a map of the jumbo-job-enabled tasks to their datasets, filtering by the last modification time (now - from_offset to now - to_offset). Requires a secure connection.
| from_offset required | integer
|
| to_offset | integer
|
{- "success": true,
- "message": "string",
- "data": { }
}Enable job cloning for a given task. Requires secure connection and production role.
| jedi_task_id required | integer JEDI Task ID |
| mode | string mode of operation, runonce or storeonce |
| multiplicity | integer number of clones to be created for each target |
| num_sites | integer number of sites to be used for each target |
{- "jedi_task_id": 0,
- "mode": "string",
- "multiplicity": 0,
- "num_sites": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Disable job cloning for a given task. Requires secure connection and production role.
| jedi_task_id required | integer JEDI Task ID |
{- "jedi_task_id": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Increase possible task attempts. Requires secure connection and production role.
| task_id required | integer JEDI Task ID |
| increase required | integer number of attempts to increase |
{- "task_id": 0,
- "increase": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Get the details of a given task. Requires secure connection.
| task_id required | integer JEDI Task ID |
| include_parameters | boolean flag to include task parameter information (Previously fullFlag) |
| include_status | boolean flag to include status information (Previously withTaskInfo) |
{- "success": true,
- "message": "string",
- "data": { }
}Change a task attribute within the list of valid attributes ("ramCount", "wallTime", "cpuTime", "coreCount"). Requires a secure connection and production role.
| task_id required | integer JEDI task ID |
| attribute_name required | string attribute to change |
| value required | integer value to set to the attribute |
{- "task_id": 0,
- "attribute_name": "string",
- "value": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Change the modification time for a task to now() + hour_offset. Requires a secure connection and production role.
| task_id required | integer JEDI task ID |
| hour_offset required | integer number of hours to add to the current time. Use a negative value (e.g. -12) to trigger task brokerage. |
{- "task_id": 0,
- "hour_offset": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Change the priority of a given task. Requires a secure connection and production role.
| task_id required | integer JEDI task ID |
| priority required | integer new priority for the task |
{- "task_id": 0,
- "priority": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Change the split rule for a task by modifying or adding an attribute_name=value pair. Requires a secure connection and production role.
| task_id required | integer JEDI task ID |
| attribute_name required | string split rule attribute to change. The allowed attributes are defined in |
| value required | string value to set to the attribute |
{- "task_id": 0,
- "attribute_name": "string",
- "value": "string"
}{- "success": true,
- "message": "string",
- "data": { }
}Get the tasks with modificationtime > since. Requires a secure connection.
| since required | string time in the format |
| dn | string user DN |
| full | boolean flag to include full task information. If |
| min_task_id | integer minimum task ID |
| prod_source_label | string task type (e.g. |
{- "success": true,
- "message": "string",
- "data": { }
}Fetches task IDs for tasks modified since since (max 90-day window), applies optional
field filters, and returns full detail (all JediTaskSpec fields + jobParamsTemplate +
taskParams + input-file progress) for each matching task. The request is always scoped to the
authenticated user (DN from the request certificate) unless userName is explicity specified in
the filters.
When since is omitted the time-window cap is removed entirely, so matching tasks are
returned regardless of age. This is useful for by-ID / by-reqID lookups (e.g.
filters={"jediTaskID": <id>} or {"reqID": <id>}) of tasks of any age. Because the
request always adds userName to the criteria, the criteria is never empty, so omitting
since is safe.
Filters are split server-side: plain-value patterns (no regex metacharacters) become SQL
equality conditions pushed to the DB; patterns with metacharacters are applied in Python via
re.search on the full task dict returned by get_task_details_json.
| since | string time in the format |
| filters | string JSON-encoded dict of {field: pattern} pairs.
Plain values (no regex metacharacters) become SQL equality conditions.
Regex patterns (containing |
| n_tasks | integer maximum number of task IDs to retrieve (default 500) |
{- "success": true,
- "message": "string",
- "data": { }
}Get the files in the datasets associated to a given task. You can filter passing a list of dataset types. The return format is:
[
{
"dataset": {
"name": dataset_name,
"id": dataset_id
},
"files": [
{
"lfn": lfn,
"scope": file_scope,
"id": file_id,
"status": status
},
...
]
},
...
]
Requires a secure connection.
| task_id required | integer JEDI task ID |
| dataset_types | string list of dataset types, defaults to |
| dataset_only | boolean if True, only return dataset information without files, defaults to False |
{- "success": true,
- "message": "string",
- "data": { }
}Insert the task parameters to register a task. Requires a secure connection.
| task_parameters required | string Dictionary with all the required task parameters. The parameters are the attributes in the JediTaskSpec object (https://github.com/PanDAWMS/panda-jedi/blob/master/pandajedi/jedicore/JediTaskSpec.py). |
| parent_tid | integer Parent task ID |
{- "task_parameters": "string",
- "parent_tid": 0
}{- "success": true,
- "message": "string",
- "data": { }
}Get all task fields together with jobParamsTemplate and taskParams for a given task. The record is read without locking. Requires a secure connection.
| task_id required | integer JEDI task ID |
{- "success": true,
- "message": "string",
- "data": { }
}Resolve the parent task from a given child task and return only the parent detailed information. Requires a secure connection.
| task_id required | integer child JEDI task ID |
{- "success": true,
- "message": "string",
- "data": { }
}Resolves all PanDA job IDs associated with a JEDI task, retrieves their job
descriptions including archive lookup, and returns them. Optionally filters
to only unsuccessful jobs (status failed, cancelled, or closed).
Requires a secure connection.
| task_id required | integer JEDI task ID. |
| unsuccessful_only required | boolean When True, return only failed, cancelled, or closed jobs. Defaults to False. |
{- "success": true,
- "message": "string",
- "data": { }
}