Object Glossary =============== Error ----- .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``error`` - string - * - ``reason`` - string - * - ``message`` - string - FreeFormObject -------------- Open-ended JSON object (keys and values unrestricted). Used wherever the shape is owned by an external system or the requestor. RealOrSimulatedEvent -------------------- Event-type classification. `real*` values map to real events; `sim*` to simulation. LogUrlLink ---------- A `{url}` wrapper pointing at a log endpoint. The URL is nullable while the log source is unavailable. .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``url`` - ['string', 'null'] - DataSize -------- Human-friendly size string (e.g. `'1GB'`, `'512MB'`) parseable by `humanfriendly.parse_size`, or raw integer bytes. ManifestProjection ------------------ Fields to include in the returned manifest. Either `"*"` (all allowed fields) or an explicit array of field names. Omit the field entirely for the default (all fields, minus the disallowed ones on /scans/find). NOTE: under the legacy arghandler implementation, array values were silently broken (stringified via `type=str`); the OpenAPI-validated implementation is expected to accept both forms and normalize to a set server-side before the disallowed-fields check and `dict_projection`. RequestClusters --------------- Either a dict `{cluster_location: n_workers}` OR a list of `[cluster_location, n_workers]` 2-tuples. Use the list form to request the same cluster more than once. ScannerServerEnvFromUser ------------------------ User-provided env-vars injected into the scanner server k8s job. Scalar values only. Limits are intentionally looser than the classifier input shape because env-var values (URLs, PATHs, tokens, etc.) routinely exceed 25 chars. Manifest -------- The central scan data object (represents the `Manifest` dataclass from `schema.py`). All deeply nested sub-shapes (progress, event_metadata, classifiers, processing stats) live inline here; other schemas `$ref` into them via JSON pointer. .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``scan_id`` - string - Unique scan identifier. * - ``timestamp`` - number - * - ``is_deleted`` - boolean - * - ``scanner_server_args`` - string - CLI args for the scanner server k8s job (sensitive values are obfuscated by `obfuscate_cl_args`). * - ``ewms_workflow_id`` - ['string', 'null'] - EWMS workflow id. The sentinel `not-yet-requested` means SkyDriver has not yet sent the workflow request to EWMS (see `has_skydriver_requested_ewms_workflow()`). * - ``ewms_address`` - ['string', 'null'] - EWMS address used to differentiate EWMS instances. * - ``ewms_task`` - - DEPRECATED -- use `ewms_workflow_id`. Was used in SkyDriver 1.x for local k8s starter/stopper. * - ``priority`` - integer - HTCondor-style job priority. * - ``classifiers`` - object - Classifiers as stored on the manifest: scalar values or lists of scalars. (Compare with the stricter input shape used in POST /scan, which disallows lists and caps strings at 25 chars.) * - > *(any key)* - - * - ``i3_event_id`` - string - ID into the i3_event collection. * - ``event_i3live_json_dict`` - - DEPRECATED -- use `i3_event_id`. * - ``event_i3live_json_dict__hash`` - ['string', 'null'] - DEPRECATED. * - ``event_metadata`` - - Encapsulates the identity of an event (nullable). * - ``scan_metadata`` - - Open-ended metadata set by the scanner (nullable). * - ``progress`` - - Houses all the progress for a scan, updated throughout scanning (nullable). * - ``replaced_by_scan_id`` - ['string', 'null'] - If set, this scan has been replaced -- used by REST redirects. * - ``last_updated`` - number - Result ------ Physics results for a scan (represents the `Result` dataclass). Shares `scan_id` with Manifest. .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``scan_id`` - object - See `Manifest`_ (``scan_id`` field). * - ``skyscan_result`` - ``FreeFormObject`` - Physics result payload; keys/values are open to requestor. See `FreeFormObject`_. * - ``is_final`` - boolean - ScanBacklogEntry ---------------- An entry for the scan backlog used for rate-limiting (represents the `ScanBacklogEntry` dataclass). Shares `scan_id` and `priority` with Manifest. .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``scan_id`` - object - See `Manifest`_ (``scan_id`` field). * - ``timestamp`` - number - Timestamp when the entry was added to the backlog (distinct from `Manifest.timestamp`). * - ``pickled_k8s_job`` - ['string', 'null'] - DEPRECATED -- replaced by SkyScanK8sJob in db. * - ``priority`` - object - See `Manifest`_ (``priority`` field). * - ``pending_timestamp`` - number - * - ``next_attempt`` - integer - ScanRequestObj -------------- Persisted scan-request object (the input used to start a scan). Returned by GET /scan-request/{scan_id}. Not a dataclass in Python; this schema is used by DB-validation tooling. Fields shared with Manifest `$ref` into Manifest. .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``scan_id`` - object - See `Manifest`_ (``scan_id`` field). * - ``rescan_ids`` - array of object - See `Manifest`_ (``scan_id`` field). * - ``docker_tag`` - string - * - ``scanner_server_memory_bytes`` - ``DataSize`` - See `DataSize`_. * - ``reco_algo`` - string - * - ``nsides`` - ``FreeFormObject`` - See `FreeFormObject`_. * - ``real_or_simulated_event`` - ``RealOrSimulatedEvent`` - See `RealOrSimulatedEvent`_. * - ``predictive_scanning_threshold`` - object - See `Manifest`_ (``predictive_scanning_threshold`` field). * - ``classifiers`` - object - See `Manifest`_ (``classifiers`` field). * - ``request_clusters`` - ``RequestClusters`` - See `RequestClusters`_. * - ``worker_memory_bytes`` - ``DataSize`` - See `DataSize`_. * - ``worker_disk_bytes`` - ``DataSize`` - See `DataSize`_. * - ``max_pixel_reco_time`` - integer - * - ``priority`` - object - See `Manifest`_ (``priority`` field). * - ``debug_mode`` - array of string(s) - DebugMode values (as strings -- the Python enum's `.value`). * - ``i3_event_id`` - object - See `Manifest`_ (``i3_event_id`` field). * - ``scanner_server_env_from_user`` - ``ScannerServerEnvFromUser`` - See `ScannerServerEnvFromUser`_. SkyscanK8sJob ------------- .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``scan_id`` - object - See `Manifest`_ (``scan_id`` field). * - ``skyscan_k8s_job_dict`` - object - Raw Kubernetes job manifest/dict for the skyscan job. * - > *(any key)* - - * - ``k8s_started_ts`` - ['number', 'null'] - Unix timestamp (float) when the K8s job started, or null if not yet started. I3Event ------- .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``i3_event_id`` - object - See `Manifest`_ (``i3_event_id`` field). * - ``json_dict`` - ``FreeFormObject`` - See `FreeFormObject`_. ManifestAndResultResponse ------------------------- Common envelope used by GET and DELETE on `/scan/{scan_id}`: the manifest plus (optionally) the persisted result. .. list-table:: :header-rows: 1 :widths: 35 15 50 * - Field - Type - Description * - ``manifest`` - ``Manifest`` - See `Manifest`_. * - ``result`` - -